SQL入门教程(二):约束条件及表操作

前言

我是一个初学者,文中部分概念是按照自己的理解去解释的,可能会存在错误。表操作的代码,自己手打测试过的。话不多说,直接进入主题吧!

完整性约束

怎么理解完整性约束

对于初学者来说,完整性约束听起来感觉难以理解,其实完整性约束就是一种规则(限制),比如说保证数据是唯一的、要求数据限制在某些范围内或者是一些其他的限制条件。

比如说将员工的ID输入数据库,假如没有限制条件,有人随便写或者写错了,那么这条数据就没有任何用了,所以就得有硬性要求,保证数据的准确有效。

为什么要约束

就是为了防止不符合规范的数据进入数据库,确保库内数据的准确性和一致性。

都有哪些约束条件

约束条件 作用
主键约束 约束数据库中每条记录唯一
唯一性约束 约束数据库中每条记录唯一(与主键有点区别)
外键约束 确保表之间引用完整
NOT NULL 约束 不允许该字段存在空值,必须包含值
检查约束 限制列中值的范围
DEFAULT 约束 如没其他输入值,则向字段中插入默认值

主键约束

主键是由一个或多个列构成,作用在于表里的每条记录具有唯一值。

1.必须包含唯一值

2.不能包含NULL值

3.每个表都应该有主键,且只有一个

下面是操作主键约束的SQL语法:

  • 创建‘Exercise_tbl’表,将‘EX_ID’作为主键(PRIMARY KEY)。
CREATE TABLE Exercise_tbl
(
EX_ID CHAR(9) NOT NULL ,
EX_NAME VARCHAR(20) NOT NULL,
EX_PHONE VARCHAR(10) NULL
CONSTRAINT EXE_ID_PK PRIMARY KEY (EX_ID)
);
  • 撤销主键约束
ALTER TABLE Exercise_tbl
DROP PRIMARY KEY;
  • 表’Exercise_tbl’已经创建,为’EX_ID’添加主键约束。
--注意:使用 ALTER TABLE 添加主键时,必须在表首次创建时,主键列声明为不包含空值(即 NOT NULL)。

ALTER TABLE Exercise_tbl
ADD PRIMARY KEY (EX_ID);

唯一性约束

1.唯一性约束和主键约束类似,约束某个字段的值在记录中是唯一的。

2.每个表中只能存在一个主键,可以存在多个唯一性约束。

下面是操作唯一性约束的SQL语法:

  • 创建’Exercise_tbl_first’表,为’EX_NAME’创建唯一性约束(UNIQUE)。
CREATE TABLE Exercise_tbl_first
(
EX_ID CHAR(9) NOT NULL PRIMARY KEY,
EX_NAME VARCHAR(20) NOT NULL UNIQUE,
EX_PHONE VARCHAR(10) NULL
);
  • 撤销唯一性约束
ALTER TABLE exercise_tbl_first
DROP INDEX EX_NAME;
  • 表’Exercise_tbl_first’已经创建,为’EX_NAME’添加主键约束。
ALTER TABLE Exercise_tbl_first
ADD UNIQUE (EX_NAME);

外键约束

1.外键就是用于与另一张表的关联,用于保持数据的一致性。

2.外键是子表里的一个字段,引用的是父表里的主键。
该表帮助理解父子表关系
以上图表为例,假如需要在B表(字表)Ex_id 字段录入新的数据,必须保证A表(父表)Ex_id 字段存在这个数据,否则不能录入,这样保证了B表的数据引用完整,否则将会是垃圾数据。

下面只涉及外键约束的创建及删除,不涉及级联操作(因为我暂时还没搞很清楚)。

  • 创建’Exercise_tbl_second’表,为’EX_ID’创建外键约束(FOREIGN KEY)。
CREATE TABLE Exercise_tbl_second
(
EX_ID CHAR(9) NOT NULL,
EX_CITY VARCHAR(20) NOT NULL,
EX_ADDRESS VARCHAR(10) NULL,
CONSTRAINT Exe_ID_pk FOREIGN KEY (EX_ID) REFERENCES Exercise_tbl(EX_ID)
);

注释:该操作语句为 :CONSTRAINT 外键名字 FOREIGN KEY (子表字段名) REFERENCES 父表名(父表主键字段名)
  • 撤销外键约束
ALTER TABLE Exercise_tbl_second
DROP FOREIGN KEY Exe_ID_pk;
  • 表’Exercise_tbl_second’已经创建,为’EX_ID’添加外键约束。
ALTER TABLE Exercise_tbl_second
ADD FOREIGN KEY(EX_ID)
REFERENCES Exercise_tbl(EX_ID);

NOT NULL 约束

1.受约束字段不接受NULL值

