常用sql语句总结(一)(查询)

常用sql语句总结(一)(查询)
数据操作语句:DML
数据定义语句:DDL
数据控制语句:DCL

(执行顺序------序号)
一、基本查询:
1、
SELECT * ----- 2
FROM 数据来源,… ----- 1; ---数据来源可以是多个表或者其他范围
或者
SELECT 字段,字段… -----可以列出想要查询的字段名
FROM 数据来源,……;

2、去重复查询(DISTINCT):
SELECT DISTINCT 字段,字段….. FROM 数据来源,…;

3、查询取别名:
SELECT 字段 AS 别名,字段 AS 别名… -----可以列出查询的字段名
FROM 数据来源,…;

二、限定查询:
4、

SELECT *  ------- 3
FROM数据来源,… -------1
WHERE 过滤条件;-------2

(1)SELECT * FROM emp WHERE sal>=1500 AND sal<=1000’;
(2)SELECT * FROM emp WHERE sal BETWEEN 1000 AND 1500;
使用BETWEEN AND 时,数字小的在数字大的前面;
使用(2)只需要执行一次判断,而(1)需要进行两次判断。

5、联合查询
SELECT * FROM emp WHERE job=’CLERK’ UNION ALL SELECT * FROM dept WHERE sal>3000;
使用UNION ALL可以把两个查询结果合并显示,但是有可能出现重复,一般用于或者(OR)并集关系,一般用于替换OR的使用,这样有利于SQL的优化,避免了索引失效而使用了全局扫描,影响性能

6、判空查询
SELECT * FROM emp WHERE comm IS NOT NULL;
SELECT * FROM emp WHERE comm IS NULL;

7、IN查询
SELECT * FROM emp WHERE empno IN(1000,1001,1002);
SELELCT * FROM emp WHERE empno NOT IN(1000,1001,1002);

三、模糊查询
8、
SELECT *--------3
FROM 数据来源---------1
WHERE 模糊查询字段 LIKE 模糊查询关键字;-------2 -----( _:表示一位字符,%:表示任意位数上的任意字符)
SELELCT * FROM emp WHERE ename LIKE ‘%A%’;

四、排序查询
SELECT *-------3
FROM 数据来源---------1
WHERE 过滤条件---------2
ORDER BY 排序字段;---------4 升序ASC|降序DESC

SELECT empno AS id FROM emp WHERE WHERE sal>100 ORDER BY id DESC;

五、多表查询(连接查询)
内连接(一定要满足条件才能显示):
(1)SELECT no,字段…---------3
FROM 数据来源A,数据来源B-----------1
WHERE A.no = B.no;---------2
消除笛卡儿积
SELECT empno,ename,deptno,dname FROM emp e,dept d WHERE e.deptno = d.deptno;

(2)SELECT no,字段….
FROM 数据来源a INNER JOIN 数据来源 b ON a.no = b.no;

SELECT empno,ename,deptno,dname FROM emp e INNER JOIN dept d ON e.deptno = d.deptno;

外连接:
左外连接:可以让左表不满足过滤条件的也显示
右外连接:可以让右表不满足过滤条件的也显示
全外连接:可以让左右表不满足过滤条件的都显示

使用(+)的方式是ORACLE特有的,mysql没有这种方式;
使用左外连接(+)在右边,右外连接(+)在左边;

左外连接:
(1)SELECT * FROM emp e,dept d WHERE e.deptno = d.deptno(+);---ORACLE特有
(2)SELECT * FROM emp e LEFT OUTER JOIN dept d ON e.deptno = d.deptno;-----ORACLE和MYSQL通用

右外连接:
(1)SELECT * FROM emp e,dept d WHERE e.deptno(+) = d.deptno;
(2)SELECT * FROM emp e RIGHT OUTER JOIN dept d ON e.deptno = d.deptno;

全外连接:
SELECT * FROM emp e FULL OUTER JOIN dept d ON e.deptno = d.deptno;

六、常用函数
COUNT(*|字段);统计查询到的数量
SUM(字段);计算该字段的数据之和
AVG(字段);计算该字段的平均数
MAX(字段);计算出该字段数据中最大的
MIN();计算出该字段数据中最小的
SYSDATE;ORACLE中当前时间
NOW();MYSQL中当前时间
不能在WHERE子语句中使用统计函数

七、分组统计查询
SELECT 字段,字段,分组字段,…..---------4
FROM 数据来源a,数据来源b….--------1
WHERE 过滤条件----------2
GROUP BY 分组字段--------3
ORDER BY 排序字段 ASC|DESC---------5
如果需要分组,那么必须把分组字段给查询出来

八、HAVING过滤查询
不能在WHERE子语句中使用统计函数,如果需要在过滤条件中使用统计函数,那么可以使用HAVING;
SELECT 字段,分组字段,….--------5
FROM 数据来源a,数据来源b….. ------------1
WHERE 过滤条件-----------2
GROUP BY 分组字段-----------3
HAVING 对统计函数进行判断----------4
ORDER BY 排序字段 ASC|DESC;-------6
SELELCT empno,ename,job,SUM(sal) FROM emp WHERE job<>’班长’
GROUP BY job HAVING SUM(sal)>500 ORDER BY empno;

