Citrons

MySQL学习笔记——MySQL表的创建与管理
项目任务创建数据表修改数据表删除数据表创建数据表CREATE [TEMPORARY] TABLE [IF NOT ...
扫描右侧二维码阅读全文
15
2018/09

MySQL学习笔记——MySQL表的创建与管理

项目任务

  • 创建数据表
  • 修改数据表
  • 删除数据表

创建数据表

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name;

数据类型:
  整数类型和小数类型、字符串类型、日期类型、复合类型(复合类型包括enmu枚举类型和set集合类型)以及二进制类型。

  1. 创建数据表
    【例】创建员工表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_deptment3
ALTER 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;

案例目的

  • 掌握数据表的创建方法
  • 掌握数据表的修改方法
  • 掌握数据表的删除方法
  • 掌握数据表的复制方法
广而告之:

Last modification:April 23rd, 2019 at 06:10 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment