1、虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如“Select”、“Insert”、“Update”、“Delete”“Create”和“Drop”常常被用于完成绝大多数数据库的操作。SQL功能强大,但是概括起来,它可以分成以下几组:DML(DataManipulationLanguage,数据操作语言):用于检索或者修改数据;DDL(DataDefinitionLanguage,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;DCL(DataControlLanguage,数据控制语言):用于定义数
2、据库用户的权限。SQL介绍-2DML数据操作数据操作 可以细分为以下的几个语句可以细分为以下的几个语句SELECT:用于检索数据;INSERT:用于增加数据到数据库;UPDATE:用于从数据库中修改现存的数据DELETE:用于从数据库中删除数据。DDL数据定义数据定义 语句可以用于创建用户和重建数据库对象语句可以用于创建用户和重建数据库对象CREATETABLE-创建一个数据库表DROPTABLE-从数据库中删除表ALTERTABLE-修改数据库表结构CREATEVIEW-创建一个视图DROPVIEW-从数据库中删除视图CREATEINDEX-为数据库表创建一个索引DROPINDEX-从数据库
3、中删除索引CREATEPROCEDURE-创建一个存储过程DROPPROCEDURE-从数据库中删除存储过程CREATETRIGGER-创建一个触发器DROPTRIGGER-从数据库中删除触发器DCL数据控制数据控制用于创建关系用户访问以及授权的对象用于创建关系用户访问以及授权的对象GRANT-授予用户访问权限DENY-拒绝用户访问REVOKE-解除用户访问权限SQL介绍-3在正式学习SQL语言之前,首先让我们对数据库结构有一个基本认识:数据库的数据体系结构基本上是三级结构,但使用术语与传统关系模型术语不同。在SQL中,关系模式(模式)称为“基本表”(basetable);存储模式(内模式)称
4、为“存储文件”(storedfile);子模式(外模式)称为“视图”(view);元组称为“行”(row);属性称为“列”(column)。1:表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。2:视图是由若干基本表或其他视图构成的表的定义。3:一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应4:用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。执行SQL的工具OraclesqlplusToadSQLServer查询分析器DB2命令行中心检索数据nSQ
5、L的基本语法n无条件查询n有条件查询比较运算符算术运算符逻辑运算符子查询多表连接查询n排序查询n计算查询检索数据-基本语法Select基本语法:SELECT select_listFROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC|DESC SELECT子句子句:指定由查询返回的列。FROM子句子句:Selec语句中使用的表、视图WHERE 子句子句:指定用于限制返回的行的搜索条件。GROUP BY
6、子句子句:指定用来放置输出行的组,并且如果SELECT子句中包含聚合函数,则计算每组的汇总值。指定GROUPBY时,选择列表中任一非聚合表达式内的所有列都应包含在GROUPBY列表中,或者GROUPBY表达式必须与选择列表表达式完全匹配。HAVING 子句子句:指定组或聚合的搜索条件。HAVING通常与GROUPBY子句一起使用。ORDER BY 子句子句:指定结果集的排序。检索数据-无条件查询检索整张表:select*from table*号表示选择表中所有列检索表中某些列:select pk_corp,unitcode,unitname from bd_corp从公司基本档案中选择pk_c
7、orp,公司编码,公司名称取消重复值:selectdistinctecotypefrombd_corp将bd_corp中重复ecotype值在结果中消除掉.DISTINCT 关键字可从 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行,包括重复的行。检索数据-有条件查询有条件查询就是WHERE 子句,指定用于限制返回的行的搜索条件。算术运算符:算术运算符在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。+(加)。-(减)。*(乘)。/(除)。%(模)模的含义是除法的整数余数如:selectchinese+englishasal
8、lscorefromscorewherename=a将a的语文成绩和英语成绩相加得到总分.其中 as 是用于为结果集列指定别名 比较运算符:比较运算符测试两个表达式是否相同,可以用于数值,字符串,日期等=(等于)(大于)=(大于或等于)=(小于或等于)(不等于)如:selectnamefromscorewherechinese60将语文成绩不及格的查找出来.检索数据-有条件查询逻辑运算符:逻辑运算符对某个条件进行测试,以获得其真实情况。逻辑运算符和比较运算符一样,返回带有 TRUE 或 FALSE 值的布尔数据类型运算符运算符含义含义AND如果两个布尔表达式都为 TRUE,那么就为 TRUE。
9、IN如果操作数等于表达式列表中的一个,那么就为 TRUE。LIKE如果操作数与一种模式相匹配,那么就为 TRUE。NOT对任何其它布尔运算符的值取反。OR如果两个布尔表达式中的一个为 TRUE,那么就为 TRUE。查询空值:select*frombd_corpwheretaxcodeisnullselect*frombd_corpwheretaxcodeisnotnull搜索串匹配:select*frombd_corpwhereunitnamelike正航%select*frombd_corpwhereunitnamelike%正航%select*frombd_corpwhereunitnam
10、elike%正航查找一组值:selectpk_corp,unitcode,unitnamefrombd_corpwherepk_corpin(1001,1003)查找pk_corp等于1001或者等于1003的公司名和编号检索数据-子查询子查询:ININ子查询子查询通过IN(或NOTIN)引入的子查询结果是一列零值或更多值。子查询返回结果之后,外部查询将利用这些结果。select invcode,invname from bd_invbasdoc where dr=0 and pk_invcl in(select pk_invcl from bd_invcl where invclassnam
11、e=木普凤)查找存货分类为木普凤的存货名称和编码EXISTSEXISTS子查询子查询使用EXISTS关键字引入一个子查询时,就相当于进行一次存在测试。外部查询的WHERE子句测试子查询返回的行是否存在。子查询实际上不产生任何数据;它只返回TRUE或FALSE值。select invcode,invname,pk_invcl from bd_invbasdoc where exists(select a.pk_invcl from bd_invcl a where dr=0 anda.pk_invcl=bd_invbasdoc.pk_invcl and a.invclassname=木普凤 an
12、d a.dr=0)此语句等价与上面的IN子查询.检索数据-多表连接查询内连接inner joinselect invcode,invname from bd_invbasdoc bas inner join bd_invmandoc man on bas.pk_invbasdoc=man.pk_invbasdoc where man.pk_corp=1001 and man.dr=0 and bas.dr=0查询1001公司的存货编码和名称 内连接指的是两个表中结果集的交集,如图:检索数据-连接查询左外连接left outer joinA A:selectcgeneralbid,cinvbas
13、id,cinventoryid,cvendoridfromic_general_bwheredr=0andcinventoryid=0001AA100000000059GRB:selecticb.cgeneralbid,icb.cinvbasid,icb.cinventoryid,custbas.custnamefromic_general_bicbleftouterjoinbd_cumandoccustmanonicb.cvendorid=custman.pk_cumandocleftouterjoinbd_cubasdoccustbasoncustman.pk_cubasdoc=custb
14、as.pk_cubasdocwhereicb.cinventoryid=0001AA100000000059GRandicb.dr=0左外连接首先要确保左边的表数据是完全的,所关联的表数据不一定全.检索数据-连接查询右外连接right outer join右外连接和左外连接正好相反,首先要确保右边表的数据完整,左边表的数据不一定全.在此不进行举例.还有一种连接叫全连接,就是既包含左边表也包含右边表的笛卡儿乘积.检索数据-排序查询语法语法 ORDER BY order_by_expression ASC|DESC ,.n 参数参数order_by_expression指定要排序的列。可以将排序列指定为列名或列的别名(可由表名或视图名限定)和表达式,或者指定为代表选择列表内的名称、别名或表达式的位置的负整数。可指定多个排序列。ORDERBY子句中的排序列序列定义排序结果集的结构。ORDERBY子句可包括未出现在此选择列表中的项目。然而,如果指定SELECTDISTINCT,或者如果SELECT语句包含UNION运算符,则排序列必定出现在选择列表中。此外,当SELECT语句包含UNION运算符时,列名或列的别名必须是在第一选择列表内指定的列名或列的别名。说明说明在ORDERBY子
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1