学习MySQL时的随手笔记及代码笔记,学习课程来源https://www.bilibili.com/video/av49181542?p=38
第一课
DQL : data query languge 数据查询语言
DML: 增删改查语言
DDL: 数据定义语言
TCL: 事务控制语言
DQL
1.基础查询
select 查询列表 from 表名;
查询的列表可以是:表中的字段、常量、表达式、函数
查询的结果时一个虚拟的表格
#1.查询表中的单个字段
SELECT last_name from employees;
#2.查询表中的多个字段
select last_name,salary,email from employees;
#3.查询表中的所有字段
select * from employees;
#4.查询常量至
select 110;
select ‘li’;
#5.查询表达式
selec 100%98;
#6.查询函数
select version();
#7.起别名
select 100%98 as 结果;
select last_name as 姓,first_name as 名 from employees; ---as可省略
#8.去重
distinct
select distinct departme_id from employees;
#9.+号作用 -----mysql的+仅仅用于运算。
select 100+90; ----加法运算
select ‘100’+90; —系统会试图将字符型的100转换为数值型 进行计算,该语句还是加法运算。
select ‘li’+90; --该语句的字符型无法转换为数值型,系统会将其强制置为0
select null + 90; —有一方为null时,结果必为null
mysql中想将两个列表拼接 使用 concat函数
select concat('a','b','c') as 结果;
select concat(first_name,last_name) as 姓名 from employees;
**特殊情况:ifnull函数**
如果某个列表的值为null 将会导致拼接后的值强制置为null,此时需使用ifnull函数来进行判断 ifnull(列表名,若为null则输出什么)。 如commission_pct列表中有部分内容为Null,在为null时输出0,则可写为 select ifnull(commission_pct,0) as 奖金率,commission_pct from employees;
2.条件查询
语法:select 查询列表 form 表名 where 筛选条件;
分类:1.按条件表达式筛选
条件运算符:< > = != <> <= >=
2.按逻辑表达式筛选
逻辑运算符:&& || ! and or not
3.模糊查询
like between and in is null
**#1.按条件表达式筛选:**
查询工资大于12000的员工:
select * from employees where salary>12000;
查询部门编号不等于90号的员工名和部门编号
select last_name department_id from employees where department_id <> 90;
**#2.按逻辑表达式筛选:**
查询工资在10000到20000之间的员工名,工资及奖金
select last_name salary commission_pct from employees whert salary>=10000 and salary<=20000;
**#3.模糊查询**
% 通配符 任意多个字符
_ 通配符 任意单个字符
**like**
查询包含a的员工信息
select last_name from employees where last_name like'%a%' ;
查询第三个为n第五个为l的员工
select last_name from employees where last_name like '__n_l%';
***特殊情况***,查询第二个字符为_的员工 。此时需加转义字符。1.加转义字符\ 2.使用escpe函数自定义一个转义字符
select last_name from employees where last_name like '_\_%'
select last_name from employees where last_name like '_$_%' escape '$';
**between and** 在****之间 注意两值的顺序 between相当于>= and相当于<=
# 查询编号在100-200之间的员工信息
select * from employees where enployee_id between 100 and 200;
若将100和200调换顺序 则相当与查找 >=200 <=100的值。
**in** 查询某字段的值是否属于in列表中的某一项 in列表中的值必须统一
select last_name,job_id from employees where job_id in('it_prot','ad_vp','ad_pres');
**is null is not null** is不可用于判断其他数值, 如is 1200
查询没有奖金的员工名和奖金率
select last_name,commission_pct from employees where commission_pct is null;
**<=> 安全等于**
select last_name,commission_pct from employees where commission_pct <=> null;
select last_name,commission_pct from employees where commission_pct <=> 12000;
<=>不仅可以判断null,还可以用来判断普通类型的值,is 仅可用来判断是否为null 即is null 或 is not null