数据库冷知识??

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 子查询分类

  • 标量子查询

一行一列

  • 列子查询

一列多行

  • 行子查询

一行多列(一般不用,了解)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享