Skip to content

Latest commit

 

History

History
134 lines (125 loc) · 3.9 KB

04-表操作.md

File metadata and controls

134 lines (125 loc) · 3.9 KB

在创建表前需要打开数据库

mysql> USE db_name;

创建表

mysql> CREATE TABLE [ IF NOT EXISTS ] table_name (
    column_name data_type,
    ...
);

如:

mysql> CREATE TABLE user (
    name VARCHAR(20),
    age TINYINT UNSIGNED,
    salary FLOAT(8,2) UNSIGNED
);

查看数据表列表

mysql> SHOW TABLES [ FROM db_name ] [ LIKE 'pattern' | WHERE expr ];

查看数据表结构

mysql> SHOW COLUMNS FROM tb_name;

插入记录

mysql> INSERT [ INTO ] tb_name [( col_name,... )] VALUES (val,...);

如果不写列名,VALUES 必须包含所有字段,如果写了列名,则 VALUES 值与列名一一对应。

查找记录

mysql> SELECT expression,... FROM tb_name;

约束

  1. 约束保证数据的完整性和一致性。
  2. 约束分为表级约束和列级约束。
  3. 约束类型包括:
  • NOT NULL(非空约束)
  • PRIMARY KEY(主键约束)
  • UNIQUE KEY(唯一约束)
  • DEFAULT(默认约束)
  • FOREIGN KEY(外键约束)

空与非空

NULL 和 NOT NULL,表示允许为空和不允许为空,默认为 NULL

mysql> CREATE TABLE user (
    username CARCHAR NOT NULL,
    age TINYINT NULL
);

自动编号

AUTO_INCREMENT 自动编号必须与主键组合使用,默认情况下起始值为1,每次的增量为1

mysql> CREATE TABLE user (
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY
);

主键约束

PRIMARY KEY

  • 主键约束
  • 每张数据表只能存在一个主键
  • 主键保证记录的唯一性
  • 主键自动为 NOT NULL

唯一约束

UNIQUE KEY

  • 唯一约束
  • 唯一约束可以保证记录的唯一性
  • 唯一约束的字段可以为空值
  • 每张数据表可以存在多个唯一约束

默认约束

DEFAULT 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

mysql> CREATE TABLE tb (
    column ENUM('a','b','c') DEFAULT 'a'
);

外键约束

FOREIGN KEY 保持数据一致性,完整性。 实现一对一或一对多关系。

mysql> CREATE TABLE users(
    -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    -> pid BIGINT,
    -> POREIGN KEY (pid) REFERENCES provinces (id)
    -> );

要求

  1. 父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
  2. 数据表的存储引擎只能为 InnoDB。
  3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度可以不同。
  4. 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL 将自动创建索引。

编辑数据表的默认存储引擎 编辑 MySQL 配置文件

default-storage-engine=INNODB

查看表的索引

mysql> SHOW INDEXES FROM provinces\G;

\G 表示以表格的形式显示。

外键约束的参照操作

  1. CASCADE:从父表删除或更新时自动删除或更新子表中匹配的行。
  2. SET NULL:从父表删除或更新行时设置子表中的外键列为 NULL。如果使用该选项,必须保证子表列没有指定 NOT NULL。
  3. RESTRICT:拒绝对父表的删除或更新操作。
  4. NO ACTION:标准 SQL 的关键字,在 MySQL 中与 RESTRICT 相同。
mysql> CREATE TABLE users(
    -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    -> pid BIGINT,
    -> POREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
    -> );

在平时项目中很少使用外键约束,因为外键约束只能使用 InnoDB 存储引擎,我们采用“逻辑外键”,即设计数据库时按照外键约束的结构设计,但不使用 FOREIGN KEY 关键字。

表级约束与列级约束

对一个数据列建立的约束,称为列级约束。 对多个数据列建立的约束,称为表级约束。 列级约束既可以在列定义时声明,也可以在列定义后声明。 表级约束只能在列定义后声明。