数据库里的小知识🧀

341 阅读3分钟

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-取余数
#取余数 420 321 
SELECT MOD(4,2)#取余数 420 321

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()