Mysql的增删改查以及常用语法总结

一、insert语句

1. 基本语法:

-- 1. 字段和表中的顺序一致 ,DEFAULT代表使用该列的默认值
INSERT INTO tbl_name VALUES (值1), (值2), (DEFAULT);   
-- 2. 字段顺序打乱,字段与值一一对应
INSERT INTO tbl_name (字段3, 字段2, 字段1) VALUES (值3, 值2, 值1);
-- 3. set实现
INSERT INTO tbl_name set 字段1=值1,字段2=值2,字段3=值3

2. 实用操作:

-- 如果主键冲突,则更新后面的字段
INSERT INTO tbl_name VALUES (值1), (值2), (值3) DUPLICATE KEY UPDATE 字段=值, …;
-- 如果主键冲突,则跳过该行插入
INSERT IGNORE INTO tbl_name ...

二、update语句

1. 基本语法:

UPDATE tab_name SET 字段=值, 字段=值 WHERE 字段=值;

三、delete语句

1. 基本语法:

DELETE FROM tab_name WHERE 字段=值;
-- 删除表中某一列值重复的项,只保留最小id的
DELETE a FROM tab_name a, tab_name b where a.id > b.id and a.字段=b.字段 

四、select语句

1. 基本语法:

   执行顺序为:FROM > WHERE > GROUP BY > HAVING > ORDER BY > SELECT

SELECT 查询的内容 FROM tab_name WHERE 查询条件 GROUP BY 分组字段 HAVING 分组后的条件 ORDER BY 字段;

-- 连接查询
-- 拼接结果
union -- 对两个集合(结果)进行并集操作
union all  -- 可以有重复的并集

2. 子查询:一个select查询的结果作为另一个查询的条件

SELECT * FROM tab_name1 where tid IN (SELECT id from tab_name2 WHERE xxx > x)

3. 连接查询:通过某一字段将两表连接,通过不同的连接方式展示查询结果

-- 内连接:取两表交集
SELECT * FROM tab_name1 a [INNER] JOIN tab_name2 b ON a.aid = b.bid
  -- 其实等同于
SELECT * FROM tab_name1 a ,tab_name2 b WHERE a.aid = b.bid
-- 外连接-左连接:以左表为主取值,查出的结果条数=左表的总条数
SELECT * FROM tab_name1 a LEFT JOIN tab_name2 b ON a.aid = b.bid
-- 外连接-右连接:以右表为主取值,查出的结果条数=右表的总条数
SELECT * FROM tab_name1 a RIGHT JOIN tab_name2 b ON a.aid = b.bid

五、 sql编程

常用的内置函数、聚合函数和一些公式总结

-- 内置函数
abs(x)          -- 绝对值 
format(x, d)    -- 格式化千分位数值 format(1234567.456, 2) = 1,234,567.46
ceil(x)         -- 向上取整 
floor(x)        -- 向下取整
round(x)        -- 四舍五入去整
mod(m, n)       -- m%n 求余 
pi()            -- 获得圆周率
pow(m, n)       -- m^n
sqrt(x)         -- 算术平方根
rand()          -- 随机数
-- 时间相关
now(), current_timestamp();     -- 当前日期时间
current_date();                 -- 当前日期
current_time();                 -- 当前时间
date( yyyy-mm-dd hh:ii:ss );    -- 获取日期部分
time( yyyy-mm-dd hh:ii:ss );    -- 获取时间部分
-- 双分支 类似java的三元 expr为表达式
if(expr1,expr2,expr3)  -- expr1成立则返回expr2的值,反之返回expr3的值
-- 聚合函数
count()      -- 计数
sum()        -- 求和
max()        -- 最大值
min()        -- 最小值
avg()        -- 平均值
-- 分组 类似于java中stream的groupingby
group_concat([DISTINCT] column1 [ORDER BY column2 ASC\DESC] [SEPARATOR seq]);-- 将分组中column1这一列对应的多行的值 [去重] 按照column2 升序或者降序进行连接,其中分隔符为seq

逻辑控制语句if

if 条件 then xxx
elseif 条件 then xxx
else xxx
end if;

最后,测试过程中,最常用到的就是查询语句,主要是看接口调用的数据传输是否正常,其中多表关联查询和子查询是用的比较多的;这些只是初级的使用。

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值