• 01.MySQL(SQL分类及使用)


    注意:DML只是进行增删改,DQL才有查询

    分类全称说明
    DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
    DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
    DQLData Query Language数据查询语言,用来查询数据库中表的记录
    DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

    DDL

    数据库操作:

    1. 查询所有数据库

    SHOW DATABASES;
    
    • 1

    2. 查询所处数据库

    SELECT DATABASE();
    
    • 1

    3. 创建数据库

    CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
    --例:CREATE DATABASE test01 DEFAULT CHARSET utf8mb4;
    
    • 1
    • 2

    4. 删除数据库

    DROP DATABASE [IF EXISTS] 数据库名;
    
    • 1

    5. 使用

    USE 数据库名;
    
    • 1

    表操作:

    1. 查询当前数据库中所有表

    SHOW TABLES;
    
    • 1

    2. 查询表结构

    DESC 表名;
    
    • 1

    3. 查询指定表的建表语句

    SHOW CREATE TABLE 表名;
    
    • 1

    4. 添加字段

    ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
    
    • 1

    5. 修改字段类型

    ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
    
    • 1

    6. 修改字段名和字段类型

    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
    
    • 1

    7. 删除字段

    ALTER TABLE 表名 DROP 字段名;
    
    • 1

    8. 修改表名

    ALTER TABLE 表名 RENAME TO 新表名;
    
    • 1

    9. 创建表

    CREATE TABLE 表名(
    	字段1 字段1类型 [COMMENT 字段1注释],
        ...
        字段1 字段1类型 [COMMENT 字段1注释]
    )[COMMENT 表注释];
    
    • 1
    • 2
    • 3
    • 4
    • 5

    10. 删除表

    DROP TABLE [IF EXISTS] 表名;
    
    • 1

    11. 删除表中所有数据,删表后建表

    TRUNCATE TABLE;
    
    • 1

    数据类型

    分类类型大小有符号(SIGNED)范围无符号(UNSIGNED)范围描述
    数值类型TINYINT1 byte(-128,127)(0,255)小整数值
    SMALLINT2 bytes(-32768,32767)(0,65535)大整数值
    MEDIUMINT3 bytes(-8388608,8388607)(0,16777215)大整数值
    INT或INTEGER4 bytes(-2147483648,2147483647)(0,4294967295)大整数值
    BIGINT8 bytes(-263 ,263-1)(0,264-1)极大整数值
    FLOAT4bytes单精度浮点数值
    DOUBLE8 bytes双精度浮点数值
    DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确点数)

    在这里插入图片描述

    日期类型注意timestamp 跟 datetime,它们表示的年份范围不同,其中timestamp会根据时区不同自动转换日期时间,而datetime则会保持不变。

    date_timetime_stamp
    2020-01-11 09:53:322020-01-11 09:53:32

    现在我们运行

    修改当前会话的时区:

    set time_zone='+8:00';
    
    • 1

    再次查看数据:

    date_timetime_stamp
    2020-01-11 09:53:322020-01-11 17:53:32

    性能

    由于 TIMESTAMP 需要根据时区进行转换,所以从毫秒数转换到 TIMESTAMP 时,不仅要调用一个简单的函数,还要调用操作系统底层的系统函数。这个系统函数为了保证操作系统时区的一致性,需要进行加锁操作,这就降低了效率。

    DATETIME 不涉及时区转换,所以不会有这个问题。

    为了避免 TIMESTAMP 的时区转换问题,建议使用指定的时区,而不是依赖于操作系统时区。

    # 查看当前会话时区
    SELECT @@session.time_zone;
    # 设置当前会话时区
    SET time_zone = 'Europe/Helsinki';
    SET time_zone = "+00:00";
    # 数据库全局时区设置
    SELECT @@global.time_zone;
    # 设置全局时区
    SET GLOBAL time_zone = '+8:00';
    SET GLOBAL time_zone = 'Europe/Helsinki';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    DML

    DML:Data Manipulation Language(数据操作语言),用于对数据库表中表的数据记录进行增删改操作。

    添加数据

    • 指定字段添加数据
    INSERT INTO 表名 (字段名1,字段名2,...) values (1,值2...); 
    
    • 1
    • 给全部字段添加数据
    INSERT INTO 表名 VALUES (1,2,...);
    
    • 1
    • 批量添加数据
    INSERT INTO 表名  (字段名1,字段名2,...) values (1,2,...),(1,2,...);
    
    • 1

    注意:字符串和日期类型数据应该包含在括号中。

    更新数据

    UPDATE 表名 SET 字段名1 =1,字段名2 =2,...[WHERE 条件]; 
    
    • 1

    注意:条件可以有也可以没有,没有就是修改整张表的所有数据。

    删除数据

    DELETE FROM 表名 [WHERE 条件];
    
    • 1

    注意:DELETE不设置条件删除整张表,DELETE不能删除某个字段,但可以使用UPDATE

    DQL

    在这里插入图片描述

    基本查询

    • 多字段查询
    SELECT 字段1,字段2... FROM 表名;
    
    • 1
    • 全部字段查询
    SELECT * FROM 表名;
    
    • 1
    • 设置别名
    SELECT 字段1 [AS 别名1],字段2 [AS 别名1]... FROM 表名;
    
    • 1
    • 去除重复记录
    SELECT DISTINCT 字段列表 FROM 表名;
    
    • 1

    查询的字段列表数据完全一致为重复。

    条件查询

    SELECT 字段列表 FROM 表名 WHERE 条件列表;
    
    • 1

    条件:

    比较运算符功能
    >大于
    >=大于等于
    <小于
    <=小于等于
    =等于
    <>或!=不等于
    BETWEEN… AND…在某个范围之内(含最大、最小值)
    IN(…)在in之后的列表中的值,多选一
    LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)
    IS NULL是NULL
    ADN 或 &&并且(多个条件同时成立)
    或OR 或双竖线或者(多个条件任意一个成立)
    NOT 或!非,不是

    查询姓名为两个字的员工信息

    SELECT * FROM emp WHERE emp_name LIKE '__';
    
    • 1

    查询身份证最后一位为X的员工信息

    SELECT * FROM emp WHERE idcare LIKE '%X';
    
    • 1

    聚合函数

    SELECT 聚合函数(字段列表) FROM 表名;
    
    • 1
    函数功能
    count统计数量
    max最大值
    min最小值
    avg平均值
    sum求和
    SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名  [HAVING 分组后过滤条件];
    
    • 1

    where与having条件:

    • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
    • 判断条件不同:where不能对聚合函数进行判断,而having可以。

    注意:

    • 执行顺序:where > 聚合函数 > having。

    • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

    • 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

    SELECT workaddress FROM emp WHERE age < 45 GROUP BY workaddress HAVING COUNT(*) >= 3;
    
    • 1

    排序查询

    SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式,字段2 排序方式
    
    • 1

    排序方式

    • ASC:升序(默认值)
    • DESC:降序

    注意:如果是多字段排序,当第一个字段值相同时才会根据第二个字段排序。

    分页查询

    SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数; 
    
    • 1

    执行顺序

    在这里插入图片描述

    DCL

    管理用户

    • 查询用户【用于查询有哪些用户对当前数据库管理系统有哪些权限】
    USE mysql;
    SELECT * FROM user;
    
    • 1
    • 2
    • 创建用户【表示创建的用户能访问数据库管理系统,并没有权限访问数据库,需要授权】
    create user '用户名'@'主机名' identified by '密码';
    
    • 1

    主机名:使用localhost时表示只能在本机访问,可以使用%表示任意主机都可访问,例如可以进行远程连接。

    • 修改用户密码
    alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
    
    • 1
    • 删除用户
    drop user '用户名'@'主机名';
    
    • 1

    权限管理

    • 查询权限
    SHOW GRANTS FOR '用户名'@'主机名'
    
    • 1
    • 授予权限
    GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
    
    • 1
    • 撤销权限
    REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
    
    • 1

    权限列表

    MySQL中定义了很多种权限,但是常用的就以下几种:

    权限说明
    ALL,ALL PRIVILEGES所有权限
    SELECT查询数据
    INSERT插入数据
    UPDATE修改数据
    DELETE删除数据
    ALTER修改表
    DROP删除数据库/表/视图
    CREATE创建数据库/表

    注意:

    • 多个权限之间使用逗号分隔
    • 授权时,数据库名和表名可以使用*进行通配,表示所有。
  • 相关阅读:
    python中如何使用正则表达匹配\本身?(文末赠书)
    最新编程语言排行榜
    vue中的基础知识
    【OpenCV】图像上绘制文字cv2.putText()函数用法,添加倾斜透明水印
    【基于simulink的二阶电路仿真】
    虹科校园大使招募令
    讯飞星火升级 3.0:整体超越 ChatGPT,2024 年将实现对标 GPT-4
    【C语言】模拟实现strcat
    linuxC基础
    「Docker」如何在苹果电脑上构建简单的Go云原生程序「MacOS」
  • 原文地址:https://blog.csdn.net/m0_53951384/article/details/133981864