1、SQL语言(1)数据查询 SELECT(2)数据定义 CREATE、DROP、ALTER(3)数据修改 INSERT、UPDATE、DELETE(4)数据控制 GRANT、REVOKESELECTSELECT语句格式以及说明语句格式以及说明SELECT ALL|DISTINCT TOP|PERCENT, AS FROM ,WHERE GROUP BY HAVING ORDER BY ASC|DESCINTO ARRAY |INTO CURSOR |INTO DBF|TABLE |TO FILE ADDITIVE|TO PRINTERPROMPT一一. .简单查询简单查询( (对单表的查询对单表
2、的查询 )Select From From 后接表名,指定查询的信息来自于哪些表。例:From 学生 From 学生,选课,课程Select 后接*、字段名、表达式,用来指定查询结果包含那些列。例:Select * Select 学号,姓名 Select 性别,学号+姓名 女男女男性别性别21222223年龄年龄Bob004Bob003Alice002Tom001姓名姓名学号学号学生学生.dbf.dbf例1:Select * From 学生女男女男性别性别21222223年龄年龄Bob004Bob003Alice002Tom001姓名姓名学号学号Select 学号,姓名; From 学生Sel
3、ect 性别,学号+姓名; From 学生Bob004Bob003Alice002Tom001姓名姓名学号学号女男女男性别性别004Bob003Bob002Alice001TomExp_2Exp_2 36.1 select 单表 横向统计学号学号姓名姓名性别性别年龄年龄001Tom男23002Alice女22003Bob男22004Bob女21学生.dbf例:查询所有学生的学号和年龄信息Select 学号,年龄 From 学生学号学号年龄年龄00123002220032200421例:查询年龄大于22的学生的学号和年龄信息Select 学号,年龄 From 学生 Where 年龄22学号学号年
4、龄年龄00123例:查询年龄大于22的男生的学号和年龄信息Select 学号 From 学生 Where 性别=“男”and 年龄20 Where 学生.学号=选课.学号各种条件运算符含义举例=、=、=、!=、比较大小民族=汉AND、OR多重条件专业=外语 AND 入学成绩520BETWEEN AND 确定范围确定范围入学成绩入学成绩 BETWEEN 500 AND 520LIKE字符匹配姓名 LIKE 王%NOT否定运算符NOT 民族=汉比较查询 查询“学生”表中汉族学生的姓名、民族和入学成绩信息。SELECT 姓名,民族,入学成绩 FROM 学生 WHERE 民族=汉“ 查询“学生”表中少
5、数民族学生的姓名、民族和入学成绩信息。SELECT 姓名,民族,入学成绩 FROM 学生 WHERE 民族!=汉 多重条件查询 在“学生”表中查询外语专业中入学成绩小于520分的学生的学号、姓名、和入学成绩信息。SELECT 学号,姓名,入学成绩 FROM 学生;WHERE 专业=外语 AND 入学成绩520范围查询 在“学生”表中查询外语专业中入学成绩小于520分的学生的学号、姓名、和入学成绩信息。SELECT 学号,姓名,入学成绩 FROM 学生;WHERE 专业=外语 AND 入学成绩520 查询入学成绩在500分到520分之间(包含500分和520分)的学生的学号、姓名和入学成绩信息。
6、SELECT 学号,姓名,入学成绩 FROM 学生;WHERE 入学成绩 BETWEEN 500 AND 520字符串匹配查询 查询“学生”表中所有姓王的学生信息。SELECT * FROM 学生 WHERE 姓名 LIKE 王%“ 查询“课程”表中所有课程名中含有“大学”两个字的课程名。SELECT 课程名 FROM 课程 WHERE 课程名 LIKE %大学%like语句: “ab” like “a%” “ab” like “a_”Like函数: like(“a*”, “ab”) like(“a?”, “ab”)逻辑型字段条件查询 查询“教师”表中所有党员教师的信息。SELECT * FR
7、OM 教师 WHERE 党员否=.T.SELECT * FROM 教师 WHERE 党员否虚拟字段条件查询 查询学生表中年龄小于19岁学生的学号、姓名和年龄信息。SELECT 学号,姓名,YEAR(DATE()-YEAR(出生日期) AS 年龄 FROM 学生;WHERE YEAR(DATE()-YEAR(出生日期)2020, Year(Date()-Year(生日生日) As 年龄年龄 ;用用orderorder关键字对查询结果排序关键字对查询结果排序SELECT ;FROM ;ORDER BY ASC|DESC , ASC|DESC , (注:字段名可以用字段序号代替)学号姓名性别年龄00
8、4Bob女21002Alice女22003Bob男22001Tom男23SELECT * FROM 学生;ORDER BY 年龄SELECT * FROM 学生;ORDER BY 年龄 DESC学号姓名性别年龄001Tom男23002Alice女22003Bob男22004Bob女2144用用order对多个关键字排序对多个关键字排序学号姓名性别年龄004Bob女21002Alice女22003Bob男22001Tom男23SELECT * FROM 学生;ORDER BY 年龄,学号 DESC例:先按年龄升序排列,年龄相同的再按学号降序排列SELECT TOP|PERCENT ;FROM ;
9、ORDER BY;保留排序结果的前保留排序结果的前n(百分之百分之n)条记录条记录SELECT TOP 10 *;FROM student;ORDER BY 英语 DESC;SELECT TOP 20 PERCENT *;FROM student;ORDER BY 英语;查询英语成绩前10名的学生记录。查询按英语成绩升序排序前百分之20名的学生记录。对查询结果排序使用ORDER BY语句按照一个或多个字段对查询结果进行升序(ASC)或降序(DESC)排列,默认为升序排列。 对于空值排序,升序时空值记录将最后显示,降序时将最先显示。ORDER BY语句只能对最终的查询结果进行排序,在子查询中不能
10、使用。 ORDER BY语句后不能接任何运算表达式,不能按某个表达式的运算结果进行排序。 使用TOP PERCENT语句可以只显示排序之后的前几条记录或前百分之多少条记录。 4.1 select 单表 前n项SELECT ;FROM ; INTO ARRAY 或INTO CURSOR 或 INTO DBF|TABLE 或TO FILE 设置查询去向设置查询去向 49.2 select 单表 存到文本文件二.联接查询(查询操作涉及到两个或两个以上的表时用连接查询)学生.dbf选课.dbf课程.dbf 教师.dbf 例:查询所有女学生体育课程的学号和成绩信息。学号学号 姓名姓名 性别性别 入学成绩
11、入学成绩001 李小华 女 525002 王艳芳 女 510003 吴海洋 男 508 学号学号_A 姓名姓名 性别性别 入学成绩入学成绩 学号学号_B 课程号课程号 成绩成绩 学号学号 课程号课程号 成绩成绩 001 C001 95 001 C004 85 002 C001 90 003 C001 92 003 C003 86学生学生 001 李小华 女 525 001 C001 95 001 李小华 女 525 001 C004 85 001 李小华 女 525 002 C001 90 001 李小华 女 525 003 C001 92 001 李小华 女 525 003 C003 86
12、002 王艳芳 女 510 001 C001 95 002 王艳芳 女 510 001 C004 85 002 王艳芳 女 510 002 C001 90 002 王艳芳 女 510 003 C001 92 002 王艳芳 女 510 003 C003 86 003 吴海洋 男 508 001 C001 95 003 吴海洋 男 508 001 C004 85 003 吴海洋 男 508 002 C001 90 003 吴海洋 男 508 003 C001 92 003 吴海洋 男 508 003 C003 86 selectselect * * fromfrom 学生学生, ,选课选课或或
13、selectselect 学生学生. .学号学号, ,姓名姓名, ,性别性别, ,入学成绩入学成绩, ,选课选课. .学号学号, ,课程号课程号, ,成绩成绩 fromfrom 学生学生, ,选课选课选课选课1.无条件无条件联接查询联接查询 无意义!例:查询学生的学号、姓名、课程号和成绩的信息选课选课 学生学生 select * from 学生,选课select 学生.学号,姓名,课程号,成绩 from 学生,选课 where 学生.学号=选课.学号2.条件条件联接查询联接查询 where 学生.学号=选课.学号增加条件:增加条件:select 学生.学号,姓名,课程号,成绩 from 学生,
14、选课 ;where 学生.学号=选课.学号select 学生.学号,姓名,课程号,成绩 from 学生,选课 ;where 学生.学号=选课.学号and 成绩90例:查询学生的学号、姓名、课程号、课程名和成绩的信息。选课选课 学生学生 课程 select from where 学生.学号,姓名,选课.课程号,课程名,成绩;学生,选课,课程;学生.学号=选课.学号 and 选课.课程号=课程.课程号三个表条件三个表条件联接查询联接查询 29.1 select 双表 连接 31.1 select 双表 连接 简单查询(单表) 联接查询(多表)无条件联接查询条件联接查询超联接查询内联接查询左联接查询
15、右联接查询全联接查询【超联接查询格式】SELECTFROM I INNER | LEFT | RIGHT | FULL JOIN ON WHERE超联接-内联接(满足条件就相连)select * from 学生 JOIN 选课 ON 学生.学号=选课.学号select * from 学生 INNER JOIN 选课 ON 学生.学号=选课.学号或select * from 学生 where 学生.学号=选课.学号 (就是内联结)超联接-左联接(内连记录+左表不满足条件的记录)select * from 学生 left JOIN 选课 ON 学生.学号=选课.学号超联接-右联接(内连记录+右表不
16、满足条件的记录)select * from 学生 right JOIN 选课 ON 学生.学号=选课.学号超联接-全联接(内连记录+左右表不满足条件的记录)select * from 学生 full JOIN 选课 ON 学生.学号=选课.学号返回select * from 学生,选课,课程统计查询(分组统计查询) COUNT( 字段名 或 *) 统计记录个数个数。 SUM(字段名) 计算某一列值的总和总和(字段必须是数值型)。 AVG( 字段名) 计算某一列的平均值平均值( (字段必须是数值型)。 MAX(字段名) 计算某一列值的最大值最大值。 MIN(字段名) 计算某一列值的最小值最小值。
17、统计查询(最大值max( )、最小值min()选课【例】查询分数最高的成绩Select max(成绩) As 最高分 From 选课【例】查询001学生的最低成绩Select min(成绩) From 选课 Where 学号=“001”统计查询(和求sum( )、求平均avg( )选课【例】查询学号为”001”的平均成绩Select avg(成绩) From 选课 where 学号=001【例】所有成绩的总分Select sum(成绩) From 选课统计查询(行数COUNT(* )选课【例】查询选课门数Select count(*) as From 选课选课门数查询“某某数”信息时,使用:S
18、elect count(*) as 某某数 from 例如:选课门数、人数、金牌数、奖牌数、课程数、订单数分组统计查询(用Group by 分组,用筛选having分组结果)【例】统计各职称的人数Select 职称, count(*) as 人数 From 教师 Group by 职称 教师【例】统计各职称的人数,但只保留人数大于1的记录Select 职称, count(*) as 人数 From 教师;Group by 职称;Having 人数1【例】统计总人数Select count(*) as 人数 From 教师 或 Having count(*)1 但不允许 where人数1 或 w
19、here count(*)1 筛选条件中有和(sum)、平均(avg)、最大(max)、最小(min)、行数(count)统计信息时,必须把筛选条件放到having中。having Group by A 则默认按A的升序排列。分组的默认顺序教师【例】统计各性别内每种职称的人员数Select 性别+职称,count(*) 人数 ;From 教师;Group by 性别+教师分组统计查询(用多个字段分组) 只要提干中涉及和(sum)、平均(avg)、最大(max)、最小(min)、行数(count)统计信息时,基本都需要分组。啥时候分组呢分组练习 48 max min avg 80 avg 分组筛选 43 count 金牌数 26 count 选课门数 51 sum(数量*单价)
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。