第5篇结构化查询语言SQL
结构化查询语言
![结构化查询语言](https://img.taocdn.com/s3/m/e9e59908a300a6c30c229fa7.png)
简洁易学
用法灵活
5
在Access中使用SQL语句
使用方法
打开查询设计视图。 执行“查询工具/设计”→“查询类型”→“数据定义”命 令,打开“数据定义”查询窗口,输入SQL语句。 注意:在“数据定义”查询窗口中一次只能输入一条SQL语 句。 单击功能区的“运行”按钮,执行SQL语句。 根据需要,将SQL语句保存为一个查询对象,或直接关闭查 询窗口。
25
5.4.1 查询的语法
SELECT命令是SQL的核心语句,具有灵活的使用方式和丰富的
功能。
其语法:
SELECT [ALL|DISTINCT] [TOP <数值> [PERCENT]] <目标列> [[AS] <列标题>] FROM <表1或查询1>[[AS] <别名1>],<表2或查询2>[[AS]<别名2>]
【例5-1】使用SQL语句定义一个名为emp的表,结构如下: 员工号(Text,3字符)、姓名(Text,4字符)、性别(Text,1字 符)、婚否(Logical)、聘用日期(Date)、照片(OLEObject)、 简历(Memo),员工号为主键,姓名不允许为空值。
11
定义表示例
12
定义表示例
22
5.3 SQL数据更新
INSERT INTO <表名> [(<字段名1>[,<字段名2>[,„]])] VALUES(<表达式1>[,<表达式2>[,„]])
如果缺省字段名,则必须为新记录中的每个字段都赋值,且 数据类型和顺序要与表中定义的字段一一对应。
数据库应用第5章-1_结构化查询语言SQL_V08_2
![数据库应用第5章-1_结构化查询语言SQL_V08_2](https://img.taocdn.com/s3/m/08fa010e7cd184254b3535e8.png)
第5章 结构化查询语言SQL数据库系统应用Data Base System Application张建国哈工大计算机科学与技术学院2008-10-7哈工大计算机学院 张建国 Slide 5-1第5章 结构化查询语言SQL2008-10-72第5章 结构化查询语言SQL本章主要内容SQL概述 基本表的定义、修改与删除 SQL的数据更新 数据记录的插入 数据记录的修改 数据记录的删除 SQL的数据查询 索引的建立与删除 T-SQL语言2008-10-7哈工大计算机学院 张建国Slide 5-3第5章 结构化查询语言SQL5.1 SQL概述1. SQL的发展 SQL(Structured Query Language)意为结构化查询语言. 1974年由Boyce和Chamberlin提出来. 最初在System R关系数据库中实现.该语言功能丰富、语言简捷、使用灵活方便、深受各界欢迎.1986年成为美国国家标准. 1987年成为国际标准SQL86. 1989年,ISO颁布了增强完整性特征的SQL89标准. 1993年,ISO对SQL89标准进行了大量的修改和扩充,推出 SQL2(SQL92).2008-10-7哈工大计算机学院 张建国 Slide 5-4第5章 结构化查询语言SQL5.1 SQL概述(Cont.)SQL是一种通用的、功能极强的关系数据库语言. 各数据库厂家纷纷推出各自支持SQL的软件或与SQL 接 口软件,使自己的数据库可以运行SQL. 许多其他软件(例如图形处理、人工智能、软件工程工具 、软件开发工具等)也利用SQL语言的数据查询功能,作为 自身的一部分,使其数据查询功能更强大. 许多程序设计语言中也都引入了SQL.2008-10-7哈工大计算机学院 张建国Slide 5-5第5章 结构化查询语言SQL5.1 SQL概述(Cont.)2. SQL的特点 (1) 一体化 非关系模型的数据语言 模式数据定义语言:Schema DDL 外模式(子模式)数据定义语言:SubSchema DDL 存储模式数据定义语言: DSDL(Data Storage Definition Language) 数据操纵语言:DML SQL语言 SQL将数据定义语言DDL、数据操纵语言DML和数据控 制语言DCL集成在一起,各种语言风格统一.2008-10-7哈工大计算机学院 张建国 Slide 5-6第5章 结构化查询语言SQL5.1 SQL概述(Cont.)(2) 高度非过程化 非关系语言 通过存取路径存取数据. SQL语言 SQL是一种面向问题的语言,只需提出“做什么”,不必指出“ 怎么做”.存取路径的选择和SQL的操作过程是由系统自动 完成的. (3) 面向集合的操作方式 非关系语言 一次一个记录 SQL 采用集合操作,操作对象和操作结果都是元组的集合.2008-10-7哈工大计算机学院 张建国 Slide 5-7第5章 结构化查询语言SQL5.1 SQL概述(Cont.)(4) 两种使用方式、统一的语法结构 SQL既是自含式语言,又是嵌入式语言. 自含式语言 能独立地在联机方式下使用(命令方式),用户可以在终端键 盘上直接输入SQL命令对DB进行操作. 嵌入式语言 嵌入到高级语言(VB、PB、Java等)程序中,利用主语言(高 级语言)进行计算处理、利用DB语言进行数据管理. 同一条命令在两种操作方式中的语法结构基本一致.2008-10-7哈工大计算机学院 张建国Slide 5-8第5章 结构化查询语言SQL5.1 SQL概述(Cont.)(5) 语言简捷、易学易用 SQL具有很强的功能,但由于其设计巧妙,使得语言十分简捷. 完成其核心功能只用9个动词:数据查询:SELECT(查询) 数据定义:CREATE(创建表、索引、视图) DROP(删除表、索引、视图) ALTER(修改表) 数据操纵:INSERT(插入) DELETE(删除) UPDATE(修改) 数据控制:GRANT(授权) REVOKE(收回授权)2008-10-7哈工大计算机学院 张建国 Slide 5-9第5章 结构化查询语言SQL5.1 SQL概述(Cont.)3. SQL支持三级模式结构 外模式 外模式对应于视图View和部分基本表Base Table 用户可以用SQL语言对基本表和视图进行操作 从用户的观点看基本表和视图是一样的 模式 模式对应于基本表 基本表是独立存在的表 每个基本表对应一个关系2008-10-7哈工大计算机学院 张建国Slide 5-105.1 SQL概述(Cont.)内模式内模式对应于存储文件存储文件是在计算机存储介质中存放的文件形式一个或若干个基本表对应一个存储文件视图视图是从一个或几个基本表或其他视图导出的表视图并不存放实际的数据,仅保存视图的定义使用视图时,根据视图定义,从基本表中取数据因此,视图实际上是一个虚表5.1 SQL 概述(Cont.)SQL 用户2视图3视图2视图1基本表3基本表2基本表1存储文件3存储文件2存储文件1基本表4外模式模式内模式SQL 用户1SQL 用户35.2 基本表的定义、修改与删除1. 基本表的定义格式:CREATE TABLE 表名(列名1 数据类型1 [列级完整性约束条件1][,列名2 数据类型2 [列级完整性约束条件2]]…[,列名n 数据类型n [列级完整性约束条件n]]);表名:基本表的表名列名:属性名数据类型:属性的数据类型,可参考具体数据库系统的数据类型5.2 基本表的定义、修改与删除列级完整性约束条件:相应属性的完整性约束条件NULL/NOT NULL: 该项是否可以取空值UNIQUE: 该项是否具有唯一性CHECK: 该项的取值范围PRIMARY KEY: 设置主码FOREIGN KEY: 设置外码5.2 基本表的定义、修改与删除(Cont.)例:建立一个”学生”表Student和一个”系”表.Student(Sno,Sname,Birthday,Score,Dno)Dpet(Dno,Dname,Dtel)设:学号Sno:CHAR(10),主码姓名Sname:CHAR(8)性别Sex: CHAR(2),取值范围:”男”或”女”出生日期Birthday:SMALLDATETIME考分Score:SMALLINT,取值范围:500~750系号Dno: CHAR(2),系的主码,学生的外码系名Dname: CHAR(30)系电话Dtel: CHAR(13)5.2 基本表的定义、修改与删除(Cont.) CREATE TABLE Dept(Dno CHAR(2) primary key,Dname CHAR(30),Dtel CHAR(13));CREATE TABLE Student (Sno CHAR(10),Sname CHAR(8),Sex CHAR(2) CHECK (Sex=‘男’or Sex=‘女’),Birthday SMALLDATETIME,Score SMALLINT CHECK(Score>=500 and Score<=750, Dno CHAR(2),PRIMARY KEY(Sno),FOREIGN KEY (Dno) REFERENCES Dept(Dno) );5.2 基本表的定义、修改与删除(Cont.)2. 修改基本表格式:ALTER TABLE 表名[ADD 列名数据类型[完整性约束条件]]| [DROP COLUMN 列名]| [ALTER COLUMN 列名数据类型];其中:ADD子句:增加新列及其完整性约束DROP子句:删除指定的列ALTER子句:修改列的定义,包括列名和数据类型5.2 基本表的定义、修改与删除(Cont.)例:在Student表中加入一列性别”民族”,6位字符.ALTER TABLE Student ADD Nation CHAR(6);例:将”民族”的数据类型改为bit.ALTER TABLE Student ALTER COLUMN NationCHAR(8);例:删除”民族”.ALTER TABLE Student DROP COLUMN Nation;5.2 基本表的定义、修改与删除(Cont.)3. 删除基本表格式:DROP TABLE 表名删除基本表时,该表的数据以及在此表上建立的视图及索引全部删除,因此执行删除操作时应特别小心.例:删除基本表Student.DROP TABLE Student;数据库实例设学生-课程数据库中包含三个表:Student(Sno ,Sname,Sex,Birthday,Score,Dname)SC(Sno,Cno ,Grade)Course(Cno ,Cname,CPno,Credit)其中:Sno: CHAR(10); Sname: CHAR(8); Sex: CHAR(2); Birthday: SMALLDATETIME; Score: INT; Dname: CHAR(30)Grade: SMALLINTCno: CHAR(6); Cname: CHAR(30); CPno: CHAR(6);credit: TINYINT学生课程选课分数m n5.3 SQL的数据更新插入数据插入单个元组插入子查询的结果数据修改修改一个元组的数据修改多个元组的数据根据查询结果修改删除数据删除一个元组删除多个元组删除子查询的结果5.3 SQL的数据更新(Cont.)1. 插入数据(1) 插入单个元组格式:INSERT INTO 表名[(列名1[,列名2>,…)]VALUES (常量1[,常量2],…);例:将一个新学生元组的全部属性插入到Student中.•INSERT INTO Student•VALUES('6053610301','李兰','女','1989-3-5',658,'实验学院');5.3 SQL的数据更新(Cont.)例:将一个新学生元组的部分属性插入到Student中. INSERT INTO Student(Sno,Sname,Dname)VALUES('1030310105','王芳','计算机系');未列出的属性列取空值.(2) 插入子查询结果INSERTINTO 表名([列名1[,列名2,……)]子查询;5.3 SQL的数据更新(Cont.)例:建立一个学生平均成绩表SG,包括学号Sno和平均成绩Gavg CREATE TABLE SG(Sno CHAR(10) NOT NULL UNIQUE, Gavg SMALLINT);INSERTINTO SG(Sno,Gavg)SELECT Sno, AVG(Grade)FROM SCGROUP BY Sno;(3) 插入应注意的问题对于表Student和SC若在SC中插入的记录的Sno在Student不存在,则系统不允许插入.5.3 SQL的数据更新(Cont.)2. 修改数据格式:UPDATE 表名SET 列名1=表达式1[,列名2=表达式2]……[WHERE 条件];对满足条件的元组中的指定列用相应的表达式的值修改.(1) 修改一个元组的值例:将学生“6053610301”的性别改为“男”.•UPDATE Student•SET Sex='男'•WHERE Sno='6053610301';5.3 SQL的数据更新(Cont.)(2) 修改多个元组的值例:将课号为“101001”的所有成绩提高10%. UPDATE SCSET Grade=Grade*1.1 Where Cno=‘101001’;例:计算每种商品的金额.UPDATE 商品SET 金额=单价*数量;例:将选修课号为“101001”的成绩每人提高10分. UPDATE SCSET Grade=Grade+10WHERE Cno=‘101001’;(3) 带子查询的修改例:将“计算机系”全体学生的成绩清零.UPDATE SCSET Grade=0WHERE ‘计算机系’= (SELECT DnameFROM StudentWHERE Student.Sno=SC.Sno);(4) 修改应注意的问题对于表Student和SC若修改Student中的Sno,而未修改SC中对应记录的Sno.若修改SC中的Sno,而未修改Student中对应的Sno.5.3 SQL的数据更新(Cont.)5.3 SQL的数据更新(Cont.)3. 删除数据格式:DELETEFROM 表名[WHERE 条件];删除满足条件的元组.(1) 删除一个元组例:删除“6053610301"的学生记录.DELETE FROM Student WHERE Sno=‘6053610301’;5.3 SQL的数据更新(Cont.)(2) 删除多个元组例:删除所有学生的选课记录.DELETEFROM SC;(3) 删除子查询的结果例:删除“计算机系”学生的全部选课记录.DELETEFROM SCWHERE ‘计算机系’=(SELECT DnameFROM StudentWHERE Student.Sno=SC.Sno);5.3 SQL的数据更新(Cont.)(4) 删除操作注意保持数据的一致性一个学生的各种数据可能存放在多个表中,但一个删除语句只能对一个表进行删除,这样可能会引起数据不一致问题.例:删除学生“6053610301”在Student表中的记录后,学生的基本数据被删除了.但在SC表中仍存在该学生的选课及成绩记录,若不删除,将会使数据不一致.解决办法:执行两次删除操作,既删除Student表中6053610301的记录,又删除SC表中6053610301的相关记录.为了保证数据的完整性和一致性,许多系统的DBMS都提供了相应的处理机制.当主表的记录被删除后,其参照关系的相关记录自动删除.5.4 SQL的数据查询查询功能是数据库系统的核心.格式:SELECT [ALL|DISTINCT] */目标列表达式[,目标列表达式2…]FROM 表名/视图名[WHERE 条件表达式][GROUP BY 列名1 [HAVING 条件表达式]][ORDER BY 列名2 [ASC/DESC]];5.4 SQL的数据查询(Cont.)其中:SELECT:表示查询ALL:显示所有满足条件的元组DISTINCT:消除重复元组*:所有列目标列表达式:查询结果,可以有函数运算FROM:从哪些表或视图中查询WHERE:查询条件GROUP BY:按指定的列分组,例如,计算每个学生平均成绩时,要按学号分组HAVING:GROUP BY分组的条件ORDER BY:输出时按指定列排序ASC:升序(缺省值)DESC:降序5.4 SQL的数据查询(Cont.)1. 单表查询(1) 查询指定列例:查询全体学生的学号和姓名.SELECT Sno,SnameFROM Student;在表Student对Sno,Sname进行投影相当于:Π(Student)Sno,SnameSnameSno5.4 SQL的数据查询(Cont.)(2) 按用户要求的顺序查询指定列例:查询全体学生的姓名,学号和所在系的系名. SELECT Sname,Sno,DnameFROM Student;查询结果列的顺序可以与表中列的顺序不一致.SnameSno Dname5.4 SQL的数据查询(Cont.)(3) 查询全部列例:查询全体学生的全部数据.方法1SELECT Sno,Sname,Sex,Birthday,Score,DnameFROM Student;方法2SELECT *FROM Student;5.4 SQL的数据查询(Cont.) (4) 查询经过计算的值例:查询全体学生的学号,姓名和出生年份.SELECT Sno,Sname,YEAR(Birthday)FROM Student;计算学生的年龄:SELECT Sno,Sname,YEAR(GETDATE( ))-YEAR(Birthday) FROM Student;计算学生出生的月份:SELECT Sno,Sname,MONTH(Birthday)FROM Student;5.4 SQL的数据查询(Cont.)(5) 消除取值重复的元组例:查询所有课程名称.SELECT DISTINCT CnameFROM Course;例:查询所有系名.SELECT DISTINCT DnameFROM Student;(6) 查询满足条件的元组查询条件可以通过WHERE 子句实现,其常用的条件有:IN, NOT IN 集合LIKE, NOT LIKE 字符匹配IS NULL,IS NOT NULL 空值AND,OR 多重条件BETWEEN AND, NOT BETWEEN AND 范围=, >, <, <=, >=, !=(<>), !<,!>比较谓词条件5.4 SQL 的数据查询(Cont.)5.4 SQL的数据查询(Cont.)1) 比较大小例:查询“计算机”系全体学生的学号和姓名.SELECT Sno,SnameFROM StudentWHERE Dname=‘计算机’;例:查询全体21岁以下学生的学号和姓名.SELECT Sno,SnameFROM StudentWHERE YEAR(GETDATE( ))-YEAR(Birthday)<=21;5.4 SQL的数据查询(Cont.)2) 在一个范围内查询例:查询全体年龄在20至23岁的学生的学号和姓名. SELECT Sno,SnameFROM StudentWHERE YEAR(GETDATE( ))-YEAR(Birthday)BETWEEN20 AND23;例:查询全体年龄不在20至23岁的学生的学号和姓名. SELECT Sno,SnameFROM StudentWHERE YEAR(GETDATE( ))-YEAR(Birthday)NOT BETWEEN20 AND23;5.4 SQL的数据查询(Cont.)3) 条件为一个集合例:查询“计算机”系和“电气工程”系全体学生的全部数据. SELECT *FROM StudentWHERE Dname IN(‘计算机’,’电气工程’);括号中的内容为一个集合,相当于:SELECT *FROM StudentWHERE Dname=‘计算机’OR Dname=’电气工程’;若查询不是上述系的学生,可用条件:WHERE Dname NOT IN(‘计算机’,’电气工程’);5.4 SQL的数据查询(Cont.)4)字符匹配用谓词LIKE表示字符串匹配,形式为:[NOT] LIKE ‘匹配串’[ESCAPE ‘换码字符’]匹配串中:%表示任意长度的字符串;_表示任意单个字符例:查询“本科生05级03系”学生的全部数据.SELECT *FROM StudentWHERE Sno LIKE‘10503%’;若查询除“本科生05级03系”学生的全部数据,则条件可改为:WHERE Sno NOT LIKE’10503%’;若查询全校“03系”学生的全部数据,则条件可改为:WHERE Sno LIKE’_ _ _03%’;5.4 SQL的数据查询(Cont.)例:查询姓名中有“伟”字的学生的全部数据.SELECT *FROM StudentWHERE Sname LIKE‘%伟%’;若查询所有姓“王”的且姓名仅为两个汉字的学生的全部数据WHERE Sname LIKE‘王_’;若查询的字符串中包含%或_,可用转意符ESCAPE‘<转换码>’例:查询名称为“DB_Design”课程的课号和学分.SELECT Cno,creditFROM CourseWHERE Cname LIKE‘DB\_Design’ESCAPE‘\’;其中:\为转换码,表示该字符码后面的‘\’或‘%’不再具有匹配符的意义,而表示该字符本身.5.4 SQL的数据查询(Cont.)5)空值查询例:查询所有选课但未参加考试学生的学号和课号. SELECT Sno,CnoFROM SCWHERE Grade IS NULL;成绩为空值若查询所有有成绩的学生的学号和课号:WHERE Grade IS NOT NULL;6)多重条件查询例:查询“计算机”系年龄在21岁以下的学生的学号和姓名. SELECT Sno,Sname FROM StudentWHERE Dname=‘计算机’AND YEAR(GETDATE())-YEAR(Birthday) <=21;5.4 SQL的数据查询(Cont.)(7) 对查询结果排序用ORDER BY子句,ASC表示升序,DESC表示降序.例:查询选修了“101001”号课程的学生学号和成绩,并按成绩从高到低排序.SELECT Sno,GradeFROM SCWHERE Cno=‘101001’ORDER BY Grade DESC;若先按成绩从高到低排序,成绩相同者按学号从小到大排序.ORDER BY Grade DESC,Sno;5.4 SQL的数据查询(Cont.)(8) 集函数统计元组个数:COUNT([DISTINCT|ALL]|*)统计一列中值的个数:COUNT([DISTINCT|ALL]<列名>) 对一列求和:SUM([DISTINCT|ALL]<列名>)对一列求平均值:AVG([DISTINCT|ALL]<列名>)求一列中最大值:MAX([DISTINCT|ALL]<列名>)求一列中最小值:MIN([DISTINCT|ALL]<列名>) DISTINCT: 消除重复元组ALL: 所有元组,缺省值例:统计学生总数.SELECT COUNT (*) FROM Student;例:统计男生人数.SELECT COUNT (*) FROM Student WHERE Sex=‘男’;例:统计选修了课程的学生人数.SELECT COUNT (DISTINCT Sno) FROM SC;在SC 中对Sno 投影,然后统计去掉重复元组后的记录个数.例:查找选修“101001”号课程的学生最高分.SELECT MAX (Grade) FROM SCWHERE Cno=‘101001’;5.4 SQL 的数据查询(Cont.)怎样获得尚未选课的学生人数?怎样获得女生人数?例:计算选修“101001”号课程的学生平均成绩.SELECT AVG (Grade) FROM SC WHERE Cno=‘101001’;若显示课号及平均成绩,则:SELECT Cno,AVG (Grade) FROM SCWHERE Cno=‘101001’GROUP BY Cno;例:统计每个学生的平均成绩.SELECT Sno, AVG (Grade) FROM SCGROUP BY Sno;按课号分组5.4 SQL 的数据查询(Cont.)5.4 SQL的数据查询(Cont.)(9) 对查询结果分组分组方法用GROUP BY子句将查询结果按某一列或多列值分组,值相等的为一组.分组的目的进一步细化集函数的作用对象.例:求各门课程的课号及其选修该课的人数.SELECT Cno,COUNT(Sno) FROM SC GROUP BY Cno;例:求每一个学生的平均成绩.SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;5.4 SQL的数据查询(Cont.)若分组后还要按一定条件进行筛选, 可以用HAVING短语指定筛选条件.例:查询选修了3门以上课程的学生学号.SELECT Sno FROM SC GROUP BY SnoHAVING COUNT(*)>=3;先用GROUP语句进行分组,对每组用COUNT统计元组个数,对于每组元组个数大于等于3的学号进行输出.注意WHERE与HAVING语句的区别WHERE:作用于基本表或视图,选择满足条件的元组HAVING:作用于GROUP分成的子组,选择满足条件的组。
sql学习心得5篇精选汇总
![sql学习心得5篇精选汇总](https://img.taocdn.com/s3/m/38ef9f8fdbef5ef7ba0d4a7302768e9951e76e68.png)
sql学习心得5篇精选汇总结构化查询语言(SQL)是用于关系数据库管理和数据操作的标准计算机语言。
下面给大家带来一些关于sql实验心得,希望对大家有所帮助。
sql实验心得1sQL是structured Query Language(结构化查询语言)的缩写。
sQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
在使用它时,只需要发出做什么的命令,怎么做是不用使用者考虑的。
sQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sQL。
它的强大功能以前就听人说过,所以就选了这门课。
经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。
幸老师的教学耐心细致,课堂上我们有不理解的地方老师都反复讲解,使我们的基础知识掌握的比较牢固。
数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。
通过学习,我对数据库没有了神秘感,简单的说下我对数据库的理解吧。
我觉得它就是创建一些表格,然后再用一些语句根据他们之间的关系,把它们组合在一起。
最基本的就是子查询了。
我的子查询经验就是先写出select _ 我们要找什么,然后写条件,我们要找的东西有什么条件,然后在写条件,我们的条件涉及那些表,那些字段,再在这些字段中通过我们学过的简单select语句选出来,有时候还要用到几层子查询,不过无所谓,只要思路是清晰的就没什么问题了。
接下来,关联查询之类的,学起来也是不难的,但有一点必须注意,那就是上课必须跟着老师的进度走,一定要注意听讲,勤做笔记.这样,你学起来就会得心应手,没什么困难。
总之,这是一门很值得学的课程,自己学过获益匪浅,就算自己将来不从事这个行业,但是至少对数据不再陌生,甚至还略知一二。
呵呵谢谢老师~!延伸阅读:数据库设计心得体会跟老板做了两个算是比较大的项目,数据库主体都是我设计的。
5-结构化查询语言SQL-2.
![5-结构化查询语言SQL-2.](https://img.taocdn.com/s3/m/45f22450e518964bcf847c28.png)
分组与计算查询
GROUP BY可以按一列或多列分组,还可以 用having进一步限定分组的条件 (分组满足某个条件时才检索,不可以单 独使用)。 在查询中是先where子句限定元组,然后 group by分组,最后having子句 限定元组。
5
第五章 结构化查询语言SQL Visual FoxPro实用案例教程
13
第五章 结构化查询语言SQL Visual FoxPro实用案例教程
例3: Select * from 部门 where not exists (select * from 职工档案 where 部门编号=部门. 部门编号) 等价于:select * from 部门 where 部 门编号 not in (select部门编号 from 职工档案)
例1:select 部门编号,count(部门编号) from 职工档案 group by 部门编号
6
第五章 结构化查询语言SQL Visual FoxPro实用案例教程
例2:统计并显示职工档案表中有三名甚 至更多职工的部门以及该部门内 的总人数。 select 部门编号,count(部门编号) from 职工档案 group by 部门编号 having count(部门编号)>=3
主讲人 于洪奎
第五章 结构化查询语言SQL Visual FoxPro实用案例教程
第五章 学习内容
2
第五章 结构化查询语言SQL Visual FoxPro实用案例教程
知识点
知识点
简单的计算查询与分 组计算查询 利用空值查询、使用 量词和谓词的查询
笔试考 核几率
100% 40%
上机考核几率
30%
8
第五章 结构化查询语言SQL Visual FoxPro实用案例教程
《数据库原理及应用》第五章SQL查询
![《数据库原理及应用》第五章SQL查询](https://img.taocdn.com/s3/m/4e37076b0b1c59eef8c7b426.png)
SQL语言
SQL功能 命令动词
数据查询
数据定义 数据操纵
SELECT
CREATE、DROP、ALTER INSERT、UPDATE、DELETE
数据控制
GRANT、REVOKE
SQL语言
SQL语言的优点在于SQL不是面向过程的 语言,使用SQL语言只需描述做什么,而 不需要描述如何做,为使用者带来极大的 方便。本章将以讨论SQL的数据查询语言 为主,同时介绍数据定义语言和数据操纵 语言。本章中大部分例题使用“学生管理” 数据库,并假定数据库在Access的当前目录 下。
简单查询----选择记录
WHERE子句通过指定查询条件,可以在表中找出满足条件 的记录。查询条件可以是任意复杂的逻辑表达式。 当WHERE子句需要指定一个以上的查询条件时,要使用逻 辑运算符AND、OR和NOT将其连接成复合的逻辑表达式。 其优先级由高到低为:NOT、AND、OR,可以使用括号改 变优先级。 条件查询还可以使用LIKE或NOT LIKE进行部分匹配查询。* 表示任意长度的字符串;?表示任意单个字符。 在查询中还可以使用查询谓词,查询谓词IN 和NOT IN用于 检索属于(IN)或不属于(NOT IN)指定集合的记录。 例10 查询成绩在60分以下(不包括60分)、90分以上(含 90分)学生的学号。
连接查询(多表查询)
例13 查询会计系学生选修课程及成绩,要求查询结果中含 属性学号、姓名、课程名称和成绩。 SELECT student.学号,姓名,课程名称,成绩 FROM student,course,grade WHERE 所属院系='会计学院' and student.学号=grade. 学号 and grade.课程编号=course.课程编号 这个查询涉及到两个表,查询所要求的结果来自两个表,查 询的条件也涉及到两个表,所以有“FROM student,grade”; 这两个表之间是有联系的,这种联系是通过父表的主关键字 (student中的学号)和子表的外部关键字(grade表的学号) 建立的,所以有命令子句WHERE中的筛选条件“student. 学号=grade.学号”。 由于student表和grade表都有学号属性,因此在SELECT子 句中要用前缀的形式“student.学号”指明取自哪个表中的 学号;此例中用“grade.学号”的形式,查询结果是一样的。
第5章结构化查询语言
![第5章结构化查询语言](https://img.taocdn.com/s3/m/668db167abea998fcc22bcd126fff705cc175cc7.png)
第5章结构化查询语言结构化查询语言(SQL,Structured Query Language)是一种用于管理关系型数据库的标准化语言,也是数据库操作的基础。
SQL可以实现数据库的创建、查询、插入、更新和删除等操作,可以对数据库中的表、视图等进行管理和操作。
SQL语言包括数据定义语言(DDL)、数据操纵语言(DML)、数据查询语言(DQL)和事务控制语言(TCL)等几个方面。
数据定义语言(DDL)用于定义、修改和删除数据库对象,包括创建数据库(CREATEDATABASE)、创建表(CREATETABLE)、修改表结构(ALTERTABLE)和删除表(DROPTABLE)等。
数据操纵语言(DML)用于对数据库中的数据进行操作,包括插入数据(INSERT)、更新数据(UPDATE)和删除数据(DELETE)等。
数据查询语言(DQL)用于从数据库中查询数据,SQL语句的核心部分,可以实现复杂的数据查询和数据过滤。
常见的查询语句包括SELECT、FROM、WHERE、GROUPBY、HAVING、ORDERBY等。
事务控制语言(TCL)用于控制数据库中的事务,包括BEGINTRANSACTION、COMMIT、ROLLBACK等。
通过TCL语句可以确保数据库的操作具有原子性、一致性、隔离性和持久性(ACID特性)。
SQL语言的特点有以下几个方面:1.简单易学:SQL语言的语法相对简单,易于学习和使用。
2.高效可靠:SQL语言是标准化的数据库操作语言,可以高效地对数据库进行管理和操作。
3.跨平台性:SQL语言是一种通用的数据库操作语言,可以在不同的平台和数据库系统上使用。
4.强大灵活:SQL语言可以实现复杂的数据查询和处理,支持多表联合查询、条件查询、分组统计等功能。
SQL语言在现代数据库管理系统中得到了广泛的应用,是数据库开发和管理中非常重要的一部分。
掌握SQL语言可以更好地进行数据库设计、数据管理和数据分析等工作。
第 5 章 复习 SQL(结构化查询语言)
![第 5 章 复习 SQL(结构化查询语言)](https://img.taocdn.com/s3/m/f15f78c3bb4cf7ec4afed071.png)
在T_SQL中,连接查询有两大类表示 形式,一是符合SQL标准连接谓词表示形 式,二是T_SQL扩展使用关键字JOIN的表 示形式。
① 指定每个表中要用于连接的列。典型的 连接条件在一个表中指定外键,在另一个 表中指定与其关联的键。 ② 指定比较各列的值时要使用的逻辑运算 符,如“=、< >”等。
[^]
BDTWEEN„AND IS NULL
LIKE
IN EXISห้องสมุดไป่ตู้S
模式匹配,字符串匹配操作符
检查一个字段值是否属于一组值之中 检查某一个字段值是否有值,实际上,EXISTS是IS NULL的反义词
4.练习
列出性别为女的学生姓名、家庭住址 SELECT student_name, address FROM student_info WHERE student_sex='女'
SQL查询
函数及统计
分组排序
连接 子查询
5.6 基于多表的连接查询
在关系型数据库中,将一个查询同时 涉及两个或两个以上的表,称为连接查询。 基于多表的查询是通过所谓的连接查 询来完成的。连接是根据各个表之间的逻 辑关系从两个或多个表中查询数据,结果 通常是含有参加连接运算的两个表(或多 个表)的指定列的表。
列出1980年以后出生的学生的情况 SELECT * FROM student_info WHERE born_date >'1980-12-31'
列出所有家住“武汉市”的男学生姓名、电 话号码和家庭住址
SELECT student_name, tele_number, student_sex, address FROM student_info WHERE substring(address,1,3)='武汉市' AND student_sex='男'
第5_6章 查询与视图(SQL)
![第5_6章 查询与视图(SQL)](https://img.taocdn.com/s3/m/5d5f5d1cfc4ffe473368ab3d.png)
删除记录 示例: 示例: 职务= 技术员 技术员” delete from gzgl!zg where 职务=“技术员” browse &&物理删除 pack &&物理删除 browse
更新记录 【例SQL-5.prg】: 】 实发工资=工资+奖金update gzgl!gz set 实发工资=工资+奖金-水电费 &&set用于指定列和修改的值 browse &&set用于指定列和修改的值
②视图设计器
SQL命令 ③ SQL命令
【例5.4】利用视图向导,创建一个多表本地视图文 】利用视图向导, 学生成绩” 视图中的数据包含学号、姓名、 件“学生成绩”,视图中的数据包含学号、姓名、 系科和课程号、成绩等字段的内容, 系科和课程号、成绩等字段的内容,视图中只含 男同学的记录并以成绩的降序排列。 男同学的记录并以成绩的降序排列。 【例5.5】利用视图设计器,创建一个多表本地视图 】利用视图设计器, 成绩单视图” 视图中的数据包含Student表、 “成绩单视图”,视图中的数据包含 表 Course表和 表和Assign表,视图中包含 表和 表 视图中包含Student表的学 表的学 姓名、系科; 表中的课程号、 号、姓名、系科; Assign表中的课程号、成绩; 表中的课程号 成绩; Course表中的等课程名、学分等字段的内容;查询 表中的等课程名、 表中的等课程名 学分等字段的内容; 结果以学号的升序和课程号升序排列。 结果以学号的升序和课程号升序排列。 【例5.6】利用本地视图“学生视图”,更新 】利用本地视图“学生视图” Student表中的数据。 表中的数据。 表中的数据
②排序短语 &&查询全部记录, &&查询全部记录,并按职工号降序排列 查询全部记录 SELECT * FROM 职工工资 order by 职工号 desc &&统计student表中各专业的女生人数 &&统计student表中各专业的女生人数 统计student ③分组短语
《关系数据库SQL语言》
![《关系数据库SQL语言》](https://img.taocdn.com/s3/m/8390cd0379563c1ec5da7131.png)
[DataName!]TableName [[AS] Local_Alias] [ON JoinCondition]…] [WHERE JoinCondition [AND JoinCondition…] [AND|OR FilterCondition [AND|OR FilterCondition…]]] [ORDER BY Order_Item [ASC|DESC][,Order_Item [ASC|DESC]…]] [GROUP BY GroupColumn [,GroupColumn…] [HAVING FilterCondition]] [TO SCREEN|FILE FileName [ADDITIVE]|PRINTER [PROMPT]] [INTO TABLE TableName|CURSOR CursorName|ARRAY ArrayName]
(1)简单条件查询
【例5-5】在Zgjk.dbf表中,查询基本工资在1000元以上(含 1000元)职工的姓名和部门(要求不重复显示)。
在命令窗口中键入:
SELECT DISTINCT 姓名,部门,基本工资 FROM Zgjk WHERE 基本工资>=1000
(2)复合条件查询
【例5-6】在Zgjk.dbf表中,查询家电部门已婚的职工的信息。
1000 AND 1200 该命令等价于:
SELECT * FROM Zgjk WHERE 基本工资>=1000 AND ;
基本工资<=1200
3.对查询结果进行排序
在SELECT-SQL命令中,使用ORDER BY子句,可以使查询结果按 指定要求排序。 命令格式:SELECT <列名表> FROM <表名> [WHERE <条件>]; ORDER BY <排序依据> [ASC|DESC] 说明: 排序依据:备注型数据和通用型数据不能作为排序依据。排序依据 可以是字段名、由AS子句命名的列标题(在ORDER BY子句中,不能 直接使用表达式和函数)和列序号(即该列在查询结果中的位置1,2, 3…)。 排序方式:ASC表示查询结果按照排序依据项的值升序排列, DESC表示查询结果按照排序依据项的值降序排列。默认排序方式为 ASC。 排序规则:数值按大小顺序,字母按“ a ” < “ A ” < “ b ” < “ B ” … 的顺序,汉字按内码值顺序,日期按前后顺序,逻辑型数据“假”在 前“真”在后。
第5章SQL结构化查询语言
![第5章SQL结构化查询语言](https://img.taocdn.com/s3/m/bad85b484b7302768e9951e79b89680203d86b24.png)
第5章SQL结构化查询语言SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
它是一种标准化的查询语言,用于从数据库中检索和操作数据。
本章将介绍SQL的基本语法和常用命令,以及如何使用它进行数据查询、插入、更新和删除。
1.SQL语法SQL语法由关键字、函数、操作符和参数组成。
SQL语句通常以分号结尾,并且可以写在一行或多行中。
常见的SQL语句包括:- SELECT语句:用于从数据库中检索数据。
例如:SELECT * FROM table_name;- INSERT语句:用于向数据库中插入新的数据。
例如:INSERT INTO table_name (column1, column2) VALUES (value1, value2);- UPDATE语句:用于更新数据库中的数据。
例如:UPDATEtable_name SET column_name = new_value WHERE condition;- DELETE语句:用于从数据库中删除数据。
例如:DELETE FROM table_name WHERE condition;2.数据查询使用SELECT语句可以从数据库中检索数据。
可以使用通配符*检索所有列,或者指定要检索的列名。
例如,SELECT * FROM customers; 将检索customers表中的所有数据。
可以使用WHERE子句来添加过滤条件,例如:SELECT * FROM customers WHERE age > 18; 将检索年龄大于18的顾客数据。
3.数据插入使用INSERT语句可以向数据库中插入新的数据。
插入数据需要指定插入的表名和要插入的数据的列和值。
例如,INSERT INTO customers (name, age) VALUES ('John', 25); 将向customers表中插入一条名为John,年龄为25的新数据。
第 5 章 复习 SQL(结构化查询语言)
![第 5 章 复习 SQL(结构化查询语言)](https://img.taocdn.com/s3/m/f15f78c3bb4cf7ec4afed071.png)
SELECT student_info.*,class_info.* FROM student_info, class_info WHERE student_info.class_no= class_info.class_no
[^]
BDTWEEN„AND IS NULL
LIKE
IN EXISTS
模式匹配,字符串匹配操作符
检查一个字段值是否属于一组值之中 检查某一个字段值是否有值,实际上,EXISTS是IS NULL的反义词
4.练习
列出性别为女的学生姓名、家庭住址 SELECT student_name, address FROM student_info WHERE student_sex='女'
3.AVG函数的应用
AVG函数的表达式格式与MAX和 MIN的表达式格式一样。求表达式中所有 项的平均值。其格式为: AVG([ALL|DISTINCT] 表达式)
SELECT AVG (course_time) '平均课时', AVG (course_score) '平均学分' FROM course_info WHERE course_start =1
4.SUM函数的应用
SUM函数用于求表达式中所有项的总 和。其格式为: SUM([ALL|DISTINCT] 表达式)
SELECT SUM (course_time) '总课时', SUM (course_score) '总学分' FROM course_info WHERE course_start =1
练习 列出2000年元旦前入学的学生名单。要 求查询结果按入学时间降序显示,若入校时间 相同,则按学号升序排列
第5章 SQL语言
![第5章 SQL语言](https://img.taocdn.com/s3/m/876a94350b4c2e3f5727637d.png)
二、 VF中的SQL命令动词
SQL功能 数据定义 数据更新
命令动词 Create、Drop、alter Insert、update、 Delete
数据查询 select
二、VF中的SQL命令动词
命令动词
select
alter create Insert update Delete Drop
主要功能
功能:用于修改字段的类型、宽度、有效性规则、错误信息 和默认值等。 例:alter table 学生 alter 年龄 drop check
alter table 学生 alter 年龄 D alter table 学生 alter 性别 set default "女"
二、修改表结构
格式3: Alter table 表名 [drop column 字段名] [set check 记录有效性规则 [error 错误提示信息]] [drop check] [add primary key 主索引表达式 tag 主索引名] [drop primary key] [add unique 候选引表达式 tag 候选索引名] [drop unique tag 候选索引名] [add FORE KEY 普通索引表达式 TAG 普通索引名 refe 主表名] [drop fore key tag 候选索引名] [rename column 原字段名 to 新字段名] 功能:用于删除字段、重命名字段名、增加、删除记录有效性规则、主
若有percent参数,则为百分比,n取值为0.01- 99.99 。
目标列
指定包括在查询结果中的项,每一项在查询结果中都
生成一列。可以为:字段名、常量、表达式。如果包 括所有字段,可使用*号。可以为SQL计算函数: AVG(字段名)、SUM(字段名)、 MAX(字段名)、 MIN(字段名)、 COUNT(*)、COUNT(字段名)
《Access2016数据库教程》第5章SQL查询
![《Access2016数据库教程》第5章SQL查询](https://img.taocdn.com/s3/m/37de83801ed9ad51f11df2ca.png)
SQL(Structure Query Language)结构化查询语言
是一种专门针对数据库操作的计算机语言,是关系数据库管 理系统中的标准语言。 SQL查询是使用SQL语句创建的查询。 查询对象本质上是一条SQL语言编写的命令。
SELECT语句
SELECT语句是对关系数据库的表作选择查询的一个命令, 可以返回指定的数据表中的全部或部分满足条件的记录。
Where Year(出生日期)=2001 Or Year(出生日期)=2003
Where Year(出生日期) In(2001,2003)
4.9 SQL查询
【例5-11】查询“学生表”中年龄为18岁的 学生的学号、姓名、政治面貌。
Select 学号, 姓名, 政治面貌 From 学生表
Where Year(Date())-Year(出生日期)=18
然后使用Group By子句按照课程名称进行分组 再计算每个组内包含成绩的平均值、最大值和最小值。
3.SELECT多表连接查询示例
【例5-19】 查询每个学生的学号、姓名和平均成绩 (保留2位小数),查询结果按“平均成绩”降序排序。
Select 学生表.学号, First(学生表.姓名) As 姓名, Round(Avg(成绩),2) As 平均成绩 From 学生表 Inner Join 选课成绩表 On 学生表.学号= 选课成绩表.学号 Group By 学生表.学号 Order By Round(Avg(成绩),2) Desc
先从Where子句的条件筛选出“男”同学,再按照 院系代码进行分组求出平均分,然后按照平均分降 序排序。
5.2.3 多表连接查询
连接就是将其他表中的列字段添加到本表中。连接运 算主要分成内连接和外连接。 内连接是应用最广泛的连接运算,结果只包含两个表 中连接字段相同的记录行,是等值连接。使用Inner Join就可以将两张表内连接在一起。
关系数据库的结构化查询语言SQL
![关系数据库的结构化查询语言SQL](https://img.taocdn.com/s3/m/f1c8281e4afe04a1b171de72.png)
备注
按固定长度n存储字符串,如果实际字符串长度长小于n,后 面填空格符;如果实际字符串长大于n,则报错。
按实际字符串长度存储,但字符长度不得超过n,则报错。 常见的长整数,字长32位
字长16位 n为十进制数总位数(不包括小数点),d为小数据点后的十进 制位数
一般指双精度浮点数,即字长64位
二进制位串,长度为n,n的缺省值为1
按实际二进制位串存储,但最长不得超过n位,否则报错 格式为“yyyymmdd”, yyyy表示年份,范围为0001~9999;mm 表示月份,范围为1~12;dd表示日,范围为1~31。 格式为“hhmmss”,hh表示小时,范围为0~24;mm为分钟, ss表示秒,范围都是0~59。 格 式 为 “ yyyymmddhhmmssnnnnnn” , 其 中 “ nnnnnn” 表 示 微秒,范围为0~99999,其他符号的意义同上。
2)SQL数据库的体系构造
SQL用户
用户1
用户2
用户3
用户4
外模式
视图V1
视图V2
模式
基本表B1
基本表B2
基本表B3
基本表B4
内模式 存储文件S1
存储文件S2
存储文件S3
存储文件S4
SQL数据库的体系构造的特征:
一个SQL模式是表和约束的集合。 一个表〔TABLE〕是行的集合。每行是列的序列,每
如果关键字由多个属性构成,那么必须使用方法(2)。
SQL事例
CREATE TABLE S
( SNO CHAR(6) PRIMARY KEY, /*第一种方式*/ SNAME CHAR(8) NOT NULL, AGE SMALLINT, SEX CHAR(1), DNAME VARCHAR(12));
第5-2章Visual FoxPro与SQL概述
![第5-2章Visual FoxPro与SQL概述](https://img.taocdn.com/s3/m/4915575133687e21af45a974.png)
SELECT 学生信息.性别, count(学生信息.学号);
FROM 学生信息,课程考试; WHERE学生信息.学号=课程考试.学号;
GROUP BY 性别;
HAVING 数学成绩<60
注: count(学生信息.学号)为函数,统计人数。
10、小结 SQL功能很强,上述功能和举例只是一 小部分,主要目的是“抛砖引玉”,使 大家对SQL有初步了解。有兴趣的话可 以深入学习。
9、分组及使用库函数统计查询 可以将查询结果进行分组,然后再对每个 分组进行统计。SQL使用GROUP BY来确 定分组依据;使用HAVING确定分组条件。 需要说明的是, WHERE 和HAVING都是 用来指定查询条件, WHERE作用于表和 视图,而HAVING作用于分组。例如统计 数学考试不及格的男生、女生人数可用以 下命令:
SQL具有集合特性,即所有SQL语句都可用集 合输入、输出,这种集合特性允许允许一条 SQL 语句的输出结果作为另一条语句的输入。 SQL不要求用户指定数据存储方法, SQL使用 查询优化器,它能决定数据存储的最快方法。 SQL支持多种数据库平台,主要的关系数据库 管理系统都支持SQL语言。所以,用SQL语言 编写的程序都是可以移植的。
8、嵌套查询 可以将若干条SELECT语句嵌套使用,即嵌套查 询。 进行嵌套查询时,要注意各SELECT语句层次, 必要时用“()”引起。例如:查询与学号 “041001”同年出生的同学的学号、姓名和出生 年月,命令如下: SELECT 学号,姓名 ,出生年月 FROM 学生信息 WHERE year(出生年月 ) = (SELECT year(出生年月 ) FROM 学生信息 WHERE 学号=„041001‟) 注: year(出生年月 ) 为函数。
sql学习心得5篇精选汇总
![sql学习心得5篇精选汇总](https://img.taocdn.com/s3/m/2ef5eb4955270722182ef74a.png)
sql学习心得5篇精选汇总结构化查询语言(SQL)是用于关系数据库管理和数据操作的标准计算机语言。
下面给大家带来一些关于sql实验心得,希望对大家有所帮助。
sql实验心得1sQL是structured Query Language(结构化查询语言)的缩写。
sQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
在使用它时,只需要发出做什么的命令,怎么做是不用使用者考虑的。
sQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sQL。
它的强大功能以前就听人说过,所以就选了这门课。
经过一个学期的数据库课程的学习,我们掌握了创建数据库以及对数据库的操作的基础知识。
幸老师的教学耐心细致,课堂上我们有不理解的地方老师都反复讲解,使我们的基础知识掌握的比较牢固。
数据库这门课涉及到以前的知识不多,是一门从头学起的课程,即使基础不是很好,只要认真听讲、复习功课,还是一门比较容易掌握的课。
通过学习,我对数据库没有了神秘感,简单的说下我对数据库的理解吧。
我觉得它就是创建一些表格,然后再用一些语句根据他们之间的关系,把它们组合在一起。
最基本的就是子查询了。
我的子查询经验就是先写出select _ 我们要找什么,然后写条件,我们要找的东西有什么条件,然后在写条件,我们的条件涉及那些表,那些字段,再在这些字段中通过我们学过的简单select 语句选出来,有时候还要用到几层子查询,不过无所谓,只要思路是清晰的就没什么问题了。
接下来,关联查询之类的,学起来也是不难的,但有一点必须注意,那就是上课必须跟着老师的进度走,一定要注意听讲,勤做笔记.这样,你学起来就会得心应手,没什么困难。
总之,这是一门很值得学的课程,自己学过获益匪浅,就算自己将来不从事这个行业,但是至少对数据不再陌生,甚至还略知一二。
呵呵谢谢老师~!延伸阅读:数据库设计心得体会跟老板做了两个算是比较大的项目,数据库主体都是我设计的。
第5章结构化查询语言SQLppt课件全
![第5章结构化查询语言SQLppt课件全](https://img.taocdn.com/s3/m/5b9f18976e1aff00bed5b9f3f90f76c661374c88.png)
基本查询
❖ 例1:列出“学生”表中所有同学名单
▪ SELECT * FROM 学生
❖ 例2:列出成绩表中所有学生的学号,去掉重复值。
▪ SELECT DISTINCT 学号 FROM 成绩
SELECT命令中的函数
❖ 例3、列出所有学生的学号,姓名和入学成绩, 其中入学成绩四舍五入保留整数。
▪ SELECT 学号,姓名,ROUND(入学成绩,0) AS “入学成 绩” FROM 学生
WHERE——BETWEEN
❖ WHERE子句中的BETWEEN运算符用来确定范围 。
❖ 格式:
▪ BETWEEN…AND…或NOT BETWEEN…AND ▪ 其中BETWEEN后是范围的下限(低值),AND后是范围的
上限(高值)。
❖ 例1、列出入学成绩在560分到600分之间的学生 名单和成绩。
SQL89 ▪ 1992年公布了SQL的新标准,即SQL-92。 ▪ SQL99——SQL3
SQL语言的特点
❖ SQL是一种结构一体化的语言。它包括了数据定义 、数据查询、数据操纵和数据控制等功能,可以完 成数据库活动中的全部工作。
SQL语言的组成
❖ 数据定义:CREATE、DROP(删除)、
ALTER(修改)
▪ SELECT * FROM 学生 WHERE 专业<>“计算机”
❖ 例4、统计计算机专业入学成绩在600分以上的 学生的人数。
▪ SELECT COUNT(姓名) 人数 FROM 学生 WHERE 入 学成绩>=600 AND 专业=“计算机”
WHERE——IN
❖ WHERE子句中的IN谓词用来确定查询的集合。 ❖ 例1、查询计算机专业和外语专业的学生姓名和
VFP第五章
![VFP第五章](https://img.taocdn.com/s3/m/dffd1bc558f5f61fb736661f.png)
用select-sql命令实现单表查询
1.无条件查询 无条件查询 SELECT <字段名表 FROM <表名 字段名表> 表名> 字段名表 表名 SELECT后用“* SELECT后用“*”表示全部字段,还可以是标准统计 函数,如min 函数,如min ,max ,sum,avg,count等 ,sum,avg,count等 例1: Sele * from STUDENT Sele ‘学号’,‘姓名’,‘奖学金’ from STUDENT sele max(奖学金) as '最高奖学金‘ , min(奖学金) as '最 低奖学金', avg(奖学金) as '平均奖学金' from student 注意标题名称
建立表之间临时关系
Set relation to <关联字段表达式 into <子表 关联字段表达式> 子表> 关联字段表达式 子表
表间临时关系:指当一个表的记录指针移动时,另 表间临时关系 一个表中的记录作相应移动。前者的移动是主动的, 称为父表或主动表,后者是被动的,称为子表或被 动表。 说明:关联字段表达式通常由两表共有的字段构成, 说明: 关联字段表达式 同时又是子表的主控索引,这说明子表须建索引才 能建立临时关系。 SET RELATION TO则表示取消当前工作区与其他 则表示取消当前工作区与其他 工作区的关联
第五章: 第五章:查询与视图
5.1 查询与统计命令 5.2使用查询设计器建立查询 使用查询设计器建立查询 5.3 结构化查询语言 结构化查询语言SQL 5.4 视图
数据筛选命令
1.记录筛选命令: Set filter to <条件> 设置当前表中可以被访问的记录满足的条件。 几次筛选以后,仅最后一次起作用。 几次筛选以后,仅最后一次起作用。 取消记录筛选命令:set filter to 2.设置字段筛选命令: Set fields to <字段名表> | [all | like | except <字段名 通配式> ] 指定当前可以被访问的字段,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章 结构化查询语言SQL
❖例5-1 在学生选课数据库stsc中创建一个学生表 student。
❖ CREATE TABLE student (学号 c(8),姓名 c(6), 性别 c(2),院系 c(8),出生日期 D,入学成绩 N(4,1))
❖功能:用CREATE TABLE语句创建数据库表 student。该表中包含了学号、姓名、性别、院系、 出生日期和入学成绩6个字段。
数据库系统及应用
本章学习要点
SQL的数据定义 :熟练运用CREATE TABLE、 ALTER TABLET和DROP TABLE语句完成表的创建、 修改和删除 。 SQL的数据操纵 :熟练运用INSERT、DELETE 和UPDATE语句添加、删除和更新记录 。 SQL的数据查询 :熟练运用SELECT语句完成简 单查询、嵌套查询、连接查询、分组与计算查询 。
数据库系统及应用
第5章 结构化查询语言SQL
❖ 5.1.2 SQL数据定义功能 ❖ 关系数据库的基本对象是表、视图和索引。因此SQL的数
据定义功能包括定义数据库、表、视图和索引,如表5-2 所示。由于视图是基于表的虚表,索引是依附于表的,因 此SQL通常不提供修改视图和索引的操作。 ❖ 1.数据库的创建和删除 ❖ 关系数据库被定义为关系(表)、索引和视图的集合。在 创建表、视图和索引前必须首先创建数据库。 ❖ 例如,创建学生选课数据库stsc,可以用CREATE DATABASE stsc语句来实现。
❖ ④修改字段名
❖ 格式:ALTER TABLE <表名> RENAME <字段名1> TO<字段名2>
❖ 功能:在指定表中将字段名1更名为字段名2。
❖ 例5-5把课程表course中的课名改为课程名称。
❖
ALTER TABLE course RENAME 课名 TO 课程名
数据库系统及应用
第5章结构化查询语言SQL
主编:赖申江
本章学习导航
❖ 结构化查询语言SQL是一种功能齐 全的数据库语言,包含数据定义功 能、数据查询功能、数据操纵功能 和数据控制功能。其中最主要的功 能就是查询。通过本章学习,学生 应掌握SQL语言的使用方法和技巧, 提高知识综合运用能力,写出高质 量的SQL查询命令。
以及SQL语言的操作过程由系统自动完成,不但大大减轻了用户负担, 而且有利于提高数据的独立性。 ❖ (3)简单易用 ❖ SQL语言十分简洁,实现核心功能,一般只要用到下面9个命令动词, 如表5-1所示。因此容易学习和掌握。 ❖ (4)有联机交互和嵌入两种使用方式 ❖ SQL语言支持两种不同的使用方式。一种是联机交互使用,即用户能 在终端直接输入SQL命令对数据库进行操作;另一种是嵌入式,即将 SQL语句嵌入到其他高级语言中,以便程序员在设计时使用。
数据库系统及应用
第5章 结构化查询语言SQL
❖ 5.1.1 SQL语言的特点 ❖ SQL语言之所以能够成为国际标准,是因为它是一个综合的、通用的、
功能极强,同时又简单易学的语言。 ❖ (1)功能强大 ❖ SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体。 ❖ (2)高度非过程化 ❖ 用户只要提出“做什么”,而无需指明“怎么做”,存取路径的选择
教学课时:4课时
数据库系统及应用
第5章 结构化查询语言SQL
❖5.1 SQL概述 ❖结构化查询语言(Structured Query Language,
简称SQL)是一种介于关系代数和关系演算之间 的语言。它于1974年由Boyce和Chamberlin提 出,由于具有语言简洁、方便实用、功能齐全等 优点,很快得到推广和应用。随着关系数据库的 流行,SQL语言最终发展成为关系数据库的标准 语言和数据库领域中一个主流语言。SQL已经被 ANSI(美国国家标准化组织)确定为数据库系统 的工业标准,它是数据库系统的通用语言。利用 SQL,用户可以用几乎相同的语句在不同的数据 库系统上执行同样的操作。
❖ ③ 修改字段
❖ 格式:ALTER TABLE <表名> ALTER <字段名> <字段 类型> <(宽度)>
❖ 功能:在指定的表中修改指定字段的类型和宽度,不能修 改字段名。
❖ 例5-4把学生student表中的姓名字段宽度由6改为。
❖
ALTER TABLE student ALTER 姓名 c(10)
数据库系统及应用
第5章 结构化查询语言SQL
❖ (2)修改表结构
❖ 修改表结构命令以ALTER TABLE开头,后面根据不同的操作使用不同 的命令动词。
❖ ①增加字段
❖ 格式:ALTER TABLE <表名> ADD <字段名> <字段类型> <(宽 度)>
❖ 功能:对指定的表增加一个字段。
❖ 例5-2为学生student表增加一个照片字段。
数据库系统及应用
第5章 结构化查询语言SQL
❖ 2.基本表的创建、修改和删除 ❖ 用CREATE DATABASE建立的数据库是一个空的数据库,接下来应
该在这个数据库中建立表。 ❖ (1)创建基本表 ❖ 表的创建既可以通过表设计器或Visual FoxPro的新建表命令实现,
也可以使用SQL中的相应命令创建。 ❖ 命令格式:CREATE TABLE|DBF <表名> [FREE](<字段名1> <字
❖
ALTER TABLE student ADD 照片 G
❖ ② 删除字段
❖ 格式:ALTER TABLE <表名> DROP <字段名>
❖ 功能:在指定的表中删除指定字段。
❖ 例5-3删除学生student表中的照片字段。
❖
ALTER TABLE student DROP 照片
数据库系统及应用
第5章 结构化查询语言SQL
段类型> <(宽度[,<小数位数>])>[,<字段名2> <字段类型> <(宽度 [,<小数位数>])>,…]) ❖ 功能:建立一个由<表名>指定的表结构。 ❖ 说明: ❖ ①<表名>:指定要创建的表的名称。 ❖ ②FREE:指定创建的表是一个自由表,不被添加到数据库中。 ❖ ③<字段名1> <字段类型> <(宽度[,<小数位数>]):指定相应字段的 名称、类型、宽度及小数位数。