DQL
DQL(Data Query Language):数据查询语言,用来查询数据库中的数据,不会对数据库中的数据进行改变。
select 字段名1 as 别名,字段名2 as 别名,字段名3 as 别名 FROM 表名 [WHERE –> GROUP BY –>HAVING–> ORDER BY];
[]中括号中的内容是一些过滤条件或者操作,
字段名可以使用数学表达式,
as的作用是将查询的字段或者表达式重命名,as可省略,用空格将字段名和别名隔开即可,字段名也可以使用中文字符(需用单引号引出)
简单查询:
从表中查询字段
select 字段1,字段2 from 表名;
如果要查询全部字段,使用*号表示所有字段,如下
select * from 表名;
注意:不建议使用*,因为会先将其编译成字段,然后再去查询,影响性能
as关键字 ,可以给字段起别名,用as 或者省略as 都可以
select 字段1 别名1,字段2 as 别名2,字段3*12 as 别名3 from 表名;
示例:
先创建好表,如图所示
进行简单查询示例:
-- 查询所有信息
SELECT * FROM employee;
-- 查询员工名字,工作
SELECT employeename,job FROM employee;
-- 查询员工名字,工作,年薪(月薪*12 使用别名annualsalary)
SELECT employeename,job,salary*12 AS annualsalary FROM employee;
-- 查询员工名字(使用别名ename),工作,年薪(月薪*12 使用别名annualsalary)
SELECT employeename AS ename,job,salary*12 annualsalary FROM employee;
条件查询
如需有条件地从表中选取数据,可将 where 子句添加到 select 语句中。其中where要放到from 表名 的后面,也可以运用于 SQL 的 DELETE 或者 UPDATE 命令,对于条件中字段是字符类型的,记得加引号
查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件
你可以使用 AND 或者 OR 指定一个或多个条件
where语句操作符
= 等号,检测两个值是否相等,如果相等返回true (A = B) 返回false。
<>, != 不等于,检测两个值是否相等,如果不相等返回true (A != B) 返回 true。
> 大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true (A > B) 返回false。
< 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true (A < B) 返回 true。
>= 大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true (A >= B) 返回false。
<= 小于等于号,检测左边的值是否小于于或等于右边的值, 如果左边的值小于或等于右边的值返回true (A <= B) 返回 true。
between … and … 在什么什么范围之间,包括两个端点的值
is null 选择字段值为null的数据时,可以用该表达式,还有is not null
and 表示且,可以在where后面可以添加多个限制条件
or 表示或,只要满足多项条件中的一项条件即可
and和or表达式的优先级 and优先级高于or。不确定优先级时,用小括号把你想要的优先级高的表达式括起来
in (值1,值2,...)满足括号里的一项值即可,表示选中某字段的值是括号里的值,可以采用or来替代,但是使用in会更简洁一些,同样not in表示某字段值不在括号中的数据
like 模糊查询,在数据量较大的情况下,使用like会影响性能,其中%表示通配0个或者多个字符, _表示通配一个任意字符
示例:
-- 查询工资等于3000的员工编号,姓名,工资
SELECT employeenumber,employeename,salary FROM employee WHERE salary =3000;
-- 查询工作是'SALESMAN'的员工姓名,工资,工作
SELECT employeename,salary ,job FROM employee WHERE job='SALESMAN';
-- 查询工作是薪水不等于300的员工编号,姓名,薪水
SELECT employeenumber,employeename,salary FROM employee WHERE salary !=3000;
-- 同上
SELECT employeenumber,employeename,salary FROM employee WHERE salary <>3000;
-- 使用and连接两个条件 ,查询薪水大于等于1600并且小于等于3000的员工编号,姓名,工资
SELECT employeenumber,employeename,salary FROM employee WHERE salary>=1600 AND salary<=3000;
-- 使用between and 查询工资大于等于1600且小于等于3000的员工编号,姓名,工资
SELECT employeenumber,employeename,salary FROM employee WHERE salary BETWEEN 1600 AND 3000;
-- 查询补贴comm字段为null的员工编号,姓名,工资,补贴
SELECT employeenumber,employeename,salary ,comm FROM employee WHERE comm IS NULL;
-- 查询补贴comm字段不为null的员工编号,姓名,工资,补贴
SELECT employeenumber,employeename,salary,comm FROM employee WHERE comm IS NOT NULL;
-- and连接两个或多个条件,表示并且
SELECT employeenumber ,employeename,salary,comm FROM employee WHERE salary>=2500 AND job='MANAGER';
-- or 连接两个或多个条件,满足一个即可,表示或
SELECT employeenumber ,employeename,job,comm FROM employee WHERE job='MANAGER' OR comm IS NOT NULL;
-- and 和or 的优先级,下行表示查询工资大于1600且在部门编号为20的,或者部门编号为30的,员工姓名,编号,工资
SELECT employeename,departmentnumber,salary FROM employee WHERE salary>1600 AND departmentnumber =20 OR departmentnumber =30;
-- 下行表示查询 工资大于1600 并且部门编号是20或30 的员工姓名,部门编号,薪水
SELECT employeename,departmentnumber,salary FROM employee WHERE salary>1600 AND (departmentnumber =20 OR departmentnumber =30);
-- in 查询工作是'MANAGER'或者'SALESMAN'的员工编号,姓名,工作,补贴
SELECT employeenumber ,employeename,job,comm FROM employee WHERE job IN ('MANAGER' ,'SALESMAN');
-- not in 查询工作不是'MANAGER'或者'SALESMAN'的员工编号,姓名,工作,补贴
SELECT employeenumber ,employeename,job,comm FROM employee WHERE job NOT IN ('MANAGER' ,'SALESMAN');
-- 查询薪水不是1600,也不是3000的员工编号,姓名,工作,补贴
SELECT employeenumber ,employeename,salary,comm FROM employee WHERE salary NOT IN (1600 ,3000);
-- like模糊查询 查询员工姓名中最后一个字符是'S'的员工编号,员工姓名,薪水,补贴
SELECT employeenumber ,employeename,salary,comm FROM employee WHERE employeename LIKE '%S';
-- 查询员工姓名第一个字符是'M'的员工编号,姓名,薪水,补贴
SELECT employeenumber ,employeename,salary,comm FROM employee WHERE employeename LIKE 'M%';
-- 查询员工姓名的第二个字符是'A'的员工编号,员工姓名,薪水,补贴
SELECT employeenumber ,employeename,salary,comm FROM employee WHERE employeename LIKE '_A%';
-- 查询员工姓名中有一个字符是'A'的员工编号,姓名,薪水,补贴
SELECT employeenumber ,employeename,salary,comm FROM employee WHERE employeename LIKE '%A%';
参考:小猴子视频