数据库学习笔记之修改表结构

数据库学习笔记之修改表结构

这次笔记大部分是在上一次的基础上写的,用到的表还是上一个笔记创建的几个表,上一个笔记

一般在定义完表之后,如果需求有变化,比如添加列、删除列或修改列定义,可以使用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 )

总结:
其实语法并不复杂,就是容易搞混。。。。。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值