7 SQL的数据定义语句
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Select后的distinct表示在结果中去掉重复的sno。
7.5 SQL的数据操纵语句
例:查询每个学生的出生年份
select sno,2008-sage as birthyear from s; Select之后可以是简单运算 as 用于select 之后表示为某一属性取别名
7.5 SQL的数据操纵语句
第七章 SQL的数据定义与操纵
7.1 SQL的数据定义功能 7.2 SQL的数据定义语句 7.3 SQL Server2000的数据定义语句 7.4 SQL的数据操纵功能 7.5 SQL的数据操纵语句 7.6 SQL中的视图语句 7.7 SQL Server2000中的数据操纵及视图功能 本章小结 习题
7.5 SQL的数据操纵语句
SQL的删除功能
格式 delete from <基表> where <逻辑条件>
例22:删除学生“王林”的信息
delete from s where sname=‘王林’;
7.5 SQL的数据操纵语句
例23:删除计算机系学生的选课记录
delete from sc where ‘cs’= (select sdept from s where s.sno=sc.sno); 注: 删除操作可能会破坏参照完整性
7.2 SQL的数据定义语句
create table c (cno char(2), cname varchar(20), credit numeric); create table sc (sno char(4), cno char(2), grade smallint);
7.2 SQL的数据定义语句
7.1 SQL的数据定义功能
主要为应用系统定义数据库上的整体结构
模式,包括三个层次:
上层---模式层
关系数据库管理系统可以定义多个模式 每个模式对应一个应用系统 模式由若干个表、视图及索引组成
7.1 SQL的数据定义功能
中层---表结构层 基表
创建表 修改表 删除表
7.5 SQL的数据操纵语句
单连接 表间等值连接 在where子句中设置两表相同属性间的相等关系 例12:查询修读课程号为c1的所有学生的姓名 select sname from s,sc where s.sno=sc.sno and sc.cno=‘c1’;
7.5 SQL的数据操纵语句
视图
视图是建立在基表上的虚表 创建视图 删除视图
索引
创建索引 删除索引
7.1 SQL的数据定义功能
底层---列定义层 表中属性的定义
如列名的定义 列数据类型的定义
列的完整性约束定义
如列是否是主键或外键 列值是否允许为空 列间的约束表达式
7.2 SQL的数据定义语句
3 SQL的表定义语句
表的定义
语句
Create table <表名>(<列定义>[<列定义>]…)[其它 参数] 其中列定义形式如下: <列名> <数据类型>
7.2 SQL的数据定义语句
例:前面所创建的student数据库中有s,c,sc
三张表,试定义它们。 create table s (sno char(4), sname varchar(8), sage smallint, sex char(2), sdept char(2));
7.5 SQL的数据操纵语句
例18:查询修读课程号为c1的所有学生姓名
select sname from s where sno in (select sno from sc where cno=‘c1’);
7.5 SQL的数据操纵语句
例19:查询修读课程名为java的学生姓名
select sname from s where sno in (select sno from sc where cno in (select cno from c where cname=‘java’));
1 SQL的基本数据类型
7.2 SQL的数据定义语句
2 SQL的模式定义语句
模式定义 定义语句: create schema <模式名> authorization<用户名> 例如,学生数据库的模式可定义如下: create schema student authorization lin;
7.5 SQL的数据操纵语句
例4:查询年龄大于20的学生的学号和姓名
Select sno,sname From s Where sage>20;
7.5 SQL的数据操纵语句
常用谓词 between, like, null用于where子句中 Distinct ,as 用于select子句中 例5:查询所有选修了课程的学生学号 Select distinct sno From sc;
7.5 SQL的数据操纵语句
例8:查询名字的倒数第二字为“丽”的学
生的姓名及所在系 Select sname,sdept From s Where sname like ‘%丽_’;
7.5 SQL的数据操纵语句
例9:查询无课程分数的学生的学号和课程
号
select sno,cno from sc where grade is null; Null是测试属性值是否为空的谓词,其一般形式是: <列名> is [not] null
删除索引 语句 drop index <索引名> 删除名为xsno的索引 drop index xsno;
7.3 SQL Server2000中的数据定义语句
建立数据库
Create database student1;
删除数据库
Drop database student1;
7.4 SQL的数据操纵功能
例21:查询计算机系的学生以及年龄小于20的学
生 (select * from s where ቤተ መጻሕፍቲ ባይዱdept=‘cs’) union (select * from s where sage<20 );
7.5 SQL的数据操纵语句
2 SQL的更新语句 SQL的删除功能 SQL的插入功能 SQL的修改功能
7.5 SQL的数据操纵语句
限定比较谓词的使用
例20:查询成绩大于所有选修课程号c1的学
生成绩的学生学号 select sno from sc where grade > all (select grade from sc where cno=‘c1’);
7.5 SQL的数据操纵语句
查询间的运算语句
7.5 SQL的数据操纵语句
示例数据: S(sno,sname,sage,sex,sdept) C(cno,cname,credit) SC(sno,cno,grade)
7.5 SQL的数据操纵语句
SQL的基本查询语句
单表简单查询 例1:查询所有学生的情况 select * from s;
7.5 SQL的数据操纵语句
例16:查询全体学生情况,结果按学生年龄
降序排列 select * from s order by sage desc;
7.5 SQL的数据操纵语句
分层结构查询与集合谓词的使用
谓词in的使用 表示元素与集合之间的属于关系 例17:查询计算机系、数学系及物理系学生的姓名 select sname from s where sdept in (‘ma’,’cs’,’py’);
7.2 SQL的数据定义语句
表的删除 语句 drop table <表名> 例,删除s表 drop table s; 删除表后,表中的数据、在此表上建立的视图、索 引都将删除
7.2 SQL的数据定义语句
4 SQL的索引定义语句
建立索引 语句 create [unique][cluster] index <索引名> on
例13:查询修读课程名为”数据库”的所有
学生姓名 select sname from s,sc,c where s.sno=sc.sno and sc.cno=c.cno and cname=‘数据库’;
7.5 SQL的数据操纵语句
自连接
例14:查询至少选修了s5所修读的一门课的
学生学号 select first.sno from sc first,sc second where first.cno=second.cno and second.sno=‘s5’;
<表名>(<列名>[顺序]...)[其它参数]
Unique:唯一性索引,不允许两个元组在给定索引中
有相同的值。 Cluster:聚簇索引,索引项的顺序与表中记录的物理 顺序一致。 顺序:ASC, DESC
2 SQL的数据定义语句
例:在表s的sno上建立一个按升序排列的唯一性索引
xsno。 create unique index xsno on s (sno) asc;
表的更改 增加列 Alter table <表名>add<列名><数据类型> 例,在s中增加一个新的列sex Alter table s add sex char(2); 删除列 Alter table <表名>drop <列名> 例,在s中将sdept删除 Alter table s drop sdept;
数据查询功能
select
增、删、改功能
Insert, delete, update
其它功能
赋值
分类
运算
7.5 SQL的数据操纵语句
关系代数中的查询语句
求选修了c1号课程的学生姓名
∏sname(cno=c1(S SC))
7.5 SQL的数据操纵语句
1 SQL的查询语句 Select 列名 投影 连接 From 表名 选择 Where 选择条件
7.5 SQL的数据操纵语句
布尔表达式 not, and ,or 例10:查询计算机系年龄小于20的学生姓名 Select sname From s Where sdept=‘cs’ and sage<20; 例11:查询非计算机系或年龄不为20的学生姓名 Select sname From s Where not sdept=‘cs’ or not sage=20;
7.5 SQL的数据操纵语句
7.2 SQL的数据定义语句
模式删除 语句为 Drop schema <模式名>,<删除方式> 删除方式有两种:
Cascade,表示级联方式
Restrict,表示限制方式
删除学生数据库模式:
Drop schema student cascade;
7.2 SQL的数据定义语句
7.5 SQL的数据操纵语句
练习:
求每一门课程的间接先行课
select first.cno, second.preno from c as first, c as second where first.preno=second.cno;
7.5 SQL的数据操纵语句
结果排序
order
by <列名> [ASC/DESC] 例15:查询计算机系所有学生名单并按学号 顺序升序显示。 select sno,sname from s where sdept=‘cs’ order by sno asc;
*代表所有的列
例2:查询所有学生的姓名
select sname from s;
7.5 SQL的数据操纵语句
例3:查询学号为s01的学生学号与姓名
Select sno,sname From s
Where sno=‘s01’; Where后面可以使用比较符,包括=、<、>、>=、 <=、<>、!=
(不)在18-21岁的学生的姓名 例6:查询年龄
和年龄
Select sname,sage From s; where sage (not) between 18 and 21;
7.5 SQL的数据操纵语句
例7:查询姓“李”的学生的姓名及所在系
Select sname,sdept From s Where sname like ‘李%’; Like一般情况下与通配符% ,_一起使用 %表示任意长度的字符串,例a%b _表示任意单个字符,例a_b
7.5 SQL的数据操纵语句
例:查询每个学生的出生年份
select sno,2008-sage as birthyear from s; Select之后可以是简单运算 as 用于select 之后表示为某一属性取别名
7.5 SQL的数据操纵语句
第七章 SQL的数据定义与操纵
7.1 SQL的数据定义功能 7.2 SQL的数据定义语句 7.3 SQL Server2000的数据定义语句 7.4 SQL的数据操纵功能 7.5 SQL的数据操纵语句 7.6 SQL中的视图语句 7.7 SQL Server2000中的数据操纵及视图功能 本章小结 习题
7.5 SQL的数据操纵语句
SQL的删除功能
格式 delete from <基表> where <逻辑条件>
例22:删除学生“王林”的信息
delete from s where sname=‘王林’;
7.5 SQL的数据操纵语句
例23:删除计算机系学生的选课记录
delete from sc where ‘cs’= (select sdept from s where s.sno=sc.sno); 注: 删除操作可能会破坏参照完整性
7.2 SQL的数据定义语句
create table c (cno char(2), cname varchar(20), credit numeric); create table sc (sno char(4), cno char(2), grade smallint);
7.2 SQL的数据定义语句
7.1 SQL的数据定义功能
主要为应用系统定义数据库上的整体结构
模式,包括三个层次:
上层---模式层
关系数据库管理系统可以定义多个模式 每个模式对应一个应用系统 模式由若干个表、视图及索引组成
7.1 SQL的数据定义功能
中层---表结构层 基表
创建表 修改表 删除表
7.5 SQL的数据操纵语句
单连接 表间等值连接 在where子句中设置两表相同属性间的相等关系 例12:查询修读课程号为c1的所有学生的姓名 select sname from s,sc where s.sno=sc.sno and sc.cno=‘c1’;
7.5 SQL的数据操纵语句
视图
视图是建立在基表上的虚表 创建视图 删除视图
索引
创建索引 删除索引
7.1 SQL的数据定义功能
底层---列定义层 表中属性的定义
如列名的定义 列数据类型的定义
列的完整性约束定义
如列是否是主键或外键 列值是否允许为空 列间的约束表达式
7.2 SQL的数据定义语句
3 SQL的表定义语句
表的定义
语句
Create table <表名>(<列定义>[<列定义>]…)[其它 参数] 其中列定义形式如下: <列名> <数据类型>
7.2 SQL的数据定义语句
例:前面所创建的student数据库中有s,c,sc
三张表,试定义它们。 create table s (sno char(4), sname varchar(8), sage smallint, sex char(2), sdept char(2));
7.5 SQL的数据操纵语句
例18:查询修读课程号为c1的所有学生姓名
select sname from s where sno in (select sno from sc where cno=‘c1’);
7.5 SQL的数据操纵语句
例19:查询修读课程名为java的学生姓名
select sname from s where sno in (select sno from sc where cno in (select cno from c where cname=‘java’));
1 SQL的基本数据类型
7.2 SQL的数据定义语句
2 SQL的模式定义语句
模式定义 定义语句: create schema <模式名> authorization<用户名> 例如,学生数据库的模式可定义如下: create schema student authorization lin;
7.5 SQL的数据操纵语句
例4:查询年龄大于20的学生的学号和姓名
Select sno,sname From s Where sage>20;
7.5 SQL的数据操纵语句
常用谓词 between, like, null用于where子句中 Distinct ,as 用于select子句中 例5:查询所有选修了课程的学生学号 Select distinct sno From sc;
7.5 SQL的数据操纵语句
例8:查询名字的倒数第二字为“丽”的学
生的姓名及所在系 Select sname,sdept From s Where sname like ‘%丽_’;
7.5 SQL的数据操纵语句
例9:查询无课程分数的学生的学号和课程
号
select sno,cno from sc where grade is null; Null是测试属性值是否为空的谓词,其一般形式是: <列名> is [not] null
删除索引 语句 drop index <索引名> 删除名为xsno的索引 drop index xsno;
7.3 SQL Server2000中的数据定义语句
建立数据库
Create database student1;
删除数据库
Drop database student1;
7.4 SQL的数据操纵功能
例21:查询计算机系的学生以及年龄小于20的学
生 (select * from s where ቤተ መጻሕፍቲ ባይዱdept=‘cs’) union (select * from s where sage<20 );
7.5 SQL的数据操纵语句
2 SQL的更新语句 SQL的删除功能 SQL的插入功能 SQL的修改功能
7.5 SQL的数据操纵语句
限定比较谓词的使用
例20:查询成绩大于所有选修课程号c1的学
生成绩的学生学号 select sno from sc where grade > all (select grade from sc where cno=‘c1’);
7.5 SQL的数据操纵语句
查询间的运算语句
7.5 SQL的数据操纵语句
示例数据: S(sno,sname,sage,sex,sdept) C(cno,cname,credit) SC(sno,cno,grade)
7.5 SQL的数据操纵语句
SQL的基本查询语句
单表简单查询 例1:查询所有学生的情况 select * from s;
7.5 SQL的数据操纵语句
例16:查询全体学生情况,结果按学生年龄
降序排列 select * from s order by sage desc;
7.5 SQL的数据操纵语句
分层结构查询与集合谓词的使用
谓词in的使用 表示元素与集合之间的属于关系 例17:查询计算机系、数学系及物理系学生的姓名 select sname from s where sdept in (‘ma’,’cs’,’py’);
7.2 SQL的数据定义语句
表的删除 语句 drop table <表名> 例,删除s表 drop table s; 删除表后,表中的数据、在此表上建立的视图、索 引都将删除
7.2 SQL的数据定义语句
4 SQL的索引定义语句
建立索引 语句 create [unique][cluster] index <索引名> on
例13:查询修读课程名为”数据库”的所有
学生姓名 select sname from s,sc,c where s.sno=sc.sno and sc.cno=c.cno and cname=‘数据库’;
7.5 SQL的数据操纵语句
自连接
例14:查询至少选修了s5所修读的一门课的
学生学号 select first.sno from sc first,sc second where first.cno=second.cno and second.sno=‘s5’;
<表名>(<列名>[顺序]...)[其它参数]
Unique:唯一性索引,不允许两个元组在给定索引中
有相同的值。 Cluster:聚簇索引,索引项的顺序与表中记录的物理 顺序一致。 顺序:ASC, DESC
2 SQL的数据定义语句
例:在表s的sno上建立一个按升序排列的唯一性索引
xsno。 create unique index xsno on s (sno) asc;
表的更改 增加列 Alter table <表名>add<列名><数据类型> 例,在s中增加一个新的列sex Alter table s add sex char(2); 删除列 Alter table <表名>drop <列名> 例,在s中将sdept删除 Alter table s drop sdept;
数据查询功能
select
增、删、改功能
Insert, delete, update
其它功能
赋值
分类
运算
7.5 SQL的数据操纵语句
关系代数中的查询语句
求选修了c1号课程的学生姓名
∏sname(cno=c1(S SC))
7.5 SQL的数据操纵语句
1 SQL的查询语句 Select 列名 投影 连接 From 表名 选择 Where 选择条件
7.5 SQL的数据操纵语句
布尔表达式 not, and ,or 例10:查询计算机系年龄小于20的学生姓名 Select sname From s Where sdept=‘cs’ and sage<20; 例11:查询非计算机系或年龄不为20的学生姓名 Select sname From s Where not sdept=‘cs’ or not sage=20;
7.5 SQL的数据操纵语句
7.2 SQL的数据定义语句
模式删除 语句为 Drop schema <模式名>,<删除方式> 删除方式有两种:
Cascade,表示级联方式
Restrict,表示限制方式
删除学生数据库模式:
Drop schema student cascade;
7.2 SQL的数据定义语句
7.5 SQL的数据操纵语句
练习:
求每一门课程的间接先行课
select first.cno, second.preno from c as first, c as second where first.preno=second.cno;
7.5 SQL的数据操纵语句
结果排序
order
by <列名> [ASC/DESC] 例15:查询计算机系所有学生名单并按学号 顺序升序显示。 select sno,sname from s where sdept=‘cs’ order by sno asc;
*代表所有的列
例2:查询所有学生的姓名
select sname from s;
7.5 SQL的数据操纵语句
例3:查询学号为s01的学生学号与姓名
Select sno,sname From s
Where sno=‘s01’; Where后面可以使用比较符,包括=、<、>、>=、 <=、<>、!=
(不)在18-21岁的学生的姓名 例6:查询年龄
和年龄
Select sname,sage From s; where sage (not) between 18 and 21;
7.5 SQL的数据操纵语句
例7:查询姓“李”的学生的姓名及所在系
Select sname,sdept From s Where sname like ‘李%’; Like一般情况下与通配符% ,_一起使用 %表示任意长度的字符串,例a%b _表示任意单个字符,例a_b