查询
数据库有一门专门属于自己的语言,这门语言叫做“Structured Query Language”结构化查询语句。
SQL语句的分类
数据操纵语言(DML Data Manipulation Language)
SELECT (查询) INSERT(插入数据) UPDATE(更新数据) DELETE(删除数据)
数据定义语言( DDL Data definition Language)
CREATE ALTER DROP RENAM TRUNCATE
数据控制语言(DCL Data Control Language)
GRANT
简单查询
第一种形式
SELECT *
FROM 数据来源(可以是数据表);
”*“代表查询所有字段的意思
上面的查询语句在数据库种的执行顺序是先执行 FROM 子句再执行SELECT子句。
第二种形式
SELECT 字段名,字段名,字段名…
FROM 数据来源;
这种形式查询的内容是指定的。
SQL语句可以使用别名查询,并且数字类型的字段还可以进行四则运算。
别名查询
SELECT 字段名 AS 对应的别名,字段名 AS 对应的别名…
FROM 数据来源;
AS 可以省略
去除重复
SELECT DISTINCT 字段名,字段名…
FROM 数据来源;
注意:如果字段名有多个时,只有所有的字段都相同才会被认为时重复。
没有去除重复
去除重复之后
限定查询
限定查询的格式
SELECT *
FROM 数据来源,数据来源…
WHERE 过滤条件
执行顺序是:第一步执行FROM子句,再执行WHERE子句,最后才是SELECT。
WHERE子句是对数据进行条件判断,之后选择满足条件的数据。
关系运算符
“< ” ,“> ”
例:撒选出薪资大于2000员工信息
“=”
例:查询SMITH的信息
逻辑运算符
例:查询薪资在1500到3000 之间的员工信息
第一种方式:使用“<=”,">="和AND
第二种方式:使用BETWEEN AND ,小的数值放在AND前面大的放在AND后面
注意:以上两种方案第二种会更好,第一种会被数据库判断为两个判断条件,第二种则会被认为式一个判断条件,效率更高
例如:查询薪资大于2000,或职位是职员的员工信息
第一种方案:使用 OR
第二种方案:使用 UNION ALL
注意: UNION ALL 可以将两个查询的结果并在一起显示,但是两个查询的关系必须是OR的关系,用来替代OR,避免索引失效。
空判断
例:查询所有没有奖金的员工信息
SELECT *
FROM emp
WHERE comm IS NULL;
例:查询所有有奖金的员工信息
SELECT *
FROM emp
WHERE comm IS NOT NULL;
IN查询
例:查询出编号是7369,7782,7788的员工信息
SELECT *
FROM emp
WHERE empno IN(7369,7782,7788);
例:查询出编号不是7369,7782,7788的员工信息
SELECT *
FROM emp
WHERE empno NOT IN(7369,7782,7788);