03 数据库之DML&DQL


此篇文章是记录DML和DQL的使用,有问题的话欢迎提出

DML&DQL

数据操作语言

1、插入数据

insert

insert into 表名 (列名,...)  values (...,...,....);
批处理--批量插入数据
insert into 表名 (列名,...)  values (...,...,....),(...,...,....),(...,...,....)...;

注意: 没有赋值的那个列要么有默认值,要么允许为空,否则就必须在insert的时候为其赋值

-- 方法1
insert into college values (1,'计算机学院','1990-1-1','https://www.scu.edu.cn/cs');
insert into college values (2,'文学院','1990-1-1','');
-- 方法2 批处理
insert into college(college_id,college_name,group_date)
values
	(4,'数学学院','1984-10-1'),
    (5,'教育学院','1986-1-1'),
    (6,'物理学院','1999-10-10');

在这里插入图片描述

  • 推荐大家使用指定为字段赋值的做法,这样做可以不按照建表时设定的字段顺序赋值,可以按照 values 前⾯的元组中给定的字段顺序为字段赋值,但是需要注意,除了允许为 null 和有默认值的字段外,其他的字段都必须要⼀⼀列出并在 values 后⾯的元组中为其赋值。

  • 在插⼊数据时,要注意主键是不能重复的,如果插⼊的数据与表中已有记录主键相同,那么insert操作将会产⽣Duplicated Entry 的报错信息

2、删除数据

delete

-- 在删除操作中,=表示相等性判断,不是复制操作  只有写在set后面的=才是赋值
-- 删除的时候通常会带上where子句,而其中条件通常都是主键 
-- where ⼦句是⽤来指定条件的,只有满⾜条件的⾏会被删除
delete from 表名 where 判断条件
-- 删除college_id为5的数据
delete from college where college_id=5;
-- 删除college_id 为 3 和 4 的数据
delete from college where college_id in (3,4);
delete from college-- 删除全表的话会报错,如果必须要这种操作,必须要将安全模式关掉
-- 查看系统安全变量的值
show variables like 'sql_safe_updates';
-- 修改系统变量  on 是安全模式,不允许删除全表,off是关闭安全模式,可以进行删除全表操作
set sql_safe_updates=on;

在这里插入图片描述

on delete set null--设置为空值,在删除父表的时候子表将引用父表的列设置为空-前提是该项允许为空
on update cascade--级联,在更新父表的时候子表也会同时更新
on update restrict--默认restrict表示不允许父表删除和更新

在这里插入图片描述

注意: delete 和 update 操作一定要带上where子句 千万不要删除或者更新全表

3、更新数据

update

-- 更新一个数据
update college set college_name='物理与空间学院' where college_id=6;
-- 一次性更改多个字段
update college 
	set college_name='物理与空间学院',
		group_date='1990-12-1',
        website='https://www.wuli.com'
where college_id=6;

数据查询语言

1、查询数据

投影–select

注意

  1. SQL的连接方式,MySQL目前的版本没有全外连接,但是可以通过左外连接和右外连接的并集实现全外连接

在这里插入图片描述

  1. MySQL 中⽀持多种类型的运算符,包括:算术运算符( + 、 - 、 * 、 / 、 % )、比较运算符( = 、 <> 、 <=> 、 < 、 <= 、 > 、 >= 、 BETWEEN…AND… .、 IN 、 IS NULL 、 IS NOT NULL 、 LIKE 、 RLIKE 、 REGEXP )、逻辑运算符( NOT 、 AND 、 OR 、 XOR )和位运算符( & 、 | 、 ^ 、 ~ 、 >> 、 << ),我们可以在 DML 中使⽤这些运算符处理数据。

  2. 在查询数据时,可以在 SELECT 语句及其⼦句(如 WHERE ⼦句ORDER BY ⼦句HAVING ⼦句等)中使⽤函数,这些函数包括字符串函数、数值函数、时间⽇期函数、流程函数等

    常用字符串函数功能
    CONCAT将多个字符串连接成⼀个字符串
    FORMAT将数值格式化成字符串并指定保留⼏位⼩数
    FROM_BASE64 / TO_BASE64BASE64解码/编码
    BIN / OCT / HEX将数值转换成⼆进制/⼋进制/⼗六进制字符串
    LOCATE在字符串中查找⼀个⼦串的位置
    LEFT / RIGHT返回⼀个字符串左边/右边指定⻓度的字符
    LENGTH / CHAR_LENGTH返回字符串的⻓度以字节/字符为单位
    LOWER / UPPER返回字符串的⼩写/⼤写形式
    LPAD / RPAD如果字符串的⻓度不⾜,在字符串左边/右边填充指定的字符
    LTRIM / RTRIM去掉字符串前⾯/后⾯的空格
    ORD / CHAR返回字符对应的编码/返回编码对应的字符
    STRCMP⽐较字符串,返回-1、0、1分别表示⼩于、等于、⼤于
    SUBSTRING返回字符串指定范围的⼦串
    常用数值函数功能
    ABS返回⼀个数的绝度值
    CEILING / FLOOR返回⼀个数上取整/下取整的结果
    CONV将⼀个数从⼀种进制转换成另⼀种进制
    CRC32计算循环冗余校验码
    EXP / LOG / LOG2 / LOG10计算指数/对数
    POW求幂
    RAND返回[0,1)范围的随机数
    ROUND返回⼀个数四舍五⼊后的结果
    SQRT返回⼀个数的平⽅根
    TRUNCATE截断⼀个数到指定的精度
    SIN / COS / TAN / COT / ASIN / ACOS / ATAN三⻆函数
    常用时间日期函数功能
    CURDATE / CURTIME / NOW获取当前⽇期/时间/⽇期和时间
    ADDDATE / SUBDATE将两个⽇期表达式相加/相减并返回结果
    DATE / TIME从字符串中获取⽇期/时间
    YEAR / MONTH / DAY从⽇期中获取年/⽉/⽇
    HOUR / MINUTE / SECOND从时间中获取时/分/秒
    DATEDIFF / TIMEDIFF返回两个时间⽇期表达式相差多少天/⼩时
    MAKEDATE / MAKETIME制造⼀个⽇期/时间
    常用流程函数功能
    IF根据条件是否成⽴返回不同的值
    IFNULL如果为NULL则返回指定的值否则就返回本身
    NULLIF两个表达式相等就返回NULL否则返回第⼀个表达式的值
    常用其他函数功能
    MD5 / SHA1 / SHA2返回字符串对应的哈希摘要
    CHARSET / COLLATION返回字符集/校对规则
    USER / CURRENT_USER返回当前⽤户
    DATABASE返回当前数据库名
    VERSION返回当前数据库版本
    FOUND_ROWS / ROW_COUNT返回查询到的⾏数/受影响的⾏数
    LAST_INSERT_ID返回最后⼀个⾃增主键的值
    UUID / UUID_SHORT返回全局唯⼀标识符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兮知

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值