一 创建员工表tb_emp1
1 首先创建数据库,SQL语句如下:
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)
2 选择创建表的数据库,SQL语句如下:
mysql> USE test_db;
Database changed
3 创建tb_emp1表,SQL语句为:
CREATE TABLE tb_emp1
(
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT
);
4 语句执行后,便创建了一个名称为tb_emp1的数据表,使用SHOW TABLES;语句查看数据表是否创建成功,SQL语句如下:
mysql> SHOW TABLES;
+-------------------+
| Tables_in_test_db |
+-------------------+
| tb_emp1 |
+-------------------+
1 row in set (0.00 sec)
5 可以看到,test_db数据库中已经有了数据表tb_tmp1,数据表创建成功。
二 定义数据表tb_emp 2,其主键为id,SQL语句如下
CREATE TABLE tb_emp2
(
id INT(11) PRIMARY KEY,
name VARCHAR(25),
deptId INT(11),
salary FLOAT
);
三 定义数据表tb_emp 3,其主键为id,SQL语句如下
CREATE TABLE tb_emp3
(
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
PRIMARY KEY(id)
);
上述两个例子执行后的结果是一样的,都会在id字段上设置主键约束。
四 定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一个员工,可以把name、deptId联合起来做为主键,SQL语句如下
CREATE TABLE tb_emp4
(
name VARCHAR(25),
deptId INT(11),
salary FLOAT,
PRIMARY KEY(name,deptId)
);
五 定义数据表tb_emp5,并在tb_emp5表上创建外键约束
1 创建一个部门表tb_dept1,SQL语句如下:
CREATE TABLE tb_dept1
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
);
2 定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id,SQL语句为:
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)
);
以上语句执行成功之后,在表tb_emp5上添加了名称为fk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id。
六 定义数据表tb_emp6,指定员工的名称不能为空,SQL语句如下
CREATE TABLE tb_emp6
(
id INT(11) PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT(11),
salary FLOAT
);
七 定义数据表tb_dept2,指定部门的名称唯一,SQL语句如下
CREATE TABLE tb_dept2
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
);
八 定义数据表tb_dept3,指定部门的名称唯一,SQL语句如下
CREATE TABLE tb_dept3
(
id INT(11) PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50),
CONSTRAINT STH UNIQUE(name)
);
九 定义数据表tb_emp7,指定员工的部门编号默认为1111,SQL语句如下
CREATE TABLE tb_emp7
(
id INT(11) PRIMARY KEY,
name VARCHAR(25) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
十 定义数据表tb_emp8,指定员工的编号自动递增,SQL语句如下
CREATE TABLE tb_emp8
(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
deptId INT(11),
salary FLOAT
);
例如,执行如下插入语句:
INSERT INTO tb_emp8 (name,salary) VALUES('Lucy',1000), ('Lura',1200),('Kevin',1500);
语句执行完后,tb_emp8表中增加3条记录,在这里并没有输入id的值,但系统已经自动添加该值,使用SELECT命令查看记录,如下所示。
mysql> SELECT * FROM tb_emp8;
+----+-------+--------+--------+
| id | name | deptId | salary |
+----+-------+--------+--------+
| 1 | Lucy | NULL | 1000 |
| 2 | Lura | NULL | 1200 |
| 3 | Kevin | NULL | 1500 |
+----+-------+--------+--------+
3 rows in set (0.00 sec)