注释符
单行注释:#、–
多行注释:/* 123456*/
基础查询
select:查看、选择、显示
语法:
select 查询的属性
①常量:SELECT 100; SELECT ‘john’;
②表达式:SELECT 98*23;
③函数:SELECT LENGTH(‘john’); SELECT VERSION();
④字段:select 字段 from 表; (字段可以查询多个,中间用逗号隔开)
起别名
方式一:
SELECT 字段 AS 别名,字段 AS 别名 FROM 表名;
方式二:
SELECT 字段 别名,字段 别名 FROM 表名;
(AS可以省略)
去重
语法:SELECT DISTINCT 字段 FROM 表名;
条件查询
概念:根据指定的条件过滤出数据
语法:select 字段 from 表名 where 条件;
分类:
1、按条件表达式查询
条件运算符:< 、> 、 <= 、 >= 、 = 、 != 、<> 、<=>安全等于,用于判断是否为null
2、按逻辑表达式查询
逻辑运算符:
and:两个条件都为true,结果为true,反之为false
or: 两个条件只要有一个为true,结果为true,反之为false
not:如果连接的条件本身为false,结果为true,反之为false
//优先级
not > and > or
模糊查询
1.like
一般搭配着通配符使用,用作字符型的判断
通配符:
% :任意多个字符
_ :任意单个字符
2.between and
特点:在…之间
①等价于 使用 字段>=值1 and 字段<=值2
②两个临界值是包含的 [1,10]
③两个临界值不能颠倒顺序
3.in
特点:判断某个字段的值是否在某个列表内
in(值1,值2,…)
等价于 or
4.is null/is not null
5.转移符\\ (斜线 \\ -> window 斜线 |/ ->Linux 斜线// 反斜线 )
ESCAPE ’′;这句话是让\’; 这句话是 让′;这句话是让 拥有转义字符的形式和功能
排序查询
语法:
select 字段|表达式|常量 from 表【where 条件】order by 排序的字段;
1.升序 asc
降序 desc
默认是 升序asc
2.可以按表达式、函数、别名、多个字段进行排序
3.一般来讲order by放到查询的语句的最后,在不使用分页的情况下
一、按单个字段进行排序
SELECT * FROM 表名 ORDER BY 字段 ;
二、按多个字段进行排序
SELECT * FROM 表名 ORDER BY 字段,字段;
三、按函数排序
#案例:按姓名中的字节长度大小降序
SELECT last_name,LENGTH(last_name)
FROM employees
ORDER BY LENGTH(last_name) DESC;
(字段可以用别名表示)
分组查询
语法:
select 分组函数 别名,分组后的字段 from 表
【where 分组前筛选】
【group by 分组的字段】
【having 分组后筛选】
【order by 排序的字段】
从上到下依次顺序,不能颠倒顺序
分组查询的特点:
1、按多个字段分组,字段间用逗号隔开,没有顺序要求
2、可以和分组函数一起查询的字段,只能是分组后的字段,不能是任意字段
3、分组筛选
针对的表 位置 使用的关键字
分组前筛选 原始表 group by的前面 where
分组后筛选 分组后的结果集 group by的后面 having
顺序:where——group by——having
4、having和group by支持别名
连接查询
概念:查询的字段来自于多个表
语法:
select 字段1,字段2 from 表1,表2【where 连接条件】
笛卡尔乘积:
产生原因:没有加连接条件,导致结果为 表1 的行数表2 的行数
解决方法:添加上有效的’myemployees’
分类:
一、传统模式的多表连接
等值连接(where)——非等值连接
二、sql99推出的标准,使用join关键字实现连接
内连接——外连接
三、自连接
传统模式的多表连接(等值连接)
特点有
①表的顺序没有要求
②n表连接,至少需要n-1个连接条件
③一般需要为表起别名,这样可以提高语句简洁度,并且防止字段有歧义
④可以添加分组、排序、筛选,一起混合使用
语句:
SELECT 别名.字段,别名.字段 FROM 表1 别名,表2 别名
WHERE 连接条件