16基本SQL语句

上传人:s9****2 文档编号:591645643 上传时间:2024-09-18 格式:PPT 页数:36 大小:1.02MB
返回 下载 相关 举报
16基本SQL语句_第1页
第1页 / 共36页
16基本SQL语句_第2页
第2页 / 共36页
16基本SQL语句_第3页
第3页 / 共36页
16基本SQL语句_第4页
第4页 / 共36页
16基本SQL语句_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《16基本SQL语句》由会员分享,可在线阅读,更多相关《16基本SQL语句(36页珍藏版)》请在金锄头文库上搜索。

1、基本SQL语句SQL语言概述SQL是StructuredQueryLanguage(结构化查询语言)的缩写,它是目前使用最广泛的数据库语言,SQL是由IBM发展起来的,后来被许多数据库软件公司接受而成为了业内的一个标准。包括数据定义、数据操纵、数据查询和数据控制功能SQL语言的分类SQL语言共分为四大类:数据定义语言DDL用来创建数据库中的各种对象-表、视图、索引、同义词、聚簇等如:CREATETABLE/VIEW/INDEX/SYN/CLUSTER表视图索引同义词簇数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:grant,

2、rollback,commit数据操纵语言DML数据操纵语言DML主要有三种形式:1)插入:INSERT2)更新:UPDATE3)删除:DELETE数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SQL核心语句SQL功能动词数据查询SELECT数据定义CREATE、DROP、ALTER数据操纵INSERT、UPDATE、DELETE数据控制GRANT、REVOKEDDL数据定义语言建立数据库的第一步就是定义一些基本表。SQL语言使用CREATETABLE命令定义基本表。1)定义基本表CREATE(列级完整性约束,列级完整性约束.,)如果完整性约束涉及到

3、改表的多个字段,则必须定义在表的级上,否则可以定义在列级上也可以定义在表级上新建表例子例如建立一个学员表student,包括学号sno,姓名sname,性别ssex,年龄sage,所在系sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名的取值也唯一。CREATETABLEstudent(snochar(5)notnullunique,snamechar(20)unique,ssexchar(1)default男,sageint,sdeptchar(15);字段常用数据类型定义表的各各属性需要指明数据类型及长度。不同的数据库系统支持的数据类型不安全相同,常用的类型有:lChar(n)

4、长度为n的定长字符串;lVarchar(n)最大长度为n的变长字符串;lINT整形lDouble浮点型lDATETIME日期型ltext可变长度的Unicode数据,最大长度230-1limage可变长度的二进制数据,最大长度为230-1修改基本表2)修改基本表AlterTableADD完整性约束DROPMODIFY;ADD:增加新列和新的完整性约束条件DROP:删除制定的完整性条件MODIFY:用于修改原有的列的定义,包括列名和数据类型修改表的例子例:向student表增加入学时间列,类型为日期型ALTERTABLEstudentADDscomeDATETIME例:将年龄的数据类型改为字符型

5、;ALTERTABLEstudentMODIFYSagechar(4)例:删除学生姓名必须唯一值的约束ALTERTABLEstudentDROPUNIQUE(sname)删除基本表DROPTABLEstudent基本表定义一旦删除,表中的数据、此表上建立的索引和视图都将自动被删除掉。因此执行基本表的删除一定要格外小心。创建索引建立索引是加快查询速度的有效手段,在基本表上建立一个或多个索引,以提供多种存取路径,加快查询速度。1)建立索引在SQL语言中,建立索引使用CREATEINDEX语句,其一般格式为:CREATEUNIQUECLUSTERINDEXON(,.);UNIQUE:唯一索引CLUS

6、TER:聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。由于一般表只能有一个物理顺序,所以一个表上只能建立一个聚簇索引。创建索引用户可以在最常查询的列上建立聚簇索引以提高查询效率,建立聚簇索引后,更新索引列数据时,往往会导致表中记录的物理顺序的变更,代价较大,因此对于经常更新的列不宜建立聚簇索引。例:建立下面的聚簇索引CreateCLUSTERINDEXstusnameonstudent(sname)创建索引例,建立下面三个索引:CREATEUNIQUEINDEXstusnoONstudent(sno);CREATEUNIQUEINDEXCoucononstudent

