This is my study note of MySql.
Learning vedio link : 黑马程序员

Basic Part 1

Basic structure

classify name illustrate
DDL Data definition language 数据定义语言
DML Data manipulation language 数据操作语言
DQL Data query language 数据查询语言
DCL Data contral language 数据控制语言

Data type

  • 整型
    Alt text

    • 字符型
      Alt text1

    DDL(Data Definition Language)

    Code illustrate
    SHOW DATABASEs 展示当前所有数据库
    SELECT DATABASE() 展示当前所处数据库
    CREATE DATABASE 数据库名 创建数据库
    USE 数据库名 使用数据库
    DROP DATABASE 数据库名 删除数据库

    For example

    1
    2
    3
    1CREATE DATABASE tb_database;  // 创建tb_database数据库
    2、USE tb_database; // 使用tb_database数据库
    3DROP DATABASE tb_databse; // 删除tb_database数据库
    Code illustrate
    SHOW TABLES 展示当前所有表
    CREATE TABLE 表名 创建表
    DESC 表名 查看表的具体信息
    SHOW CREATE TABLE 表名 显示创建表时的语句
    ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO… 对表的操作
    DROP TABLE 表名 移除表

    For example

    1
    2
    3
    4
    5
    CREATE TABLE tb_my;            // 创建tb_my表
    DESC TABLE tb_my; // 查看tb_my表具体信息
    SHOW CREATE TABLE tb_my; // 展示创建tb_my时的语句
    ALTER TABLE tb_my ADD id int; // 对tb_my进行加操作
    DROP TABLE tb_my; // 删除tb_my表

    DML(Data Manipulation Language)

    Code illustrate
    INSERT INTO 表名 (字段名1,字段名2…) VALUES[(值1,值2…)] 为表中字段加入数据
    UPDATE 表名 SET 字段1=值1, 字段2=值2 WHERE 条件 修改表中数据
    DROP FROM 表名 WHERE 条件 删除满足条件数据

    For example

    1
    2
    3
    INSERT INTO tb (id, name) VALUES[(1, 2), (2,3)]  // 为id name插入数据
    UPDATE tb SET name = 1, id = 2 WHERE age < 3 // 更新age小于3的name id数据
    DROP FROM tb WHERE age < 3 // 删除age小于3的数据

    Data Query Language

    The structure of DQL

    Alt text1

    For example

    • Basic
    Code illustrate
    SELECT 字段1、字段2… FROM 表名 查询字段1、2…的数据
    SELECT * FROM 表名 查询所有字段
    SELECT 字段1[as 别名1], 字段2[as 别名2]… FROM 表名 设置别名
    SELECT DISTINCE 字段1 from 表名 去除表字段一内重复的数据

    For example

    1
    2
    SELECT id as "序号" FROM tb       // 给id取别名为序号
    SELECT DISTINCE id from FROM tb // 去除DISTINCT id字段的重复数据
    • Condition
      Alt text1
    Code illustrate
    SELECT 字段列表 FROM 表名 WHERE 条件 根据条件赛选字段数据

    For example

    1
    2
    3
    4
    5
    6
    SELECT * FROM tab WHERE age BETWEEN 15 and 20;            // 筛选年龄在15~20的数据
    SELECT * FROM tab WHERE gender = "女" and age < 100; // 筛选女生年龄低于100的数据
    SELECT * FROM tab WHERE age = 1 or age = 2 or age = 3; // 筛选年龄为123的数据
    SELECT * FROM tab WHERE age in(1,2,3); // 筛选年龄为123的数据
    SELECT * FROM tab WHERE name like "__"; // 筛选名字长度为2的数据
    SELECT * FROM tab WHERE name like "%x" // 筛选名字最后为x的数据
    • 聚合操作
      Alt text1
    Code illustrate
    SELECT 聚合操作 FROM 表名 纵向操作数据

    For example

    1
    SELECT count(*) FROM tab WHEN age<10;   
    Code illustrate
    SELECT 字段列表 FROM 表名[WHERE 条件] GROUP by 分组段名[having 条件] 分组查询数据
    • WHERE 操作在分组前执行, HAVING 在分组后执行
    • WHERE 无法聚合, HAVING 可以聚合

    For example

    1
    2
    SELECT * FROM tab WHERE name like "__" GROUP BY gender having age < 10;  
    // 将名字为两个数字同时年纪小于10岁的数据根据性别划分
    Code illustrate
    SELECT 字段列表 FROM 表名 ORDER by 字段1,排序方式1,字段2… 根据排序方式排序数据
    • ase 升序
    • dase降序

    For example

    1
    SELECT * FROM tab ORDER BY age ase;        // 根据年龄升序排序数据
    Code illustrate
    SELECT 字段列表 FROM tab LIMIT 起始位置 , 数量 根据索引数量查找数据
    • 起始索引从0开始, 起始索引=(页码-1)* 查询数量
    • 分页查询有不同的表达形式,Mysql中式LIMIT
    • 查询第一页数据可以忽略起始位置,或直接写 LIMIT 10

    Data Contral Language

    Code illustrate
    USE mysql; + SELECT * FROM user; 查询用户
    CREATE USER ‘用户名‘@’主机名’ IDENTITY BY ‘密码’; 创建用户
    ALTER USER ‘用户名‘@’主机名’ IDENTITY with mysql_native_password BY ‘新密码’; 修改密码
    DROP USER ‘用户名‘@’主机名’ 删除用户

    For example

    1
    2
    3
    4
    5
    6
    CREATE USER 'u1'@'localhost' IDENTITY BY '123456';
    // 创建只能访问localhost的用户u1,密码为123456
    ALTER USER 'u2'@'%' IDENTYTY WITH mysql_native_password BY '123456;
    // 修改可以访问全部主机的用户u2的密码'
    DROP USER 'u2'@'%';
    // 删除用户u2

    Persions

    Alt text1

    Code illustrate
    SHOW GRANTS FOR ‘用户名‘@’主机名’; 展示所有权限
    GRANT 权限列表 ON 数据库名.表名 TO ‘用户名‘@’主机名’; 授予权限
    REVOKE 权限列表 ON 数据库名.表名 FROM ‘用户名‘@’主机名’; 移除权限