MySQL学习之DQL(查询语言之1,2,3)
一、DQL(查询)
1.基础查询
# 进阶1:基础查询 /* select 查询内容(可以读个) from 表名; 特点: 1.查询内容:可以是表中字段、常量值、表达式、函数 2.查询结果是一个虚拟表格 */ #3.查询表中的单个字段 USE myemployees; SELECT last_name FROM employees; #查询表中的多个字段 SELECT last_name,email FROM employees; #查询表中的所有字段 ##方式一 SELECT `first_name`,`employee_id`,`last_name`,`email`,`phone_number` #顺序可按照名字排列改变 FROM employees; ##方式二 SELECT * FROM employees; # 顺序和原表一致 #特殊情况,字段与关键字一致时,用[’‘]区分 SELECT 'name' FROM employees, #4.查询表中常量值;不区分字符与字符串 SELECT 100; SELECT 'jion'; #5.查询表达式 SELECT 100*99; SELECT 100%99; #6.查询函数(执行version()函数,并且返回结果) SELECT VERSION(); # 7.为字段起别名 /* 便于理解 如果要查询的字段有重复的情况,使用别名可以区分开来 */ #方式一 使用as SELECT 100%98 AS 结果; SELECT last_name AS 姓, first_name AS 名 FROM employees; #方式二 使用空格 SELECT last_name 姓, first_name 名 FROM employees; #案例 特殊情况,查询salary,输出结果为out put(包含关键字或空格); SELECT salary AS "out put" FROM employees; #8.去重 #案例:查询员工表中涉及所有部门 distinct SELECT DISTINCT department_id FROM employees; #9. +号作用 # 案例:查询员工名与姓,连接成一个字段,并且显示为 姓名 /* mysql中的+号; 仅仅一个功能;运算符 例如: select 100+90;两个均是数值,做加法运算 select '123' +90; 其中一方为字符型,试图将字符型转换为数值型, 如果转换成功,则继续做加法运算 如果转换失败,则字符转为0,继续做加法运算 如果其中一方为null,则结果肯定为null */ SELECT last_name+first_name AS 姓名 FROM employees; #结果均为0. SELECT CONCAT("a","c","b") AS 结果; #连接字符函数 #正确方式 SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees; #显示表的结构 DESC departments; #案例,一列里面显示出表employees的全部列,各个列之间用逗号链接,列头显示为out_put SELECT CONCAT(`first_name`,',',`last_name`,',',`job_id`) AS out_put FROM employees; #补充函数,解决null存在情况,ifnull 表达式中为null,转换为想要的数值 SELECT IFNULL(commission_pct,0) AS 奖金率, commission_pct FROM employees;
2.条件查询
#进阶2:条件查询 /* 语法:select 查询列表 from 表名 where 筛选条件; 分类: 1.按照条件表达式筛选 条件表达式:>, < , = , <> OR != ,>=.<= 2.按照逻辑表达式筛选 逻辑运算符: and or not 3.模糊查询 like between and in is null */ #1.案例(条件表达式):员工工资大于一万二的方法, SELECT * FROM employees WHERE salary >12000; SELECT department_id,first_name FROM employees WHERE department_id <> 90; #2.案例(逻辑表达式):工资在1万到2万之间的员工名、工资与奖金 SELECT last_name,salary,commission_pct FROM employees WHERE salary>10000 AND salary <20000; #部门编号不在90——110之间或者工资高于15000的员工信息 SELECT * FROM employees WHERE department_id < 90 OR department_id >110 OR salary > 15000; SELECT * FROM employees WHERE NOT(department_id >= 90 AND department_id <= 110) OR salary > 15000; # 3.模糊查询 /* like 特点:一般与通配符搭配使用,通配符:% 任意多个字符,包含0个字符,[_]任意单个字符 between and 提高语句的简洁度 包含临界值 两个临界值不要调换 in 含义:判断某字段的值是否属于in列表中的某一项 特点:使用in提高语句简洁度,in列表中的值类型必须一致或兼容 is null 等号或不等于 不能用于判断null值 is null OR is bot null 进行判断 */ #案例(like):查询员工名中包含字符a的员工信息,%代表通配符,并且不区分大小写 SELECT * FROM employees WHERE last_name LIKE '%a%'; SELECT * FROM employees WHERE last_name LIKE '__n_l%'; #案例:查询员工名中第二字符为_的员工名,转译[\] SELECT * FROM employees WHERE last_name LIKE '_\_%'; #案例 (between and):员工编号在100至120之间的员工信息。 SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120 #案例(in):查询员工工种编号 时 AD_VP IT_PROG中的一个员工名和工种编号 SELECT last_name,job_id FROM myemployees #where job_id ='IT_PROG' or job_id = 'AD_VP' WHERE jog_id IN('IT_PROG' ,'AD_VP'); #案例(isnull):查询没有奖金的员工名和奖金率 SELECT last_name,commission_pct FROM myemployees WHERE commission_pct ISNULL; # is not null #安全等于 <=> 可用于判断null 也可以查询普通数值;确定:难确定不等于或者等于,可读性差
3.排序查询
# 排序查询 USE myemployees; /* SELECT * FROM employees; 语法:select 查询列表 from 表 order by 排列列表【asc|desc】 特点:asc 升序 desc 降序;默认为升序
一般放在语句最后 */ # 案例1.查询员工信息,要求工资从高到底排序 SELECT * FROM employees ORDER BY salary ASC; #案例2,查询部门编号>= 90的员工信息,按照入职时间先后排序(筛选排序) SELECT * FROM employees WHERE department_id >= 90 ORDER BY hiredate; #案例3,按照年薪高低显示员工信息和年薪,可以按照表达式排序 OR 别名 SELECT *,salary*12*(1+IFNULL(commission_pct,0)) AS 年薪 FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC; #案例4. 按照姓的字节长度显示员工的姓名与工资【按照函数排序】 SELECT LENGTH(last_name),salary FROM employees ORDER BY LENGTH(last_name); #案例5.查询员工信息,要先按照工资排序,再按照员工编号排序【多个字段排序,主要关键词+次要关键词】, SELECT * FROM employees ORDER BY salary ASC, employee_id DESC;
4.常见函数
5.分组函数
6.链接函数
7.子查询
8.分页查询
9.union联合查询
二、DML(增删改查)
三、TCL(数据转换语言)

浙公网安备 33010602011771号