7、(cno);CREATEUNIQUEINDEXSCnoONSC(SnoASC,CnoDESC)删除索引索引一旦建立,就由系统使用和维护它,不需用户干预。建立索引是为了减少查询操作的时间,但如果数据增加、删除频繁,系统会花很多时间来维护索引。这时可以删除一些不必要的索引。DROPINDEX例删除Student表的Stusname索引DROPINDEXStusname;使用索引问题一:在关系client(depart,id,name,tel)中分别标识客户的分区、ID、姓名和电话,假如分区固定为(武昌、汉口、汉阳、江夏、青山、黄陂)6个分区,系统已对depart建立索引,查询所有的客户信息。查询一

8、,select*fromclient没有使用任何索引列,系统按逐条扫描的方式返回数据,执行效率低(特别是在返回数据在1w条以上时)查询二,select*fromclientwheredepart=武昌ordepart=汉口.正确使用索引列depart,SQL分析器将对此SQL语句正确优化,查询效率将大大优于前1个语句,在同样访问的结果集情况下,这种写法将比前一种写法快615倍。使用索引问题二:在关系student(id,name,birth)中,查询年龄在20岁以上的所有学生信息,假设对birth建立索引。【查询一】select*fromstudentwhereyear(now)-year(b

9、irth)20【分析】由于对索引列birth进行了函数处理year,所以系统没法对该sql语句进行任何优化,将执行逐条扫描比较,执行效率低。索引列的使用还有一个基本的原则,即不要对索引列进行任何函数或者运算符的处理。【查询二】select*fromstudentwherebirthdateadd(year,-20,getdate()由于直接对索引进行比较,系统将能正确优化该SQL语句,执行效率高创建索引的一般原则创建索引的一般原则情况情况是否创建索引是否创建索引列定义了一个唯一主键是的,索引将实现唯一性列定义了一个主键并用在查询的连接条件中是的,用来减少在连接中所读的纪录列定义了一个经常被用来

10、连接另一张基表的外键是的,因为列被用在连接中列定义了一个通过关联完整性实现的外键是的,用来提高有效操作的性能列经常被用在一个返回不到百分之五的行的查询的WHERE子句中是的,只有不到百分之五的行被返回创建索引基本原则创建索引基本原则DML-数据操纵语言对基本表进行插入、修改、删除INSERT INTOINSERTINTO语句用于向表格中插入新的行。语法完全插入INSERTINTO表名称VALUES(值1,值2,.)指定所要插入数据的列:INSERTINTOtable_name(列1,列2,.)VALUES(值1,值2,.)UPDATEUpdate替换表中列/字段的数值语法Updatetable

11、SETcol=expression,.FROMfromlistWherecondition输入table现存表的名称column表table中列/字段的名expression赋予列/字段的一个有效的值或表达式fromlistPostgres的一个非标准的扩展,允许别的表中的列/字段出现在Where条件里conditionDELETEDELETE删除基本表里的记录语法deletefromtable_nameWherecondition输入table_name现存表的名称condition删除条件DQL-数据查询语言对基本表里的记录进行检索A.基本查询B.高级查询基本查询语法数据库查询是数据库的核

12、心操作。SQL语言提供了SELECT语句进行数据库的查询,该语句的语法如下:SELECT属性名表或库函数FROM基本表(或视图)WHERE条件表达式GROUPBY属性名HAVING库函数表达式ORDERBY属性名ASCORDESC基本查询语法整个SELECT语句的含义是,根据Where子句的条件表达式,从From子句指定的基本表或视图中找到满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。如果有GRoup自己,则将结果按Groupby后的属性值进行分组,该属性列值相等的元组为1个组。通常会在每组中作用集函数。如果Groupby子句带有Having短语,则只有满

13、足条件的组才予输出。如果有Orderby子句,则还需排序列的值升序或降序排序。基本查询示例数据库说明:以学生课程数据库为例说明SELECT语句的各种用法:Student(Sno,Sname,Ssex,Sage,sdept,City);学生(学号、姓名、性别、年龄、所在系、出生城市)Course(Cno,Cname);课程(课程编号、课程名称)SC(Sno,Cno,Score)学生选修(学号、课程编号、成绩)基本查询查询表中若干列选择表中的若干列表中的若干列1)查询指定列例:查询全体学生的学号与姓名selectsno,snamefromstudent2)查询全部列例:查询全体学生的详细记录Sel