WHERE子句和HAVING子句的区别:
1、 执行顺序不同,WHERE子句进行过滤是在GROUP BY前执行的,HAVING子句进行过滤是在GROUP BY后执行的
2、 WHERE不能对统计函数进行过滤操作,而HAVING能对统计函数进行统计

九、FROM子查询
SELECT job,avgsql FROM (SELECT job,AVG(sal) AS avgsal FROM emp GROUP BY job)temp WHERE temp.avgsql > 2000;
十、EXISTS子查询
例如:查询出有关部门的雇员
SELECT * FROM emp e EXISTS ( SELECT * FROM dept d WHERE e.deptno = d.deptno );

例如:查询出没有部门的雇员

SELECT * FROM emp e NOT EXISTS( SELECT * FROM dept d WHERE e.deptno = d.deptno );

十一、分页查询
分页查询需要用到伪列ROWNUM(行号),ROWNUM是在查询过程中动态生成的一个列,该列必须从1开始,它不能直接存值到数据表,很一个字段,但不是一个数据表的字段。
ORACLE分页:
cp//当前页数
ls//每页有多少条数据

M=(cp-1)ls+1;//到M条数据结束查询
N=cp
ls;//从N条数据开始查询

SELECT * FROM (SELECT ROWNUM rn,* FROM emp WHERE rn<=M )temp WHERE temp.rn>=N;

Mysql分页:
Cp:当前页数
Ls:每页几条数据

M=(cp-1)*ls//到M条数据结束查询
N=ls//从N条数据开始查询

SELECT 字段,分组字段,…. --------5
FROM 数据来源a,数据来源b…..  ------------1
WHERE 过滤条件   -----------2
GROUP BY 分组字段  -----------3
HAVING 对统计函数进行判断 ----------4
ORDER BY 排序字段 ASC|DESC; -------6
LIMIT M,N;

原文地址:https://www.cnblogs.com/zhangsonglin/p/10780277.html

时间: 2024-10-08 00:32:08

常用sql语句总结(一)(查询)的相关文章

2.MySQL用户管理,常用SQL语句,MySQL数据库备份与恢复

[toc] MySQL用户管理,重用SQL语句,MySQL数据库备份与恢复 一.MySQL用户管理 1.创建一个普通用户并授权 首先启动mysql,然后进入 [[email protected] ~]# /etc/init.d/mysqld start Starting MySQL... SUCCESS! [[email protected] ~]# mysql -uroot -pxavilinux Warning: Using a password on the command line in

Ubuntu 下安装sqlite3 及常用SQL 语句

安装sqlite3命令如下: 1 sudo apt-get install sqlite3 创建或者打开已有的数据库文件: 1 sqlite3 test.db 进入数据库后,可以进行以下常用SQL语句操作: CREATE TABLE ONT_USER_TABLE( ONT_USER_NAME text PRIMARY KEY, ONT_USER_PWD text NOT NULL, ONT_CREATE_TIME text ); INSERT INTO ONT_USER_TABLE values

常用sql语句及案例

目录 1)基本 2)数学函数 3)rownum 4)分页 5)时间处理 6)字符函数 7)to_number 8)聚合函数 9)学生选课 10)图书馆借阅 基本 --新建表: create table table1( id varchar(300) primary key, name varchar(200) not null); --插入数据 insert into table1 (id,name) values ('aa','bb'); --更新数据 update table1 set id

Oracle数据库常用Sql语句大全

一,数据控制语句 (DML) 部分 1.INSERT  (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, --) VALUES ( 值1, 值2, --); INSERT INTO 表名(字段名1, 字段名2, --)  SELECT (字段名1, 字段名2, --) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: 'GOOD DAY' 如果字段值里包含单引号' 需要进行字符串转换, 我们把它替换成两个单引号''. 字符串类型的字段值超过

oracle常用SQL语句(汇总版)

Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……); INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名; 字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’ 如果字段值里包含单引号’ 需要

mysql基础(二) 常用SQL语句

SQL语句类型:     DDL:数据库定义语言 create,drop,alter     DML:数据操作语言 insert,delete,update,select     DCL:数据控制语言 grant,revoke 常用SQL语句:     CREATE DATABASE #创建数据库 CREATE TABLE         #创建表 CREATE TABLE table_name(字段名,字段数据类型,约束条件) #创建表 CREATE INDEX            #创建索

学生表 课程表 成绩表 教师表常用SQL语句

学生表 课程表 成绩表 教师表 50个常用sql语句 建表 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 ---- If database exists the same name datatable deletes it. IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHE

经典MSSQL语句大全和常用SQL语句命令的作用

下列语句部分是Mssql语句,不可以在access中使用. SQL分类: DDL类型包括数据库.表的创建,修改,删除,声明—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML类型包括数据表中记录的查询,删除,修改,插入—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL类型包括数据库用户赋权,废除用户访问权限, 提交当前事务,中止当前事务—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说

Oracle 数据库常用sql语句及知识

<Oracle 数据库> 一.常用sql语句: 1.连接系统管理员账号:conn system/system(安装时口令); 2.创建新账号:create user Leo(账号名) identified by Leo(密码): 3.给新账号授权:grant connect,resource to Leo; 4.从某个账户收权:revoke resource from Leo; 5.连接新账号:conn Leo/Leo; 6.显示当前客户:show user; 7.查看表结构:desc s_e