1 DML

  • DML(Data Manipulation Language,数据操纵语言),可以在下列条件下执行:
    • 向表中插入数据。
    • 修改现存数据。
    • 删除现存数据。
  • 事务是由完成若干项工作的DML语句组成的,要么全部成功,要么全部失败。

1.1 INSERT

  • 语法:
  1. INSERT INTO 表名(列名1,列名2,……,列名n) values(值1,值2,……,值n);
  1. INSERT INTO 表名(列名1,列名2,……,列名n) values(值1,值2,……,值n),(值1,值2,……,值n),……;
  • 示例:新增雇员信息
  1. insert into employees (first_name,last_name,email,phone_number,job_id,salary,commission_pct,manager_id,department_id,hiredate)
  2. values ('xx','xxx','xxx@qq.com','18888888',null,3000,null,null,null,'2019-11-11')

1.2 UPDATE

  • 语法:
  1. UPDATE 表名
  2. SET 1=值1,列2=值2,……,列n=值n
  3. [WHERE 条件];
  • 示例:修改表中姓名为K_ing的手机号码为12345678901
  1. UPDATE employees
  2. SET phone_number = '12345678901'
  3. WHERE
  4. last_name = 'K_ing';

1.3 DELETE

  • 语法
  1. DELETE FROM 表名
  2. [WHERE 筛选条件];
  • 示例:删除last_name为xxx的员工
  1. DELETE
  2. FROM
  3. employees
  4. WHERE
  5. last_name = 'xxx';

2 DDL

  • 库的管理(创建、修改、删除)和表的管理(创建、修改、删除)。

2.1 库的管理

2.1.1 创建数据库

  • 语法:
  1. CREATE DATABASE [IF NOT EXISTS] 数据库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • 示例:创建user数据库
  1. CREATE DATABASE IF NOT EXISTS `user` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2.1.2 修改数据库

  • 修改数据库名:先删除数据库,再创建新的数据库。
  • 更改数据库的字符集和排序规则:
  1. ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2.1.3 删除数据库

  • 语法:
  1. DROP DATABASE [IF EXISTS] 数据库名;
  • 示例:删除数据库
  1. DROP DATABASE IF EXISTS 数据库名;

2.2 表的管理

2.2.1 表的创建

  • 语法:
  1. CREATE TABLE 表名(
  2. 列名1 列的类型[长度] [列的约束],
  3. 列名2 列的类型[长度] [列的约束],
  4. ……
  5. 列名n 列的类型[长度] [列的约束]
  6. );
  • 示例:创建一个学生表
  1. CREATE TABLE student (
  2. id BIGINT primary KEY auto_increment,
  3. `name` VARCHAR ( 255 )
  4. );

2.2.2 表的修改

  • 语法:
  1. ALTER TABLE 表名 add|drop|modify|change column 列名 [列类型 约束];
  • 示例:

    • 修改列名

      1. ALTER TABLE student CHANGE COLUMN `name` stu_name VARCHAR ( 255 );
    • 修改列的类型或约束

      1. ALTER TABLE student MODIFY COLUMN `stu_name` VARCHAR ( 32 );
    • 添加新列

      1. ALTER TABLE student ADD COLUMN `salary` DOUBLE;
    • 删除列

      1. ALTER TABLE student DROP COLUMN `salary`;
    • 修改表名

      1. ALTER TABLE student RENAME TO `new_student`;

2.2.3 表的删除

  • 语法:
  1. DROP TABLE IF EXISTS 表名;
  • 示例:删除学生表
  1. DROP TABLE IF EXISTS `student`;

2.2.4 复制表

  • 语法:

    • 仅仅复制表的结构:

      1. CREATE TABLE 要复制的表名 LIKE 原表名;
    • 复制表的结构和数据:

      1. CREATE TABLE 要复制的表名 SELECT * FROM 原表名;
  • 示例:

    • 仅仅复制表的结构:

      1. CREATE TABLE admin_back LIKE admin;
    • 复制表的结构和数据:

      1. CREATE TABLE admin_back
      2. SELECT * FROM admin;

2.3 常见的数据类型

2.3.1 概述

数值型:整型、小数(定点数、浮点数)。 字符型:较短的文本(char、varchar)、较长的文本(text、longtext、blob)。 日期型:

2.3.2 整型

2.3.2.1 分类

数据类型之整型.png

2.3.2.2 特点

  • 如果不设置无符号还是有符号,默认是有符号。如果需要设置无符号,需要添加unsigned关键字。
  1. CREATE TABLE `test_data_struct` (
  2. id INT,
  3. id1 INT UNSIGNED
  4. );
  • 如果插入的数值超过了整型的范围,MySQL会报(Out of range for column …)异常。
  • 如果不设置长度,会有默认的长度。比如int类型有符号默认是11位,无符号默认是10位。在MySQL中,对于整型来说,整型类型确定字段的范围大小,而长度确定字段显示的长度,如果不够,将用0来填充,当然此时需要配置zerofill关键字来配合使用,并且此时的数据类型必须是unsigned。
  1. CREATE TABLE `test_data_struct` (
  2. id INT,
  3. id1 INT(7) UNSIGNED ZEROFILL
  4. );

2.3.3 小数

2.3.3.1 分类

数据类型之小数.png

2.3.3.2 语法

  1. CREATE TABLE `表名` (
  2. 列名 FLOAT ( M, D ),
  3. 列名 DOUBLE ( M, D ),
  4. 列名 DECIMAL ( M, D )
  5. );

2.3.3.3 特点

  • M表示整数位+小数位。D表示小数位。
  • M和D都可以省略不写。如果是DECIMAL,那么M默认是10,D默认为0。
  • 定点型的精确度较高。如货币运算。

2.3.4 字符型

2.3.4.1 分类

  • char和varchar表示较短的文本。

数值类型之字符型.png

  • text和longtext表示较长的文本。
  • blob表示二进制数据。
  • enum表示枚举。
  1. create table test_enum (
  2. c enum('a','b','c')
  3. );
  • set和enum类似,但是set一次可以插入多个值。
  1. CREATE TABLE test_set (
  2. s SET ( 'a', 'b', 'c' )
  3. );
  4. INSERT INTO test_set (s) VALUES ('a');
  5. INSERT INTO test_set (s) VALUES ('a,b');

2.3.4.2 特点

  • char表示固定长度的字符,varchar表示可变长度的字符。

2.3.5 日期类型

2.3.5.1 分类

数据类型之日期类型.png