三、MySQL 数据库 - DQL语言 - 1
1.基础查询
1.1 基础查询的语法
SESTECT 所查询的东西(常量值,表达式,字段,函数等).
FROM 表名
1.2基础查询的特点
>通过select查询完的结果,是一个虚拟的表格,不是真实存在
>要查询的东西可以是常量值,表达式,字段,函数等等
2.条件查询
2.1条件查询的概念:
根据条件过滤原始表的数据,查询到想要的数据
2.2 条件查询的语法
SELECT 要查询的字段,表达式,常量值,函数
FROM 表名
WHERE 条件
2.3条件查询语句的分类
2.3.1 条件表达式
如:salary>1000;
>条件运算符: >,<,>=,<=,=,!=,<>
2.3.2 逻辑表达式
如: salary > 10000 && salary<20000;
>逻辑运算符
and(&&):两个条件如果同时成立,结果为true,否则为false;
or(||):两个条件只要有一个成立,结果为false;
not(!):如果条件成立,则not后为false,否则为true;
2.3.3 模糊查询
如: last_name like 'a%';
>模糊查询通配符的分类
1."%"百分号通配符:表示任何字符出现任意次数(可以是0次)
2."_" 下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.当然,也可以like"陈_",数量不限
3.like 操作符:LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较;但如果like后面没出现通配符,则在SQL执行优化时将like默认为 " = " 执行
注: 如果在使用like操作符时,后面没有使用通配符(% 或_),那么效果和是"="一致的.在SQL执行优化时查询优化器将like 默认为"=" 执行,如 执行 SELECT * FROM movies WHERE movie_name like "唐伯虎" , 只能匹配 为 movies_name = "唐伯虎"的结果,而不能匹配像"唐伯虎点秋香"或"唐伯虎之四大才子"这样的结果
>通配符的使用
1. %通配符
案例1:模糊查询 app_info 表中 appName 中 "网"字的数据
SELECT * FROM app_info WHERE appName like '%网%';
案例2:模糊查询 app_info 表中 appName 中 以"网"字结尾的数据
SELECT * FROM app_info WHERE appName like'%网';
案例3:模糊查询 app_info 表中 appName 中 以"网"字开头的数据
SELECT * FROM app_info WHERE appName like'网%';
案例4:精准匹配 app_info 表中 appName 中 "网" appName like = '网' 等同于 appName = '网'
SELECT * FROM app_info WHERE appName like'网';
SELECT * FROM app_info WHERE appName = '网';
2. _ 通配符
案例1 : 查询以"网"为结尾的,长度为三个字的数据,如"链家网"
SELECT * FROM app_info WHERE appName like'__网';// 有两个下划线
案例2: 模糊匹配含有“xx网x车xxx”的数据,如:"携程网约车客户端"
SELECT * FROM app_info WHERE appName like'__网_车%';
注意事项: 注意大小写,在使用模糊匹配时,也就是匹配文本时,MySQL默认配置是不区分大小写的.当你使用别人的MySQL数据库时,要注意是否去人大小写,是否区分大小写取决于用户对MySQL的配置方式.如果是区分大小写,那么像Test12 这样记录是不能被"test__"这样的条件匹配的. 注意尾部空格,"%test"是不能匹配"test " 这样的记录.注意NULL,%通配符可以匹配任意字符,但是不能匹配NULL ,也就是说 SELECT * FORM blog WHERE title_name like'%'是匹配不到title_name 为NULL 的记录.
3.排序查询
3.1 排序查询的语法
SELECT 要查询的字段,表达式,常量值,函数
FROM 表名
WHERE 条件
ORDER BY 排序的字段|表达式|函数|别名 [ ASC | DESC]
3.2 排序查询的特点
1.ASC 代表升序,DESC 代表降序,如果不写,默认是升序
2. ORDER BY 语句一般是放在查询语句的最后面,limit 语句除外
3. ORDER BY 语句中可以支持 单个字段,多个字段,表达式,函数,别名
3.3 排序查询的案例
案例: 按薪水的高低所有显示员工的信息
SELECT * FROM employees ORDER BY salary DESC;