2.受约束字段必须包含值

  • 创建’Exercise_tbl_third’表,为’EX_NAME’创建NOT NULL 约束。
CREATE TABLE Exercise_tbl_third
(
EX_ID CHAR(9) NOT NULL PRIMARY KEY,
EX_NAME VARCHAR(20) NOT NULL,
EX_PHONE VARCHAR(10) NULL
);
  • 撤销 NOT NULL 约束
ALTER TABLE Exercise_tbl_third
MODIFY EX_NAME VARCHAR(20) NULL;
  • 表’Exercise_tbl_third’已经创建,为’EX_NAME’添加 NOT NULL 约束。
ALTER TABLE Exercise_tbl_third
MODIFY EX_NAME VARCHAR(20) NOT NULL;

检查约束

1.为了限制列中值的范围

  • 创建’Exercise_tbl_fourth’表,为’EX_AGE’创建检查约束(CHECK)。
CREATE TABLE Exercise_tbl_fourth
(
EX_ID CHAR(9) NOT NULL PRIMARY KEY,
EX_AGE int NOT NULL,
EX_NAME VARCHAR(20) NOT NULL,
EX_PHONE VARCHAR(10) NULL,
CONSTRAINT CHK_Exe_AGE CHECK (EX_AGE > 0)
);
  • 撤销检查约束
ALTER TABLE Exercise_tbl_fourth
DROP CHECK CHK_Exe_AGE;
  • 表’Exercise_tbl_fourth’已经创建,为’EX_AGE’添加检查约束(CHECK)。
ALTER TABLE Exercise_tbl_fourth
ADD CONSTRAINT CHK_Exe_AGE CHECK (EX_AGE > 0);

默认约束

1.如没规定其他的值,则向列中插入默认值

  • 创建’Exercise_tbl_fifth’表,为’EX_CITY’创建默认约束(DEFAULT)。
CREATE TABLE Exercise_tbl_fifth
(
EX_ID CHAR(9) NOT NULL PRIMARY KEY,
EX_CITY VARCHAR(20) DEFAULT 'BEIJING' ,
EX_NAME VARCHAR(20) NOT NULL,
EX_PHONE VARCHAR(10) NULL,
);
  • 撤销默认约束
ALTER TABLE Exercise_tbl_fifth
ALTER EX_CITY DROP DEFAULT;
  • 表’Exercise_tbl_fifth’已经创建,为’EX_CITY’添加默认约束。
ALTER TABLE Exercise_tbl_fifth
ALTER EX_CITY SET DEFAULT 'BEIJING';

表操作

了解完约束条件,表的创建和约束条件有什么关系呢?

其实约束条件就是创建表的规则,遵守这个规则会使表设计的更加规范,防止错误的数据插入,确保数据的准确和完整,同时也便于后期的维护。

表的创建

下面以创建表Exercise_tbl_sixth为例子

CREATE TABLE Exercise_tbl_sixth
(
EX_ID CHAR(9) NOT NULL ,
EX_NAME VARCHAR(20) NOT NULL,
EX_PHONE VARCHAR(10) NULL,
CONSTRAINT EXE_ID_PK PRIMARY KEY (EX_ID)
);

表的修改

  • 新增列
-- 在表的最后一列位置新增列 EX_ADDRESS
alter table Exercise_tbl_sixth add column EX_ADDRESS varchar(20) not null;

-- 在指定列 EX_NAME 后面新增列 EX_ADDRESS
alter table Exercise_tbl_sixth add column EX_ADDRESS varchar(20) not null AFTER EX_NAME;

**基本规则:**如果表里有数据,此时添加的新列就不能定义为 NOT NULL。

如果想添加一条定义为 NOT NULL 的列,方法如下:

1.添加一个定义为NULL的列

2.在这个新列中插入数据

3.把列的定义修改为 NOT NULL

  • 删除列
ALTER TABLE Exercise_tbl_sixth DROP COLUMN EX_ADDRESS ;
  • 修改列属性

列属性包括数据类型、有效位数、标度、能否为空等

ALTER TABLE Exercise_tbl_sixth MODIFY
EX_PHONE VARCHAR(15) NULL;

表中EX_PHONE的长度由原来的的10变成了15

  • 修改列名
ALTER TABLE Exercise_tbl_fifth change name app_name VARCHAR(20) not null;
  • 修改表名
ALTER TABLE Exercise_tbl_fifth RENAME TO Exercise_tbl_five;

表的查询

  • 查询当前数据库下所有表名称
SHOW TABLES;
  • 查询某表的详细信息
DESC Exercise_tbl_sixth;

表的删除

DROP TABLE Exercise_tbl_sixth;

猜你喜欢

转载自blog.csdn.net/weixin_43167928/article/details/107611667