第四章关系数据库标准语言SQL语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.3.1单表查询
(4)字符匹配 谓词LIKE可以用来进行字符串的匹配。 [NOT] LIKE ‘<匹配串>’[ESCAPE ‘<转换字符码>’] %代表任意长度的字符串(长度可以为0); -(下横线)代表任意单个字符。
4.3.1单表查询
例14.查询学号为200215121的学生的详细情况。 select * from student where sno like '200215121'; 例15.查询所有姓刘的学生的姓名、学号和性别。 select * from student where sname like '刘%‘; 例16.查询姓“欧阳”且全名为3个汉字的学生的 姓名。 select sname from student where sname like '欧阳_';
4.2数据定义
二、删除索引 DROP INDEX <索引名> 例:索引示例。 create table abc ( a int, b int );

create unique index abcindex on abc(a desc);
drop index abc.abcindex; create clustered index abcindex on abc(a desc);
4.3.1单表查询
二、选择表中的若干元组 1.消除取值重复的行 例6.查询选修了课程的学生学号。 select sno from sc; select distinct sno from sc; 2.查询满足条件的元组 (1) 比较大小 例7.查询计算机科学系全体学生的名单。 select sname from studenห้องสมุดไป่ตู้ where sdept='CS';
4.3.1单表查询
2.查询全部列 例3.查询全体学生的详细记录。 select * from student; 3.查询经过计算的值 例4.查询全体学生的姓名及其出生年份。 select sname,2012-sage from student; 例5.查询全体学生的姓名、出生年份和所在的院系, 要求用小写字母表示所有系名。 select sname,'year of birth:',2012sage,lower(sdept) from student;
例:将年龄的数据类型由smallint改为int。 alter table Student alter column sage int;
4.2数据定义
例:增加课程名必须取唯一值的约束。 alter table course add unique(cname);
4.2数据定义
4.2.3删除基本表 DROP TABLE <表名>[RESTRICT|CASCADE] RESTRICT:该表的删除是有限制条件的。欲删除的 基本表不能被其他表的约束所引用(如 CHECK,FOREIGN KEY等约束),不能有视图,不能 有触发器,不能有存储过程或函数等。如果存在这些 依赖该表的对象,则此表不能被删除。 CASCADE:该表的删除没有限制条件。在删除基本 表的同时,相关的依赖对象,例如视图,都将被一起 删除。 (SQL Server 2000中不支持RESTRICT|CASCADE)
4.1.2 SQL的特点
SQL功能 动词 五、语言简洁易学 SQL功能极强,但由于 设计巧妙,语言十分简洁, 数据查询 SELECT 完成核心功能只用了9个动 词。SQL接近英语口语, 数据定义 CREATE,DROP, ALTER 因此容易学习,容易使用。
数据操纵 数据控制
INSERT,UPDATE, DELETE GRANT,REVOKE
4.2数据定义
4.2.3索引的建立与删除 建立索引是加快查询速度的有效手段。用户可以 根据应用环境的需要,在基本表上建立一个或多 个索引,以提供多种存取路径,加快查找速度。 建立与删除索引有数据库管理员DBA或表的属主, 负责完成。
4.2数据定义
4.2.3索引的建立与删除 一、建立索引 CREATE [UNIQUE][CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名> [<次序>]]…) <次序>索引的排列次序,可选ASC或DESC,缺省值 为ASC。 UNIQUE表明此索引的每一个索引值只对应唯一的数 据记录。 CLUSTER表示要建立的索引是聚簇索引。所谓聚簇 索引是指索引项的顺序与表中记录的物理顺序一致的 索引组织。
4.3数据查询
SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]… FROM <表名或视图名>[,<表名或视图名>]… [WHERE <条件表达式>] [GROUP BY <列名1>[HAVING<条件表达式>]] [ORDER BY <列名2>[ASC|DESC]];
4.3.1单表查询
单表查询是指仅涉及一个表的查询。 一、选择表中的若干列 1.查询指定列 例1.查询全体学生的学号和姓名。 select sno,sname from student; 例2.查询全体学生的姓名、学号、所在系。 select sname,sno,sdept from student;
4.3.1单表查询
(3)确定集合 例12.查询计算机科学系(CS)、数学系(MA) 和信息系(IS)学生的姓名和性别。 select sname,ssex from student where sdept in('CS','MA','IS'); 例13.查询既不是计算机科学系、数学系,也不 是信息系的学生的姓名和性别。 select sname,ssex from student where sdept not in('CS','MA','IS');
4.3.1单表查询
(5)涉及空值的查询 例21.查询缺少成绩的学生的学号和相应的课程号。 select sno,cno from sc where grade is null; 例22.查所有有成绩的学生学号和课程号。 select sno,cno from sc where grade is not null;
4.3.1单表查询
例19.查询DB_Design课程的课程号和学分。 select cno,ccredit from course where cname like 'DB\_Design' escape '\'; 例20.查询以“DB_”开头,且倒数第3个字符为i 的课程的详细情况。 select * from course where cname like 'DB\_%i__' escape '\';
第四章 关系数据库标准语言SQL
4.1 4.2 4.3 4.4 4.5 SQL概述 数据定义 数据查询 数据更新 视图
第四章 关系数据库标准语言SQL
4.1 SQL 概述 SQL(Structed Query Language),即结构化 查询语言,是关系数据库的标准语言,SQL是一个 通用的、功能极强的关系数据库语言。
4.1.1 SQL的产生与发展
SQL是在1974年由Boycee和Chamberlin提出的,并在 IBM公司研制的关系数据库管理系统原型System R上实 现。 由于SQL简单易学,功能丰富,深受用户及计算机工业 界欢迎,因此被数据库厂商所采用。经各公司的不断修 改、扩充和完善,SQL得到业界的认可。 1986年10月美国国家标准局的数据库委员会X3H2批准 了SQL作为关系数据库语言的美国标准。同年公布了 SQL标准文本。 1987年国际标准化组织也通过了这一标准。 SQL标准从1986年公布以来随着数据库技术的发展不断 发展,不断丰富。
4.3.1单表查询
例8.查询所有年龄在20岁以下的学生姓名及其年龄。 select sname,sage from student where sage<20; 例9.查询考试成绩有不及格的学生的学号。 select distinct sno from sc where grade<60;
4.3.1单表查询
4.3.1单表查询
例17.查询名字中第2个字为“阳”字的学生的姓 名和学号。 select sname,sno from student where sname like '_阳%'; 例18.查询所有不姓刘的学生姓名。 select sname from student where sname not like '刘%';
4.1.2 SQL的特点
三、面向集合的操作方式 SQL采用面向集合的操作方式,不仅操作对象、查找结 果可以是元组的集合,而且一次插入、删除、更新操作 的对象也可以是元组的集合。 四、以同一种语法结构提供多种使用方式 作为独立语言,它能够独立地用于联机交互的使用方式, 用户可以在终端键盘上直接键入SQL命令对数据库进行 操作; 作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C, C++,Java)程序中,供程序员设计程序时使用。
4.2数据定义
例:建立一个“课程”表Course。 create table Course ( cno char(4) primary key, cname char(40), cpno char(4), ccredit smallint, foreign key (cpno) references Course(cno) );
(2)确定范围 例10.查询年龄在20-23岁(包括20岁和23岁)之 间的学生的姓名、系别和年龄。 select sname,sdept,sage from student where sage between 20 and 23; 例11.查询年龄不在20-23岁之间的学生姓名、系 别和年龄。 select sname,sdept,sage from student where sage not between 20 and 23;
4.2数据定义
例:建立学生选课表SC。 create table SC ( sno char(9), cno char(4), grade smallint, foreign key (sno) references student(sno), foreign key (cno) references course(cno) )
4.2数据定义
4.2.2修改基本表 ALTER TABLE <表名> [ ADD <新列名> <数据类型>[完整性约束]] [DROP <完整性约束名>] [ALTER COLUMN <列名><数据类型>];
4.2数据定义
例:向Student表增加“入学时间”列,其数据 类型为日期型。 alter table Student add s_entrance datetime;
4.3.1单表查询
(6)多重条件查询 例23.查询计算机科学系年龄在20岁以下的学生 姓名。 select sname from student where sdept='CS' and sage<20;
4.2数据定义
4.2.1基本表的定义、删除、与修改 一、定义基本表 CREATE TABLE <表名> ( <列名> <数据类型>[列级完整性约束条件] [, <列名> <数据类型>[列级完整性约束条件]] … [,<表级完整性约束条件>] );
4.2数据定义
例:建立一个“学生”表Student。 create table Student ( sno char(9) primary key, sname char(20) unique, ssex char(2), sage smallint, sdept char(20) );
4.1.2 SQL的特点
一、综合统一 SQL集数据定义语言DDL、数据操纵语言DML、 数据控制语言DCL的功能于一体,语言风格统一, 可以独立完成数据库生命周期中的全部活动。 二、高度非过程化 SQL进行数据操作,只要提出“做什么”,而无需 指明“怎么做”,因此无需了解存取路径。存取路 径的选择以及SQL的操作过程由系统自动完成。
相关文档
最新文档