【笔记】【MySQL5.7 从入门到精通】第04章 数据表基本操作

本文全面介绍了SQL中数据表的操作,包括创建、查看、修改和删除数据表的方法,以及如何使用各种约束如主键、外键、非空、唯一性和默认值来确保数据的完整性和一致性。

目录

4.1 创建数据表

4.1.1 创建表的语法形式

4.1.2 使用主键约束

4.1.3 使用外键约束

4.1.4 使用非空约束

4.1.5 使用唯一性约束

4.1.6 使用默认约束

4.1.7 设置表的属性值自动增加

4.2 查看数据表的结构

4.2.1 查看表基本结构

4.2.2 查看表详细结构语句

4.3 修改数据表

4.3.1 修改表名

4.3.2 修改字段的数据类型

4.3.3 修改字段名

4.3.4 添加字段

4.3.5 删除字段

4.3.6 修改字段的排列位置

4.3.7 更改表的存储引擎

4.3.8 删除表的外键约束

4.4 删除数据表

4.4.1 删除没有被关联的表

4.4.2 删除被其他表关联的主表


4.1 创建数据表

4.1.1 创建表的语法形式

【指定使用的数据库】

CREATE  DATABASE test_db;
USE test_db;

【创建员工表tb_emp1】

CREATE TABLE tb_emp1
(
	id      INT(11),
	name    VARCHAR(25),
	deptId  INT(11),
	salary  FLOAT
);

【显示当前使用的数据库中的所有表】

SHOW TABLES;

4.1.2 使用主键约束

【创建表时,单一字段作为主键】

CREATE TABLE tb_emp2
(
	id    	INT(11) PRIMARY KEY,
	name  	VARCHAR(25),
	deptId 	INT(11),
	salary 	FLOAT
);

CREATE TABLE tb_emp2 
(
	id      INT(11),
	name    VARCHAR(25),
	deptId  INT(11),
	salary  FLOAT,
	
	PRIMARY KEY(id)
);

【创建表时,多字段作为主键】

CREATE TABLE tb_emp4
(
	name    VARCHAR(25),
	deptId  INT(11),
	salary  FLOAT,
	
	PRIMARY KEY(name,deptId)
);

4.1.3 使用外键约束

外键用来在两个表的数据之间建立连接,它可以时一列或多列。一个表可以有一个或多个外键。外键对应的参照完整性,一个表的外键可以位空值,若不为空值,则每一个外键值必须等一另一个表中主键的某个值。

外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键主要作用时保证数据引用的完整性,定义外键后,不预序删除在另一个表中具有关联关系的行。外键的作用时保持数据的一致性、完整性。

  • 主表(父表):对于两个就对关联关系的表而言,相关联字段中主键所在的那个表即是主表。
  • 从表(子表):对于两个就对关联关系的表而言,相关联字段中外键所在的那个表即是主表。

【创建外键】

表【tb_emp5】的列【deptId】作为外键关联到【tb_dept1】的主键 【id】

CREATE TABLE tb_dept1
(
	id        INT(11) PRIMARY KEY,
	name      VARCHAR(22)  NOT NULL,
	location  VARCHAR(50)
);

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)
);

4.1.4 使用非空约束

CREATE TABLE tb_emp6 
(
	id     INT(11) PRIMARY KEY,
	name   VARCHAR(25) NOT NULL,
	deptId  INT(11), 
	salary  FLOAT
);

4.1.5 使用唯一性约束

UNIQUE和PRIMARY KEY的区别:一个表中可以有多个字段声明位UNIQUE,但只能又一个PRIMARY KEY声明。声明为PRIMARY KEY的列不允许又空值,但是声明为UNIQUE的字段允许空值(NULL)的存在。

CREATE TABLE tb_dept2 
(
	id        INT(11) PRIMARY KEY,
	name      VARCHAR(22) UNIQUE,
	location  VARCHAR(50)
);

CREATE TABLE tb_dept3 
(
	id        INT(11) PRIMARY KEY,
	name      VARCHAR(22),
	location  VARCHAR(50),

	CONSTRAINT STH UNIQUE(name)
);

4.1.6 使用默认约束

CREATE TABLE tb_emp7 
(
	id      INT(11) PRIMARY KEY,
	name    VARCHAR(25) NOT NULL,
	deptId  INT(11) DEFAULT 1111, 
	salary  FLOAT
);

4.1.7 设置表的属性值自动增加

一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型

CREATE TABLE tb_emp8 
(
	id      INT(11) PRIMARY KEY AUTO_INCREMENT,
	name    VARCHAR(25) NOT NULL,
	deptId  INT(11), 
	salary  FLOAT
);

4.2 查看数据表的结构

4.2.1 查看表基本结构

DESCRIBE tb_dept1;
DESC     tb_emp1;

4.2.2 查看表详细结构语句

 SHOW CREATE TABLE tb_emp1;
 SHOW CREATE TABLE tb_emp1 \G **\G表示显示结构更直观

4.3 修改数据表

4.3.1 修改表名

ALTER TABLE tb_dept3 RENAME TO tb_deptment3;

4.3.2 修改字段的数据类型

ALTER TABLE tb_dept1 MODIFY name VARCHAR(30);

4.3.3 修改字段名

ALTER TABLE tb_dept1 CHANGE location loc      VARCHAR(50);
ALTER TABLE tb_dept1 CHANGE loc      location VARCHAR(60);

4.3.4 添加字段

ALTER TABLE tb_dept1 ADD managerId INT(10);
ALTER TABLE tb_dept1 ADD column1   VARCHAR(12) NOT NULL;
ALTER TABLE tb_dept1 ADD column2   INT(11)     FIRST;
ALTER TABLE tb_dept1 ADD column3   INT(11)     AFTER name;

4.3.5 删除字段

ALTER TABLE tb_dept1 DROP column2;

4.3.6 修改字段的排列位置

ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) FIRST;
ALTER TABLE tb_dept1 MODIFY column1 VARCHAR(12) AFTER location;

4.3.7 更改表的存储引擎

 ALTER TABLE tb_deptment3 ENGINE=MyISAM;

4.3.8 删除表的外键约束

CREATE TABLE tb_emp9 
(
    id         INT(11) PRIMARY KEY,
    name       VARCHAR(25),
    deptId     INT(11),
    salary     FLOAT,

    CONSTRAINT fk_emp_dept  FOREIGN KEY (deptId) REFERENCES tb_dept1(id)
);

ALTER TABLE tb_emp9 DROP FOREIGN KEY fk_emp_dept;

4.4 删除数据表

4.4.1 删除没有被关联的表

DROP TABLE IF EXISTS tb_dept2;

4.4.2 删除被其他表关联的主表

CREATE TABLE tb_dept2 
(
    id          INT(11) PRIMARY KEY,
    name        VARCHAR(22),
    location    VARCHAR(50)
);

CREATE TABLE tb_emp 
(
    id         INT(11) PRIMARY KEY,
    name       VARCHAR(25),
    deptId     INT(11), 
    salary     FLOAT,

    CONSTRAINT fk_emp_dept  FOREIGN KEY (deptId) REFERENCES tb_dept2(id)
);

ALTER TABLE tb_emp DROP FOREIGN KEY fk_emp_dept;
DROP TABLE tb_dept2;

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhy29563

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值