DAV数据库 2019-10-23
SQL数据定义
DDL
sql的DDL不仅能定义一组关系,还能定义每个关系的信息,包括:
基本类型
sql支持的常用类型:
基本模式定义
create table定义关系
create table student (s_id varchar(8), s_name varchar(20), dept_ment varchar(20), class varchar(10), dormitory varchar(20), primary key (s_id), foreign key (dept_name) references department);
定义了student关系,包含学生ID,姓名,院系,班级,寝室。在该关系中,s_id为主键,用 primary key (s_id) 指出;
dept_name是外键,用 foreign ket (dept_name) references department 指出,并且 dept_name 是 department 的主键;
insert into插入元组
insert into student values(20229991,‘Wang Yang‘,‘CS‘,‘CS-01‘,‘B4-202‘);
也可以多行插入
insert into student values(20229992,‘Ming Wang‘,‘Math‘,‘Math-02‘,‘P2-301‘), (20229993,‘Zhang Shui‘,‘CS‘,‘CS-02‘,‘B4-411‘), (20229993,‘Liu Ping‘,‘CS‘,‘CS-03‘,‘B4-518‘);
在这里说明一下,只有且必须在语句结束时打分号
如果不记得顺序,也可以这样插入
insert into student(s_name,s_id,dept_name,dormitory,class) values(‘Li Mei‘,20229913,‘Finance‘,‘G2-117‘,‘Fi-09‘);
在查询的基础上插入元组。比如说,让每个高考成绩在700以上的学生成为优异生奖学金获得者,且标注奖学金6000
insert into prise select s_id,s_name,dept_name,6000 from studnet where CET_grade=6000;
delete 删除元组
delete from student;
删除关系student中所有元组,但student模式还存在;
drop 删除元组
drop table student;
删除student所有元组,删除student的模式,除非create table 重建student,否则不能向其中插入元组;
条件删除
delete from r where P;
从关系r中删除满足条件P的元组
/*从关系student中删除s_name为Wang gang的元组*/ delete from student where s_name=‘Wang gang‘;/*从关系student中删除s_id在20229950到20229999中间的学生元组*/ delete from student where s_id between 20229950 and 20229999; /*从关系student中删除一些学生元组,他们的系在一教办公*/ delete from student where dept_name in (select dept_name from department where building = ‘DS1___%‘); /*删除高考成绩低于全体学生平均分的学生元组*/ delete from student where CET_grade < (select arg(CET_grade) from student);
通常delete可以配合查询语句删除特定元组,比较自由
alter table 为已有关系增加(减少)属性
alter table student add grade D;
向关系student中增加属性grade,其域为D;
alter table student drop grade;
从关系student中去掉属性grade,不过这条命令在很多数据库系统中不被支持;