14、ect*fromstudentSelectsno,sname,ssex,sage,sdnofromstudent3)查询经过计算后的列例:selectsage2fromstudent4)取别名例:selectsname姓名fromstudent基本查询过滤1)使用distinct关键字过滤重复行例:selectdistinctsnoFromSC2)使用where过滤条件例:查询所有的女学生子类select*fromstudentwheressex=女例:查询考试成绩有不及格的学生的学号SELECTdistinctsnoFromscwherescore,=,=,!=,NOT加上述确定范围BETW

15、EEN AND,NOT BETWEEN AND确定集合IN,NOT IN字符匹配LIKE,NOT LIKE空值IS NULL,IS NOT NULL多重条件AND ,OR基本查询排序使用Orderby子句对查询结果进行升序(默认ASC)或降序(DESC)排列,默认为升序。例:查询选修了3号课程的学生的学号及成绩,查询结果按分数的简序排列。Selectsno,scorefromscwherecno=3orderbyscoredesc例:查询全体学生的情况,查询结果按所在系的序号进行升序排列,同一系中的学生按年龄降序排列select*fromstudentorderbysdept,sageDESC

16、基本查询-集函数为了进一步方便用户,增强检索功能,SQL提供了许多集函数,主要有:COUNT(DISTINCT|ALL *)统计元组的个数COUNT(DISTINCT|ALL )统计一列中值的个数SUM(DISTINCT|ALL )计算一列值的总和(数值型)AVG(DISTINCT|ALL )计算一列值的平均值MAX(DISTINCT|ALL )计算一列值的最大值MIN(DISTINCT|ALL )计算一列值的最小值思考题:ALL和Distinct 有什么区别?基本查询使用集函数student(sno,sname,score)SnoSnamescore20BNull20BNull30Cnull

17、40D8960D90基本查询使用集函数例:查询学生的总人数SELECTCount(*)fromstudent例:查询选修了课程的学生人数SELECTcount(distinctsno)fromsc;例:计算1号课程的学生平均成绩selectavg(score)fromscwherecno=1例:查询选修了1号课程的学生最高分数selectMAX(score)fromscwherecno=1基本查询分组查询对查询结果果进行分行分组Groupby子句将查询结果按某一列或多列值分组,值相等的为一组。对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询的结果进行分组,集函数将作用于整个查询结果

18、。分组后集函数将作用于每一个组,即每一组都有一个函数值。例:求各个课程号及相应的选课人数selectcno,count(sno)fromscgroupbycno;selectcno,count(sno)fromsc基本查询分组查询如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用Having短语指定筛选条件;例:查询选修了3门以上课程的学生学号。selectsno,count(*)fromscgroupbysnohavingcount(*)=3;Where和Having的区别在于作用对象不同。Where子句是对分组前的元组进行选择。Having作用于分组后的数

19、据,从中选择满足条件的组。基本查询分组查询Having和Where可以一起使用,例:查询考试成绩80分以上至少有3门以上课程的学生学号和平均成绩;分析:1)考试成绩要在80分以上,是对分组前元组数据的选择,使用Select;2)至少有3门以上课程,是对分组后的数据进行筛选,使用Having所以应该是:selectsno,avg(score)fromstudentwherescore80groupbysnohavingcount(*)3基本查询-rowNum关键字(oracle特性)rowNum是系统在查询结果中的增加的一列,其存储着查询结果各行的行号.查询第10行到第20行select*from(selecta.*,rowNumasbfromstudentasaorderbysnodesc)whereb9andb21;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号