MySql命令总结大全

MySql命令总结大全

对MySql中命令进行详细总结。

  • 最近详细过了下SQL有关知识,以及刷完了Leetcode上所有有关数据库的题目。因此在这里想开启一段MySql探讨之旅,从常用命令->数据库基础知识->安全保护机制->并发版本控制(锁协议)->物理索引机制->LeetCode优秀题目->JDBC中间件->数据库系统架构等进行一份超全总结。不完善的地方小伙伴们可以在评论里提醒作者进行补充。

1.SQL分类

SQL一共分为四类:

  1. 数据定义语言(DDL): 创建、删除、修改:模式、数据库、索引、视图、表结构等;
  2. 数据操作语言(DML): 对关系表进行增、删、改;
  3. 数据控制语言(DCL): 定义数据控访问权限和安全级别,及创建用户和相关授权;
  4. 数据查询语言(DQL): 对关系表进行查询;
    平时我们用的较多的主要是DML、DQL。

2.DDL

  • 数据库的创建与删除

    1
    2
    3
    4
    # 创建数据库
    create database 数据库名;
    # 删除数据库
    drop database 数据库名 [distinct|casecade];
  • 表的创建、删除、修改

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    # 创建表
    create table 表名(
    列名1 数据类型1 列级完整性约束1,
    列名2 数据类型2 列级完整性约束2
    ) CHARACTER set gbk;

    # 删除表
    drop table 表名 [distinct|casecade];

    # 增加列
    alter table 表名 add 列名 数据类型 [列级完整性约束];

    # 删除列
    alter table 表名 drop 列名;

    # 添加表级完整性约束
    alter table 表名 add 表级完整性约束;

    # 修改列
    alter table 表名 modify 列名 新的数据类型 [列级完整性约束]

    # 删除主键
    alter table drop primary key;
  • 索引的定义与删除

    1
    2
    3
    4
    5
    6
    7
    8
    # 创建索引
    create [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 on 表名(列名) [using 索引方法];

    # 删除索引
    drop index 索引名 on 表名;

    # 查看已创建索引
    show index from 表名;
  • 视图的定义与删除

    1
    2
    3
    4
    5
    6
    7
    8
    # 创建视图
    create view 视图名 as select语句;

    # 查询视图
    describe 视图名;

    # 删除视图
    drop 视图名;

3.DML

  • 表中插入数据

    1
    2
    3
    4
    5
    6
    7
    insert into 表名 values 
    (0,'小明',18,180.00,2,1,0),
    (0,'小月月',18,180.00,2,2,1),

    insert into 表名(列名1,列名2) values
    ('小明',18),
    ('小月月',18)
  • 删除表中数据

    1
    2
    3
    4
    5
    6
    # 删除部分数据
    delete from table 表名 where name = '小明'

    # 删除所有数据
    delete from 表名;
    truncate table 表名;(属于先删除表结构再新建表结构,数据量大的时候可使用)
  • 修改表中数据

    1
    update 表名 set 列名 = 新值 where name = '小明'

4.DCL

  • 用户管理

    1
    2
    3
    4
    5
    6
    7
    8
    # 创建用户
    create user 用户名 identified by 密码;

    # 删除用户
    drop user 用户名@'%';

    # 查看权限
    show grants for 用户名;
  • 权限管理

    1
    2
    3
    4
    5
    # 授权
    GRANT <权限> ON <数据库>.<表名> TO <用户名>;

    # 删除权限
    remove 权限 on 数据库.表名 from 用户名;

5.DQL

  • 一般格式

    1
    2
    3
    4
    5
    select [all|distinct] 目标列 from 表名或视图或派生表
    where条件
    group by 列名
    having 条件表达式
    order by 列名 [ASC|DESC];
  • 连接查询

    1
    select * from 表1 inner或left或right join 表2 on 表1.列 = 表2.列
  • 嵌套查询

    1
    2
    3
    4
    select Sname from student
    where Sno IN(
    select ...
    )
  • 集合查询

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 并集
    select * from student where Sdept=''CS
    UNION
    select * from student where Sage>19;

    # 交集(Mysql不能直接支持交集,需要自行实现)
    SELECT a.oname,a.odesc FROM
    object_a a INNER JOIN object_b b
    ON a.oname=b.oname AND a.odesc=b.odesc

    # 差集(Mysql不能直接支持差集,需要自行实现)
    SELECT a.oname, a.odesc FROM
    object_a a LEFT JOIN object_b b ON a.oname = b.oname AND a.odesc = b.odesc
    WHERE b.id IS NULL
  • 基于派生表的查询

    1
    select Sno,Cno From SC, (select * from student);
  • 常用聚集函数

    1
    2
    3
    4
    5
    COUNT(个数)
    SUM(求和)
    AVG(求平均)
    MAX(最大值)
    MIN(最小值)

补充说明

  • DQL补充
    关于数据库查询的主要分为以上几类,具体点的一些细节(字段重命名,表达式计算等)可以参考该链接[link]。

  • where与having区别
    where作用于基本表和视图;having作用于组
    where语句不能使用聚集函数;having可以使用聚集函数

  • MySQL函数使用
    Mysql内置了很多优秀函数可以方便我们的查询;
    我平时用的较多的主要是关于日期的函数、数学的函数、和case if两个语句。可参考该链接link

# MySql

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×