数据库学习笔记之修改表结构
这次笔记大部分是在上一次的基础上写的,用到的表还是上一个笔记创建的几个表,上一个笔记。
一般在定义完表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用ALTER TABLE来实现。
具体语法
ALTER TABLE <表名>
[ ALTER COLUMN <列名> <新数据类型> ]
| [ ADD [COLUMN] <列名> <数据类型>
| [ DROP COLUMN <列名> ]
| [ ADD PRIMARY KEY ( 列名 [ ,… n] ) ]
| [ ADD FOREIGN KEY ( 列名 )
REFERENCES 表名 ( 列名 ) ]
几个例子
1、为Student表添加“专业”列,此列的定义为:Spec char(10),允许空
修改之前表的结构:
修改之后:
实现语句:
ALTER TABLE Student ADD Spec CHAR(10) NULL
2、将新添加的“专业”列的类型改为char(20)
实现语句:
ALTER TABLE Student ALTER COLUMN Spec CHAR(20);
3、删除新添加的“专业”列
删除前:
删除后:
实现语句:
ALTER TABLE Student DROP COLUMN Spec;
添加约束
1、PRIMARY KEY 约束:
说明:保证实体完整性,每个表有且只有一个PRIMARY KEY 约束
格式:
ALTER TABLE 表名
ADD [ CONSTRAINT 约束名 ]
PRIMARY KEY ( 列名 [ ,… n] )
例:对雇员表添加主码约束:
ALTER TABLE Employee
ADD CONSTRAINT PK_EMP
PRIMARY KEY (e_num)
2、UNIQUE 约束
说明:确保在非主键列中不输入重复值;应用在客观具有唯一性质的列上,如身份证号等
格式:
ALTER TABLE 表名
ADD [ CONSTRAINT 约束名 ]
UNIQUE ( <列名> [,… n ] )
例:为雇员表的“电话号码”列添加UNIQUE约束:
ALTER TABLE Employee
ADD CONSTRAINT UK_SID
UNIQUE (tel_num)
3、FOREIGN KEY约束
说明:用于建立和加强两个表数据之间的连接的一列或多列
格式:
ALTER TABLE 表名
ADD [ CONSTRAINT 约束名 ]
FOREIGN KEY (<列名>)
REFERENCES 引用表名 ( < 列名 > )
例:为雇员表的工作编号添加外码引用约束,此列引用工作表的工作编号列
ALTER TABLE Employee
ADD CONSTRAINT FK_job_id
FOREIGN KEY (w_id)
REFERENCES Workk (w_id)
4、DEFAULT约束
说明:当向表中插入数据时,如果没有定义了DEFAULT的列提供值,则是隐式要求为此列使用默认值;一个DEFAULT只能约束一列
格式:
ALTER TABLE 表名
ADD [ CONSTRAINT 约束名 ]
DEFAULT 默认值 FOR 列名
例:定义雇员表的工资的默认值为1000
ALTER TABLE Empolyee
ADD CONSTRAINT DF_SALARY
DEFAULT 1000 FOR salary
5、CHECK约束
说明:通过限制输入到列中的值来强制域的完整性;可定义同表多列之间的约束关系
格式:
ALTER TABLE 表名
ADD [ CONSTRAINT 约束名 ]
CHECK ( 逻辑表达式 )
例:限制雇员表的工资不小于500
ALTER TABLE Employee
ADD CONSTRAINT CHK_Salary
CHECK ( 工资 >= 500 )
例:限制工作表的最低工资不大于最高工资
ALTER TABLE Workk
ADD CONSTRAINT CHK_Job_Salary
CHECK ( low_s <= high_s )
总结:
其实语法并不复杂,就是容易搞混。。。。。