ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL学习——对表的操作(创建、删除、修改、添加约束)

2022-09-16 16:03:22  阅读:257  来源: 互联网

标签:对表 列名 MySQL 约束 添加 表名 TABLE 主键 ALTER


  本章将介绍MySQL中对表的一系列操作,主要涉及到使用DDL语言对表进行修改。

1、创建表

  前一篇文章提到了,我们在创建表之前需要使用 use 数据库名 来指定对哪一个数据库进行操作。之后再使用创建表的语法结构

CREATE TABLE 表名
(列名1 列类型,
 列名2 列类型,
 ...
);

示例:创建一个employees表,并包含雇员id,雇员名字,雇员薪水三个字段。

USE test01; 

CREATE TABLE employees(
      employee_id INT,
      last_name VARCHAR(30),
      salary float(8,2)
)

  这里注意在SQL脚本的第一句一定要使用USE 数据库名,来指定接下来的操作是对那个数据库进行操作的。

  我们可以使用show tables命令看看当前操作的库下有哪些表。

2、删除表

语法结构:

DROP TABLE 表名

3、使用DDL语句修改表

 3.1、修改表名

ALTER TABLE 旧表名 RENAME 新表名

 3.2、修改列名

ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 数据类型

  可以看到我们在修改列名的同时还可以顺便改掉该列的数据类型。

 3.3、修改列数据类型

ALTER TABLE 表名 MODIFY 列名 数据类型

 3.4、添加新列

ALTER TABLE 表名 
ADD COLUMN 新列名 类型,
[ADD COLUMN 新列名2 类型2,...]

 3.5、删除列

ALTER TABLE 表名 
DROP COLUMN 列名
[DROP COLUMN 列名2,...]

4、约束

  在关系型数据库中常见的有以下五种约束:

  • 非空约束(NOT NULL):指定列不能包含空值
  • 唯一性约束(UNIQUE):指定列或者列组合的值对于表中的行是唯一的
  • 主键约束(PRIMARY KEY):表每一行的唯一表示,同时包含非空约束和唯一性约束
  • 外键约束(FOREIGN KEY):在表和引用表的一个列之间建立并且强制建立一个外键关系
  • 用户自定义约束(CHECK):指定一个必须为真的条件

  其中第六种用户自定义约束在MySQL中是没有的,因此我们下面主要学习前4中约束类型

 4.1、创建表时添加约束

  我们可以通过以下代码来查看指定表的现有的约束信息:

SHOW KEYS FROM 表名

  我们通过下面两个例子来展示如何在创建表时增加上面提到的那些约束。

示例一

  创建一个departments表,其中包含有department_id字段,该列为主键(主键约束)且具备自动增长,department_name列不允许重复(唯一性约束),location_id列不允许包含有空值(非空约束)。

USE test01;
CREATE TABLE departments(
      department_id INT PRIMARY KEY AUTO_INCREMENT,
      department_name VARCHAR(30) UNIQUE,
      location_id INT NOT NULL
)

  其中PRIMARY KEY表示该列是主键约束,AUTO_INCREMENT表示该列自动增长,UNIQUE表示唯一性约束,NOT NULL表示非空约束。要注意到采用这种方式(直接在字段类型后增加关键字的方式指定约束,这样的约束名是由MySQL自动设定的)。

  注意:自动增长必须是整数类型,一个表中只允许一个列自动增长,只有具备主键约束或唯一性约束的列才能设定自动增长。自动增长不属于约束,因此添加或者删除自动增长需要使用MODIFY关键字,代码如下:

-- 添加自动增长
ALTER TABLE 表名 MODIFY 列名 类型 AUTO_INCREMENT
-- 删除自动增长
ALTER TABLE 表名 MODIFY 列名 类型

  我们可以通过DESC departments查看该表的字段详细信息,如下图:

 示例二

  创建employees表,包含employees_id该列为主键且自动增长,last_name列不允许由空值,email列不允许有重复不允许包含空值,dept_id为外键参照departments表的主键。

USE test01;
CREATE TABLE employees(
      employees_id INT PRIMARY KEY AUTO_INCREMENT,
      last_name VARCHAR(30) NOT NULL,
      email VARCHAR(40) UNIQUE NOT NULL,
      dept_id INT,
      CONSTRAINT emp_fk FOREIGN KEY(dept_id) REFERENCES departments(department_id)
)

  这里我们使用外键约束的语法是,在定义完所有的列之后,在最后使用:

CONSTRAINT 约束名 FOREIGN KEY(外键约束的列名) REFERENCES 参照表的表名(参照列的列名)

 4.2、添加 / 删除 表的约束

  添加/删除语法结构如下:

-- 添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(列名)
-- 添加非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL
-- 添加唯一性约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)
-- 添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 参照表表名(参照列列名)


-- 删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY
-- 删除非空约束
ALTER TABLE 表名 MODIFY 列名 类型 NULL
-- 删除唯一性约束
ALTER TABLE 表名 DROP KEY 约束名
-- 删除外键第一步
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
-- 删除外键第二步
ALTER TABLE 表名 DROP INDEX 索引名(同外键约束名)

  注意,删除主键的时候要注意先保证该主键列没有自动增长的功能,如果有则要先删除自动增长才能删除主键约束。

 

标签:对表,列名,MySQL,约束,添加,表名,TABLE,主键,ALTER
来源: https://www.cnblogs.com/CircleWang/p/16699791.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有