1.0 查询
1.1 查询所有字段
select * from 表名
1.2 查询指定的字段
select 字段名1 as 别名,字段2 别名2……
注意点:
关于起别名的问题,as可以写也可以省略
1.3 去重操作
distinct 关键字,去重操作
1.4 条件筛选
select 指定字段 from 表名 where 条件
1.5 排序
select * from 表名 order by 字段1 desc|asc,字段2 desc|asc
asc 升序
desc 降序
1.6 分页
select 字段 from 表名 limit 位置,个数(从那一段开始取多少条数据)
复制代码
1.7 聚合函数
count 统计个数
sum 进行求和
AVG 平均值
max 最大值
min 最小值
1.8 分组
– group by
语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
– having
是分组数据进行过滤,可以使用分组j聚合函数。where是对查询数据进行过滤,不能使用分组聚合函数。
分组语句顺序
1、select (用来指定查询哪些列)
...
2、from (用来指定查询哪张表)
...
where (用来指定过滤条件,针对原表,那么条件中的列名只能是是原表的列名,不可以是别名或者使用聚合函数。)
...
group by(用来对结果集进行分组,条件中的列可以使用原名,也可以使用别名)
...
having (用来指定对分组后的数据进行再次过滤的条件)
...
order by(对结果集中某一列进行排序,默认降序。有 asc 升序,desc 降序两种选择)
...
1.8.1 规则
select 分组依据(分组字段名),group_concate(需要展示的字段名1,字段2......) from 表名 group by 字段名
复制代码
1.8.2 where haning区分
- where 在原始数据上就进行条件筛选
- having 分组之后的条件筛选
2.0 内连接
- 内连接基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,而内连接则不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。
SELECT * FROM 表1 INNER JOIN 表2 ON 表的链接条件 WHERE 初始筛选条件
例子:查找品牌以及品牌对应的商品
SELECT * FROM tp_brand INNER JOIN tp_goods ON tp_brand.id=tp_goods.brand_id 内连接
SELECT * FROM tp_brand LEFT JOIN tp_goods ON tp_brand.id=tp_goods.brand_id 以左表位主表
SELECT * FROM tp_brand RIGHT JOIN tp_goods ON tp_brand.id=tp_goods.brand_id 以右表为主表
3.0 数据库字符串操作
substr 切割字符串,从1开始查找
concat 拼接字符串
length 字符串长度
insret 替换 参数是旧字符串(第一个数字指从左往右数替换开始的位置,第二个数字指被替换的字符串长度)
trim() 两边去空格
ltrim() 从左边去空格 left
rtrim() 从右边去空格 right
replace 替换
例子:
SELECT LENGTH(first_name) FROM employees ORDER BY first_name SUBSTR(fiirst_name,0,1);
SELECT SUBSTR('abc123',1,1);
SELECT CONCAT('aas','123');
SELECT LENGTH('qweetr2');
SELECT INSERT('asd',1,1,'age');
SELECT INSERT('asd',1,2,'age');
SELECT INSERT('asd',1,20,'age');从1开始替换20个
SELECT INSERT('asd',1,0,'age');从1开始替换0个
SELECT TRIM()
SELECT LTRIM()从左边去空格
SELECT RTRI
else 输出值
end
M()从右边去空格
SELECT REPLACE('asd123','1','qwe')
4.0 case-when语句
case 字段
when 表达式1 then 输出值1
when 表达式2 then 输出值2
......
例子:
SQL写法
SELECT last_name,job_id AS job,
CASE job_id
WHEN 'AD-PRES' THEN 'A'
WHEN 'ST_MAN' THEN 'B'
WHEN 'IT_PROG' THEN 'C'
WHEN 'SA_REP' THEN 'D'
WHEN 'ST_CLERK' THEN 'E'
END AS Grade
FROM employees
5.0 数据库数学方面知识点
round 四舍五入
SELECT ROUND(1.454,2) 1.45
truncate 截断(不会四舍五入)
SELECT TRUNCATE(1.45423,3) 1.454
mod 除余
SELECT MOD(4,2) 0
SELECT MOD(3,2) 1
6.0 子查询
6.1 定义
子查询:在一个select语句中,嵌入另外一个select语句,被嵌入的select语句成为子查询
主查询:主要查询的语句,第一条select语句
6.2 案例
两表联查
案例:查询每个品牌的信息,以及品牌对应的商品个数
SELECT brand_id,GROUP_CONCAT(tp_brand.`name`),COUNT(*) FROM tp_brand INNER JOIN tp_goods ON tp_brand.`id`=tp_goods.`brand_id` GROUP BY brand_id
子查询
1.查询出品牌信息
SELECT * FROM tp_brand
2.按照品牌id查询每个品牌对应得商品个数
SELECT * FROM tp_goods WHERE tp_goods.`brand_id`brand=()
综合
SELECT tp_brand.id,tp_brand.name,(SELECT COUNT(*) FROM tp_goods WHERE tp_goods.`brand_id`=tp_brand.`id`) FROM tp_brand
主查询 子查询 子查询可以充当主查询的条件 子查询是嵌入到主查询中 子查询也是一条完整的SQL语句,但是不需要加;
6.3 子查询分类
- 标量子查询
一行一列
- 列子查询
一列多行
- 行子查询
一行多列(一般不用,了解)