DQL 查询
1. 查询所有得字段
select * from 表名
2. 查询指定字段
select 字段1,字段2....from 表名
- 给字段起别名
select 字段1 as 别名,字段2... from 表名
- 注意点:
关于起别名得问题,as可以省略也可以写
3.去重操作
- select distinct brand_id from tp_goods
- distinct 关键字,去重操作
4.条件筛选
- select 指定字段 from 表名 where 条件
5.排序
select * from 表名 order by 字段1 desc|asc,字段2 desc|asc
6. 分页
select 字段 from 表名 limit 位置,个数(从那一段开始取多少条数据)
7.聚合函数
- count 统计个数
- sum 求和
- avg 平均值
- max 最大值
- min 最小值
8.分组
- 规则
select 分组依据(分组字段名),group_concat(需要找展示得字段1,字段2...) from 表名 group by 字段名
- where having
- where 在原始数据上就能进行条件筛选
- having 分组之后的条件筛选
- where与having区别在于 where不能用于聚合函数 如:avg、sum、min、max中
- concat:链接两个字段
9.切割,替换字符串
- 切割字符串-SUBSTR
SELECT SUBSTR('abc123'1,1)
- 拼接字符串-CONCAT
SELECT CONCAT('abc','123')
- 字符串长度-LENGTH
SELECT LENGTH('abc123')
- insert 替换
SELECT INSERT('asd',1,2,'qwe')
# insert 替换从1个位置开始 替换第2个字符
#insert 参数是旧字符串 替换位置 替换长度 新字符串
- TRIM-截取
SELECT TRIM(' absedfgh ')# 截取去空格
- LTRIM-左边截取
SELECT LTRIM(' absedfgh ') #左边截取 去空格
- RTRIM-右边截取
SELECT RTRIM(' absedfgh ') #右边截取 去空格
- REPLACE-替换
SELECT REPLACE('asd123','1','qwe')#替换 字符串 把1替换成qwe
- TRUNCATE-截断
SELECT TRUNCATE(1.23456,2)# 截断 取1.23
- ROUND-截取(四舍五入)
#逗号前面是数据 1是取几位小数 1可变 四舍五入
SELECT ROUND(1.454,1)#逗号前面是数据 1是取几位小数 1可变 四舍五入
- MOD-取余数
#取余数 4除2 取0 3除2 取1
SELECT MOD(4,2)#取余数 4除2 取0 3除2 取1
10.case 格式
CASE 字段
WHEN 表达式1 THEN 输出值1
WHEN 表达式2 THEN 输出值2
...
ELSE 输出值
END
11.0 子查询
11.1定义
案例
11.3子查询分类
| 标量子查询 | 一行一列 |
|---|---|
| 列子查询 | 一列多行 |
| 行子查询 | 一行多列(一般不用,了解就可) |
12 视图-查询
- 试图封装
CREATE VIEW v1
AS
SELECT goods_id,goods_name from tp_goods WHERE tp_goods.goods_id BETWEEN 50 AND 60
- 使用试图
SELECT * FROM v1
- 语法规则
CREATE VIEW 视图名
AS
合法有效的SQL语句
- 使用场景 保存复杂的sql语句
12.1 修改视图
create or replace
as
合法有效的sql语句
alter viem 视图名
as
合法有效的sql语句
12.2 删除视图
drop view 视图1,视图2,视图3
12.3更新视图数据
insert into 视图名(字段1,字段2,字段...) values(值1,值2,值3...)
insert into 视图名 values(值1,值2,值3...)#值得个数必须和字段个数保持一致
12.4更新
update 视图 set 字段1=值1,字段2=值2 where 条件1
12.5删除
delete from 视图 where 条件筛选1,条件筛选2...
12.6注意点
修改视图,涉及到原始表 一般情况下,视图只赋予读权限
13.存储过程-增、删、改
- 案例
delimiter $
create procedure p1()
begin
insert into boys values(13,'李斯',1)
(14,'王五',12)
(15,'张三',0)
end
- 定义
- 规则
delimiter $ #申明修改结束符 create procedure p1() begin 合法有效得sql语句,存在;结尾 end$ - 调用
- call 存储过程()
- 使用场景
- 一般增、删、改
INSERT INTO boys VALUES(9,'张三',0)
SELECT *FROM boys
INSERT INTO boys VALUES(13,'李四',1),(14,'王五',12),(15,'张三,0)
DELIMITER $
CREATE PROCEDURE p1()
BEGIN
INSERT INTO boys VALUES(13,'李四',1),(14,'王五',12),
(15,'张三',0);
END;
CALL p1()