赞
踩
本节主要说明基本表的定义,删除 与修改
用到的命令主要是SQL语句中数据定义相关的指令
即:create drop alter 只有他们才可以对表进行修改
基本格式为:
create table 表名(
列名 数据类型 列级完整性约束,
列名 数据类型 列级完整性约束,
。。。,
表级完整性约束
)
create table student
(Sno varchar(10) primary key,
Sname varchar(10),
Sex varchar(5),
Sage smallint,
Sdept char(10)
);
这就创建了有个学生表 表的内容有
学号
学生姓名
性别
年龄
专业
如图:
primary key 的意思是这个属性是主键
语句1 就是表的创建语句
语句2 是表的查询语句
因为我们只创建表 没有添加数据 所以查询结果是空
语句3 是显示表结构
Sno varchar(10) primary key, 这句话中 Sno 是列名 然后是这个列对应的字段类型 然后是列级完整性约束条件
其中 约束条件可有可无 但是要有主键
create table Course(
Cno char(10) primary key,
Cname char(40) not Null, /*课程名*/
Cpno char(10), /*选修课*/
foreign key(Cpno) references Course(Cno),
Ccredit smallint
);
上述定义说明 参照表和被参照表可以是同一个表
sql语言 是不区分大小写的
create table SC(.
Sno char(10),
Cno char(10),
Grage smallint,
primary key(Sno,Cno),/*主键是两个属性构成 必须作为表级完整性约束定义*/
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);
这个SC的表 叫做关系表 一般来说可以用来做表与表之间多对多关系的映射
数据类型 | 含义 |
---|---|
char(n) character(n) | 长度为n的定长字符串 |
varchar(n) var character(n) | 度为n的变长字符串 |
clob | 字符串大对象 |
blob | 二进制大对象 |
int integer | 长整型 4字节 |
smallint | 短整型 2字节 |
bigint | 大整数 8字节 |
number(p,d) | 定点数 长度为p 小数部分有d位数字 |
decimal(p,d) dec(p,d) | 同上 |
real | 取决于机器精度的单精度浮点数 |
double precision | 取决于机器精度的双精度浮点数 |
float(n) | 可选精度的浮点数 精度至少是n位数字 |
Boolean | 逻辑布尔量 |
data | 日期 包括年月日 格式 yyyy-mm–dd |
time | 时间 包含一日的时分秒 格式:HH:MM:SS |
timestamp | 时间戳 |
interval | 时间间隔类型 |
表结构不稳定 需求变更 所以设计表的时候尽量长点脑子 不要经常修改
基本格式为
alter table 表名
[
add column 新列名 数据类型 完整性约束
add 表级完整性约束
drop column 列名 cascade|restrict
drop constraint 完整性约束名 cascade|restrict
alter column 列名 数据类型
]/* 实际使用没有中括号*/
说明:
eg1: 向学生表中添加入学时间 其数据类型是时间类型
alter table Student add column Sentrance data;
新增加的列全部为空值
其中 column 可有可无的
eg2: 删除列
eg3:修改列的数据类型 modify
alter table student modify column Sentrance int; /把原来的Sentrance 列的属性变为int/
eg4: 同时改变列名和数据类型 change
alter table student change Sentrance sen varchar(10);
eg5: 增加完整性约束条件
alter table student add unique(sen);
eg6: 增加非空约束
alter table student modify column sen int not null;
alter table student drop index sen;
因为上面的例子中我们给列 sen 添加了唯一约束 unique 这样我们在插入同样的数据的时候就会报错,
所以我们需要删除唯一约束 也就是上面的语句
接下来我们通过建立stu 表 不设主键
create table stu(
Sno char(10),
Sname char(10),
Sex char(10),
Sage smallint(6),
Sdept char(10),
sen char(10));
表结构如图:
alter table stu modify Sno char(10) not null;
alter table stu modify Sno char(10) primary key;
insert into stu select * from student;
delete from student;
alter table student add foreign key(sen) references Course(Cno);
外键添加成功
基本语法
drop table 表名 [restrict|cascade]
restrict 如果有对象引用了这个列或者表 那么就不能删除这个表 cascade就是可以删除同时相关的依赖也都删除,例如SC表的主键和student关联了 那么就不能删除了 ,如果采用 drop table student cascade ;进行删除
那么就会删除SC表 默认的删除是drop table student restrict ;restrict 可以不写
注意mysql 不支持删除有外键关联的表
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。