创建数据库
- 创建数据库
mysql> create database test_db;
- 查看所有数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| sys |
| test_db |
| world |
+--------------------+
7 rows in set (0.00 sec)
- 查看创建的数据库的状态
mysql> show create database test_db\g
+----------+------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------------------------------------+
| test_db | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ |
+----------+------------------------------------------------------------------------------------------------+
- 选择创建表的数据库
mysql> use test_db;
Database changed
- 创建tb_emp1 表
mysql> create table tb_emp1(
-> id INT(11),
-> name VARCHAR(25),
-> deptID INT(11),
-> salary FLOAT);
Query OK, 0 rows affected (0.19 sec)
- 查看表格
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| tb_emp1 |
+-------------------+
1 row in set (0.00 sec)
使用主键约束
主键,又称主码,是表中一列或多列的组合,主键约束要求主键列的数据唯一,并且不能为空。主键能唯一的标识表中的一条记录,可以结合外键来定义不同表之间的关系。
- 单子段主键:在定义列的同时指定主键。
语法规则如下:字段名 数据类型 PRIMARY KEY (默认值)
mysql> create table tb_emp2(
-> id INT(11) primary key,
-> name varchar(25),
-> deptID INT(11),
-> salary float,
-> birth varchar(20));
Query OK, 0 rows affected (0.16 sec)
- 多字段联合主键:主键由多个字段联合组成
语法规则如下:字段名 数据类型 (PRIMARYKEY字段1,字段2,...,字段n)
mysql> create table tb_emp0
-> (
-> id int(11),
-> name varchar(25),
-> deptId int(11),
-> salary float,
-> primary key (id, name)
-> );
Query OK, 0 rows affected (0.22 sec)
使用外键约束
外键用来在两个表之间建立连接,外键可以为空,若不为空,则必须要等于另一个表中的主键的某个值,外键是表中的一个字段,虽可以不是主键,但是要对应另一个表的一个主键,定义外键后,不能随意删除在另一个表中有关联的行
主表(父表):对于两个具有关联关系的表而言,相关联字段主键所在的那个表为主表。
从表(子表):对于两个具有关联关系的表而言,相关联字段外键所在的那个表为从表。
语法规则如下:CONSTRAINT 外键约束名 FOREIGN KEY(外键名称) EREFERENCES 依赖的表名(主键名)
mysql> create table tb_emp5
-> (
-> id INT(11) primary key,
-> name varchar(25),
-> deptId int(11),
-> salary float,
-> constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id)
-> );
Query OK, 0 rows affected (0.15 s
语句执行后在表tb_emp5上添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id。
使用非空约束
非空约束就是指字段的值不能为空,否则会报错。
非空约束的语法规则:字段名 数据类型 not null
例子:
mysql> create table tb_emp6
-> (
-> id INT(11) primary key,
-> name varchar(25) not null,
-> deptId Int(11),
-> salary float
-> );
Query OK, 0 rows affected (0.16 sec)
使用唯一性约束
唯一性约束,要求该列唯一,允许为空,但不能重复。
语法规则如下:字段名 数据类型 UNIQUE
例子:
mysql> create table tb_dept2
-> (
-> id int(11) primary key,
-> name varchar(22) unique,
-> location varchar(50)
-> );
Query OK, 0 rows affected (0.20 sec)
默认约束
默认约束就是指定某列的默认值
语法规则如下:字段名 数据类型 DEFAULT 默认值
mysql> create table tb_emp7
-> (
-> id int(11) primary key,
-> name varchar(25) not null,
-> deptId int(11) default 1111,
-> salary float
-> );
Query OK, 0 rows affected (0.19 sec)
设置表的属性自动增加
通过为表主键添加关键AUTO_INCREMENT,并且它只能为主键的一部分。
语法规则:字段名 数据类型 AUTO_INCREMENT
例子:
mysql> create table tb_emp8
-> (
-> id int(11) primary key auto_increment,
-> name varchar(25) not null,
-> deptId int(11),
-> salary float
-> );
Query OK, 0 rows affected (0.08 sec)