> 文章列表 > 03 数据库之DMLDQL

03 数据库之DMLDQL

03 数据库之DMLDQL

数据操作语言DML&数据查询语言DQL

    • DML&DQL
      • 数据操作语言
        • 1、插入数据
        • 2、删除数据
        • 3、更新数据
      • 数据查询语言
        • 1、查询数据
      • 注意

此篇文章是记录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_BASE64 BASE64解码/编码
    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 返回全局唯⼀标识符