项目任务
- 创建数据表
- 修改数据表
- 删除数据表
创建数据表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name;
数据类型:
整数类型和小数类型、字符串类型、日期类型、复合类型(复合类型包括enmu枚举类型和set集合类型)以及二进制类型。
- 创建数据表
【例】创建员工表tb_emp1
选择创建表的数据库:USE test;
创建tb_emp1表:
CREATE TABLE tb_emp1
(
id int(11),
name varchar(25),
deptld int(11),
salary float
);
以上命令也可以一行打完
2.创建主键约束
主键是什么? 主键约束在表中定义一个主键来唯一确定表中每一行数据的标识符. 每张数据表只能存在一个主键; 主键保证记录的唯一性;
主键自动为NOT NULL(非空); 主键可以设置为自动编号(AUTO_INCREMENT),编号从1...n;
【例】第一数据表tb_emp2,其主键为id:
CREATE TABLE tb_emp2
(
id int(11) PRIMARY KEY,
name varchar(25),
deptld int(11),
salary float
);
第二种设置主键的方法:
CREATE TABLE tb_emp2
(
id int(11),
name varchar(25),
deptld int(11),
salary float,
PRIMARY KEY(id)
);
【例】定义数据表tb_emp3,创建多字联合主键SQL语句为:
CREATE TABLE tb_emp3
(
name varchar(25),
deptld int(11),
salary float,
PRIMARY KEY(name,deptld)
);
多个主键用半角逗号分开
3.创建外键约束
什么是外键? 外键表示一个表中的一个字段被另一个表中的一个字段引用。外键对相关表中的数据造成了限制,使MySQL能够保持参照完整性。
【例】定义数据表tb_emp4,并在tb_emp4表上创建外键约束
创建一个部门表:
CREATE TABLE tb_dept1
(
deptId int(11) PRIMARY KEY,
name varchar(22) NOT NULL,
location varchar(50)
);
定义数据表tb_emp4,让他的键deptld作为外键关联到tb_dept1的主键id:
CREATE TABLE tb_emp4
(
id int(11) PRIMARY KEY,
name varchar(25),
deptld int(11),
salary float,
CONSTRAINT fk_emp_dept2 FOREIGN KEY(deptld) REDERENCES tb_dept1(deptid)
);
在这里需要注意主表的外键和从表的主键不能重复
如果忘记了添加外键怎么办呢?
很简单,通过下面这一行命令输入:
alter table 需加外键的表 add constraint 外键名 foreign key(需加外键表的字段名) referencnes 关联表名(关联字段名);
ALTER TABLE emp4
ADD CONSTRAINT FK_emp_dept2 FOREIGN KEY (deptld)
REFERENCES dept1 (deptid);
4.非空约束
【例】定义数据表tb_emp5,指定name不能为空,SQL语句为:
CREATE TABLE tb_emp5
(
id int(11) PRIMARY KEY,
name varchar(25) NOT NULL,
deptld int(11),
salary float,
CONSTRAINT fk_emp_dept2 FOREIGN KEY(deptld) REDERENCES tb_dept1(deptid)
);
5.唯一约束
【例】定义数据表tb_dept2,指定名称唯一,SQL语句为:
CREATE TABLE tb_dept2
(
id int(11) PRIMARY KEY,
name varchar(22) UNIQUE,
location varchar(50)
);
第二种方式:
CREATE TABLE tb_dept2
(
id int(11) PRIMARY KEY,
name varchar(22) UNIQUE,
location varchar(50),
CONSTRAINT STH UNIQUE(name)
);
6.默认约束
定义数据表tb_emp6,指定编号默认为
1111,SQL语句为:
CREATE TABLE tb_emp6
(
id int(11) PRIMARY KEY,
name varchar(25) NOT NULL,
deptld int(11) DEFAULT 1111,
salary float,
CONSTRAINT fk_emp_dept3 FOREIGN KEY (deptld)REFERENCES tb_dept1(deptid)
);
7.设置表的属性值自动增加
插入新记录时,系统自动生成字段的主键值。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分
【例】定义数据表tb_emp7,指定编号自动递增,SQL语句为:
CREATE TABLE tb_emp7
(
id int(11) PRIMARY KEY AUTO_INCREMENT,
name varchar(25) NOT NULL,
deptld int(11),
salary float,
CONSTRAINT fk_emp_dept5 FOREIGN KEY (deptld) REFERENCEStb_dept1(deptld)
);
8.使用DESCRIBE和DESC查看表结构
【例】分别使用DESRIBE和DESC查看表tb_dept和tb_emp1的表结构,操作如下:ESCRIBE tb_dept1;
DESC tb_ emp1;
9.使用SHOW CREATE TABLE查看表详细信息
【例】使用SHOW CREATE TABLE查看表tb_emp1的详细信息,SQL语句及相应的执行结果如下示:SHOW CREATE TABLE tb_emp1;
SHOW CREATE TABLE tb_emp1 \G
10.数据表改名
【例】将数据表tb_dept1改名为tb_deptment3ALTER TABLE tb_dept1 RENAME tb_deptment3;
11.更改数据类型
【例】将数据表tb_dept2中name字段的数据类型由VARCHAR(22)的修改成VARCHAR(30)ALTER TABLE tb_dept2 MODIFY name VARCHAR(30);
12.更改字段名
【例】将数据表tb_dept1中的location字段名称改为loc,数据类型保持不变。ALTER TABLE tb_dept1 CHANGE location loc varchar(50);
13.添加字段
在数据表tb_dept1 中添加一个没有完整性约束的int类型的字段managerld,输入SQL语句如下:ALTER TABLE tb_dept1 ADD managerld int(10);
14.删除数据列
删除数据表tb_dept1表中的column2(没有这个数据列的,后面那个就填自己想要删除的)ALTER TABLE tb_dept1 DROP column2;
15.删除数据表(做好备份)
没有被关联的表
Show tables;
DROP TABLE IF EXISTS tb_dept2;
有关联的表,需解除关联再删除。alter table 从表名 drop foreign key 外键名称;
16.复制数据表
Test数据库中,创建tb_emp1表的一个名为tb_emp1copy1的拷贝,仅拷贝其结构Use test
Create table tb_emp1copy1 like tb_emp1;
Test数据库中,创建tb_emp1表的一个名tb_emp1copy2的拷贝,并复制其内容Use test
Create table tb_emp1copy2 as (select * from tb_emp1);
附一
查询数据表内容:select * from p;
案例目的
- 掌握数据表的创建方法
- 掌握数据表的修改方法
- 掌握数据表的删除方法
- 掌握数据表的复制方法
版权属于:Citrons
本文链接:https://www.citrons.cn/jishu/203.html
转载时须注明出处及本声明