您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 关系数据库标准语言SQL资料
1第五章关系数据库标准语言SQL2本章目标掌握创建、修改、删除基本表的标准SQL语句掌握插入、修改、删除基本表数据的标准SQL语句掌握查询基本表数据的标准SQL语句掌握常用的SQL统计函数35.1SQL概述SQL(StructuredQueryLanguage)是关系数据库的标准语言。目前,所有的商业化的关系DBMS均支持SQL语言。ISO组织公布的SQL标准:SQL-89SQL-92SQL-99SQL-2003SQLServer2005符合ANSISQL-99的定义4SQL的主要功能SQL语言按照功能可以分为3大类:数据定义语言DDL(DataDefinitionLanguage)用于定义关系数据库的模式、外模式和内模式,以实现对数据库基本表、视图及索引文件的定义、修改和删除等操作。数据操纵语言DML(DataManipulationLanguage)用于完成数据查询和数据更新操作。数据控制语言DCL(DataControlLanguage)用于控制对数据库及其对象的访问,服务器的关闭、启动等操作。5SQL的特点语言简洁,风格统一,易学易懂既是自含式语言,又是嵌入式语言SQL能够独立地用于联机交互的使用方式。可以嵌入到如VisualC#、Basic、PowerBuild、Java、ASP、JSP、PowerBuild等这样的前端开发平台上。高度非过程化用SQL语言进行数据操作,只要提出“做什么”,而无须知道描述“怎么做”,SQL语句的其实现过程由系统自动完成。6SQL对象命名约定SQL对象包括数据库、表、视图、列名等。这些对象名必须符合一定规则或约定:数据对象名是为1-30长度不超过30个字符的字符串。数据对象名应以字母开头,其余字符可以由字母、数字、下划线组成。7SQL语句的书写准则SQL语句语法格式中的一些约定符号:尖括号“”中的内容为必选项。中括号“[]”中的内容为任选项。[,...]意思是“等等”,即前面的项可以重复。大括号“{}”与竖线“|”表明此处为选择项,在所列出的各项中仅需选择一项。例如:{A|B|C|D}意思是在A、B、C、D中取其一。SQL中的数据项分隔符为“,”;其字符串常数量的定界符用为单撇号“′”表示。8SQL语句的书写准则在编写SQL语句时,遵从一些通常的准则:SQL语句对不区分字母的大小写不敏感。为了提高SQL语句的可读性,子句开头的关键字通常采用大写形式。一个SQL语句可写成一行或多行,习惯上每个子句占用一行。一个关键字不能在行与行之间分开写开在多行上,并且很少采用缩写形式。SQL语句的结束符为分号“;”。9插入记录SQL语言的插入语句为INSERT,有两种形式:单行插入和多行插入。插入单条记录INSERTINTO表名[(属性列1[,属性列2]…)]VALUES(常量1[,常量2]…);该命令将单条新记录插入指定表中,属性列与常量根据位置对应。注意:(1)属性列的个数与常量的个数要相等,且顺序一致。(2)定义为NOTNULL的属性列,若没有出现在INTO子句中,这些列将取空值。定义为NOTNULL的属性列且未定义默认约束的属性列,则必须出现在INTO子句后。(3)如果INTO子句中没有指定任何列,则VALUES子句后面的常量个数必须与基本表中列的个数相等,且类型、顺序一致。【例】在部门表dept中插入一条部门新记录。INSERTINTOdept(dept_id,dname,tel)VALUES(‘311’,’产品开发部’,’08667864532’);【例】在员工表employee中插入一条员工新记录。INSERTINTOemployeeVALUES(‘1311’,’陈淳’,NULL,NULL,to_date(’2004/08/15’),800,200,’11’);106-14在users表插入一条新纪录。INSERTINTOusers(uid,uname,uidno.u_utid)VALUES(‘201008120021’,’陈东’,’310228198012230046’,1);等价于:INSERTINTOusersVALUES(‘201008120021’,’陈东’,’310228198012230046’,1);116-15在cards表中插入一条新纪录。INSERTINTOcardsVALUES(‘100008’,’201008120021’,200,cast(‘2010-10-1512:00:00’asdatetime),1);12修改记录SQL语言修改记录的语句为UPDATE。该语句有3种形式:修改单条记录、修改多条记录以及使用子查询修改记录。UPDATE表名SET列名=表达式[,列名=表达式][,…][WHERE条件];SQL语言的修改UPDATE语句的功能是将指定表中符合WHERE子句条件的记录找出,以表达式的值替代相应属性列的值。13修改单条记录6-17将UTYPES表中临时人员的借阅限量改为10.UPDATEUTYPESSETborrowmaxnumber=10WhereUTNAME=‘临时人员’;14修改单条记录【例】修改’1311’号员工的月系薪为1700。UPDATEemployeeSETsal=1700WHEREemp_id=’1311’;15修改多条记录6-18将UTYPES表中学生和临时人员的借阅限量在现有基础上加10.UPDATEUTYPESSETborrowmaxnumber=borrowmaxnumber+10WhereUTNAME=‘临时人员’orUTNAME=‘学生’;16修改多条记录【例】所有员工月薪上调5%。UPDATEemployeeSETsal=sal*1.05;【例】取消编号为’21’号部门的的所有员工取消的岗位津贴。UPDATEemployeeSETcomm=0WHEREdept_id=’21’;17删除记录SQL语言删除记录的语句是DELETE。该语句有3种形式:删除单条记录、删除多条记录以及使用子查询删除。DELETEFROM表名[WHERE条件];DELETE语句的功能是:先按照将指定表中符合WHERE子句中指定的条件的范围将记录找出来,然后进行删除。18删除单条记录【例】删除员工号为’1045’的记录。DELETEFROMemployeeWHEREemp_id=’1045’;6-20删除cards表中校园卡编号为100005的记录DeleteFromcardsWherecid=‘100005’;19删除多条记录6-21删除cards表中卡状态为注销的记录DeleteFromcardsWherecstatus=3;6-22删除例6-16创建的cards_cancel表中所有记录。DeleteFromcards_cancel;20删除多条记录【例】删除部门号为’31’的所有员工记录(不包括部门主管)。DELETEFROMemployeeWHEREdept_id=’31’andjob’部门主管’;【例】删除所有员工记录。DELETEFROMemployee;删除所有记录,是清空表中数据,因此不加WHERE子句。这类操作的执行应非常小心慎重。215.4数据查询SELECT语句执行数据库的查询操作,是DML语句中的核心部分。SELECT语句的作用是让数据库服务器根据客用户要求搜索出所需要的数据库数据,并将形成得到的结果集按规定格式返回给用户。SELECT语句具有强大的查询功能,能实现数据查询、结果排序、分组、统计以及多表连接查询等功能。22SELECT语句的结构SQL语言提供的SELECT语句的一般格式:SELECT[ALL|DISTINCT]目标列表达式[,目标列表达式][,…]FROM表名或视图名[,表名或视图名][,…][WHERE条件表达式][GROUPBY列名1[HAVING条件表达式]][ORDERBY列名2[ASC|DESC]];23选择行和列选择满足条件的若干行记录(1)查询一个表的所有行在SELECT语句中只要没有WHERE子句,查询结果就包含了所有行。6-24查询USERS表所有持卡人信息。SELECT*FROMusers;【例】查询表employee的所有员工的员工号和姓名的信息。SELECTemp_id,enameFROMemployee;2425选择行和列(2)查询满足条件的某些行查询满足条件的某些行,可以通过WHERE子句来实现条件选择。6-25查询cards表中卡内余额超过50元的校园卡编号和卡内余额。SELECTcid,cbalanceFROMcardsWHEREcbalance50;6-26查询cards表中编号为100005的全部内容。SELECT*FROMcardsWHEREcid=‘100005’;【例】查询月薪超过1800的员工姓名和月薪信息。SELECTename,salFROMemployeeWHEREsal1800;【例5】查询员工号为’1001’的员工姓名及部门号信息。SELECTename,dept_idFROMemployeeWHEREemp_id=’1001’;2627选择满足条件记录的若干列(1)查询表的全部列【例】查询部门表中部门编号号为’11’的全部内容部门信息。SELECTdept_id,dname,telFROMdeptWHEREdept_id=’11’;等价于SELECT*FROMdeptWHEREdept_id=’11’;28选择满足条件记录的若干列(2)查询表的部分列在很多情况下,查询结果只需要显示部分列,这时SELECT子句的目标列表达式中要指定列名或表达式。【例】查询全体员工的员工号,姓名和参加工作时间。SELECTemp_id,ename,workdateFROMemployee;查询经过计算的值。6-28查询UTYPES表中持卡人的借阅限期,以月计算。Selectutid,utname,borrowmaxdays/30Fromuserstypes;29查询时在目标列表达式中使用字符串常量,结果会更清晰。Selectutid‘类型编号’,utname‘类型名称’,borrowmaxdays/30‘借阅限期(月)’Fromuserstypes;如果要把显示结果的重复行去掉用DISTINCT命令。6-30SelectDISTINCTbotitleFrombooks;3031选择满足条件记录的若干列(3)查询经过计算的值SELECT子句的目标列表达式不仅可以是基本表的属性,也可以是表达式,包括算术表达式、字符串常量和函数等。【例】查询全体员工的姓名及年薪。SELECTename,sal*12FROMemployee;【例】上例查询如果在目标列表达式中使用字符串常量,结果会更清晰。SELECTename姓名,sal*12年薪FROMemployee;查询结果如下:enamesal*12----------------------------------------吴伟16380王斌18900岳玲13860徐欢10080陈淳21420查询结果如下:姓名年薪----------------------------------------吴伟16380王斌18900岳玲13860徐欢10080陈淳2142032模糊查询SQL语言提供了使用运算符LIKE以及通配符“%”(百分号)和“_”(下划线),用来实现模糊查询。“%”代表任意长度(长度可以为0)的字符串。“_”代表任意单个字符。6-31查询所有姓李的持卡人的姓名。SelectunameFromusersWhereunamelike’李%’;6-32查询姓名第2个字为‘立’的员工姓名。SelectunameFromusersWhereunamelike’_立%’;3334模糊查询【例】查询所有姓张员工的姓名。
本文标题:关系数据库标准语言SQL资料
链接地址:https://www.777doc.com/doc-3868289 .html