04 mysql DQL语句 基础篇

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%';

参考:小猴子视频

猜你喜欢

转载自blog.csdn.net/sinat_41132860/article/details/84886099
今日推荐