数据库(4)

8.数据库表的处理

8.1 修改字段的名字以及数据类型和约束

alter table 表名 change 旧字段名 新字段名 数据类型和约束;

8.2 只修改字段的数据类型及约束

alter table 表名 modify 字段名 数据类型及约束;

8.3 增加字段

alter table 表名 add 字段名 数据类型及约束;

8.4 删除字段

alter table 表名 drop 字段名;

8.5 修改数据库表名

alter table 旧表名 rename to 新表名 ;

8.6 表的复制

8.6.1 只复制表的结构

create table 表名 like 被复制表名;

8.6.2 复制表结构和数据

create table 表名 
select * from 被复制表名;

8.6.3 复制部分数据

create table 表名
select * from 被复制表名 where 条件;

复制符合条件的指定字段和数据
create table 表名
select 字段名 from 被复制表名 where 条件;

复制指定字段,不带数据
create table 表名
select 字段名 from 被复制表名 where 条件但恒不成立;

注意:
多个字段之间用','隔开
如果不需要数据在where后加恒不成立的条件,例如 0=1

9.数据约束

9.1 常见的数据约束

约束说明
PRIMARY KEY主键,保证数据的唯一性,并且是非空,物理上的储存的顺序
default默认值,保证这个字段也有默认值的存在,当没有填写该字段的时候,使用的是默认值,如果填写则以填写的为准
not null非空约束,保证了当前的字段不允许存在空值
unique唯一值约束,但是可以为空
check检查,但是不支持
FOREIGN KEY外键,限制两个表的关系,约束该字段的值必须来自与之关联的主表的值,对关系字段进行约束,当关系字段填写数据的时候,会在关联的数据表中查询该值是否存在,如果存在则填写成功,如果不存在则填写失败抛出异常

9.2 创建约束的时间

1.创建表的时候

2.修改表的时候

3.必须在插入数据之前

9.3 约束的分类

分类说明
字段约束语法上都支持,但是外键约束是没有效果的
表级约束除了非空、默认,其他都支持

9.3.1 字段约束

create table userinfo(
id int primary key,
username varchar(20) not null,
gender varchar(3) check(gender='男生' or gender='女生'),
phone char(11) unique,
age int default 18,
address references address(id))#外键

create table address(
id int primary key,
pname varchar(50) not null
)

直接在字段后加约束
外键和check不生效

9.3.2 表级约束

create table newuserinfo(
id int ,
username varchar(20) ,
gender varchar(3),
phone char(11) ,
age int  ,
adress int

constraint pkey primary key(id),
constraint uqkey unique(phone),
constraint ck check(gender = '男' or gender = '女'),
constraint fk foreign key(address) references address(id),  外键

) 

在最后设置约束

9.3.3 通用格式

create table userinfo2(
id int primary key,
username varchar(20) not null,
gender varchar(3),
phone char(11) unique,
age int default 18,
address int,

constraint newfk foreign key(address) references address(id))

除了外键使用表级约束,其他使用字段约束

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NxSSRtGA-1599644330977)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200903164911369.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值