sqlserver常用关键字、数据类型和常用语法

上传人:飞*** 文档编号:48314766 上传时间:2022-01-03 格式:DOCX 页数:26 大小:85.39KB
收藏 版权申诉 举报 下载
sqlserver常用关键字、数据类型和常用语法_第1页
第1页 / 共26页
sqlserver常用关键字、数据类型和常用语法_第2页
第2页 / 共26页
sqlserver常用关键字、数据类型和常用语法_第3页
第3页 / 共26页
资源描述:

《sqlserver常用关键字、数据类型和常用语法》由会员分享,可在线阅读,更多相关《sqlserver常用关键字、数据类型和常用语法(26页珍藏版)》请在装配图网上搜索。

1、v1.0可编辑可修改SQL Server 200;常用关键字、数据类型和常用语法常用关键字:SQL server 2008 一共大约有180多个关键字。简要分为主要关键字、辅助 关键字和函数类关键字。本文就常用的这三类关键字进行语法说明和用例。说明:1、比较好的习惯是,数据库名以 D_JF头,表名用T_开头,字段名以 F_开头,这样可以防止和关键字重名。2、如果确实用到了系统关键字,就要在关键上加 口方括号,以与关键字进行区别。例如有一个用户表被命名为USER则查询该表内容的时候:SELECT *FROM USER句是错误的,应该是 SELECT * FROM USER因为USER1关键字。编

2、P关键字应用场景主要关键字1CREATE创建表2ALTER修改表结构3DROP删除数据库和表4INSERT插入表数据5INTO与INSERT连用,插入表数据6VALUES插入表数据时,指定列值7UPDATE更新京数据8SET与UPDATE1用,设定列值9SELECT查询表数据10FROM从哪个表中查询11WHERE查询表数据的条件12DATABASE数据库13TABLE数据表14NOT15NULL空值16IDENTITY(1,1)标识列17CONSTRAINT约束,后边跟约束名18PRIMARY主键,PRIMARY KE Y列名)19FOREIGN外键FOREIGN KEY(列名)20KEY2

3、1REFERENCES把印作参考,指定外键的时候用22CHECKCHECK 勺束23UNIQUE唯一性约束24COLUMN列25DEFAULT默认值26AND和27OR或28TRUNCATE截断,快速清空表内数据29ORDER常与by连用30BY与 GROUP ORDER!用31ASC升序32DESC降序33AS列名别称34DELETE删除表数据35LIKE通配符36ISMT NULL值37IN离散值38BETWEEN连续值,常与and连用39GROUP分组,常与by连用40HAVING对GROUP B汾组内的数据进行过滤41TOP筛选结果集42DISTINCT43UNION44ALL45CA

4、SE类似与。凝白SWITCH-CASEg法,查询离散值46ELSE设定case的默认值47END结束case语句48WHEN与case连用49VIEW视图50INDEX索引51JOIN联合查询52ON与JOIN连用数据类型:SQL Server 2008 一共有36种数据类型。具体如下:编R数据类型存储空间字符类型说明整数型(4)1tinyint1R取值范围:0-2552smallint2寸取值范围:-2768327673int4寸取值范围:-231231-14bigint8寸取值范围:-263-263-1浮点类型(6)5decimal(p,s)517R取值范围:-1038+1 1038-1。

5、p (有效位数,p的取值小于38),可储存的最大十进位数总数,小数点左右两侧都包括在内。s (小数位数,0 <= s <= p <=38)小数点右侧的小数位数。例如:decimal(3,1) 表不,一共3位有效位,其中整数部分2位,小数部分1位,最大值是,最小值是6numeric(p,s)4R取值范围:-214,。用法类似decimal7smallmoney4R取值范围:-2142 14。主要是用于货币8money8R取值范围:一主要用于货币9real4或8字节取值范围:+ 3810r +3810float4寸取值范围:字符类型(8)11char(n)每字符1字节,最大可达

6、8000字节。ANSI字符,会用空格填充。12nchar(n)每字符2字节,最大可达4000字节。UNICOD今符,会用空格填充。13varchar(n)每字符1字节,最大可达 8000字节。ANSI字符, 可变长度,不会用空格填充。14varchar(MAX)ANSI字符,最大可达 2G15nvarchar(n)每字符2字节,最大可达4000字节。UNICOD今符, 可变长度,不会用空格填充。16nvarchar(MAX)最多为 231 - 1(2 147 483 647)字符17text每字符1字节,最大可达 2Go18ntext每字符2字节,最大可达 2Go二进制数据类型(5)19bit

7、1比特NULL 0 或 120binary(n)固定长度二进制数据,最高可达8000字节。21varbinaryPJ变长度二进制数据,最局可达8000字节。22varbinary(MAX)最多为232-1字节23imagePJ变长度二进制数据,最图可达2GR日期和时间类型(7)24smalldatetime25date3R精支持前 01/01/0000 31/12/9999。26datetime8R秒,支持的范围是'1000-01-01 00:00:00' 至IJ'9999-12-31 23:59:59'。以'YYYY-MM-DDHH:MM:SS'

8、;格式显示DATETIME!27datetime2(n)6-8 字节100纳秒28datetimeoffset(n)8-10 字节100纳秒29time3一5字节100纳秒30timestampTIMESTAM植返回后显示为'YYYY-MM-DDHH:MM:SS'格式的字符串。其他数据类型(6)31xml附于存储xml格式的义档,最大可达2GBi支持128级层次。32geography地理数据。33geometry几何数据。34hierarchyid主要解决的问题是拥有层次关系的表格,通常用来建立树形结构35sql_variant附于存储 SQL Server 2005 支持的

9、各种数据类型(不包括 text、ntext、image、timestamp 和sql_variant )的值。对于 sql_variant数据类型,必须先将它转换为其基本数据类型值,然后才能参与诸如加减这类运算36uniqueidentifierUniqueidentifier是全局唯一的标识,可存储 16字节的二进制值,其作用与全局唯一标记符(GUID)一样,一般用来做主键。常用语法:一、数据库【创建数据库】CREATE DATABASEbname>【修改数据库】ALTER DATABASSbname>【删除数据库】DROP DATABA<Ebname>二、表结构【创

10、建数据表】1、设定字段是允许空,非空、标识列,自增和主键约束。CREATETABLET_CUSTOMER 表名(CUSTOMERIDNT IDENTITY(1, 1),-客户ID,标识列,从开始,每次自增COMPANYNAMIVARCHAR0) NOT NULL,-,如果不显示指明 NOT NULL系统默认是允许空的USERNAMNVARCHAR0) NOTNULL,-联系人姓名,三曰空PHONENUMBERHAR11) NULL,-联系电话,允许为空CONSTRAINTT_CUSTOMER_PrimaryKey3RIMARYKEY (CUSTOMER)。-设定 USER防主键,用括号括起来/

11、*每个单词之间是空格隔开,每个字段之间用单引号隔开,整个字段定义部分用括号括起来*/*T_RegUser_PrimaryKey 是约束名 */2、设定字段是UNIQUEIDENTIFIER:据类型,唯一性约束,CHEC的束和默 认值约束。CREATETABLET_CUSTOMER(CUSTOMERIUNIQUEIDENTIFIERUNIQUE-客户 ID, UNIQUEIDENTIFIE的型,唯一性约束COMPANYNAMIVARCHAR0) NOT NULLUNIQUE-公司名称,非空,唯一性约束USERNAMNVARCHAR0) NOTNULL,PHONENUMBERHAR11) NULL

12、,AGETINYINT NULLCHECKAG0),-联系人年龄,允许空,check约束必须大于MODIFIEDDATE)ATENULLCONSTRAINT_CUSTOMER_DEFAUDJTFAUL1GETDAT(E, 一默认值约束,并调用 SQL 函数 GETDATE()CONSTRAINTT_CUSTOMER_PrimaryKey3RIMARYKEY (CUSTOMER)3、设定字段外键CREATETABLE T_ORDER -订单表(ORDERIDINT IDENTITY( 1, 1),-订单 ID ,标识字段,自增PRODUCNVARCHAR0) NOTNULL,-产品PAYMENT

13、MONEYNOTNULL,-货款ORDER_CUSTOMESIDIQUEIDENTIFIEFNOTNULL,-客户 ID ,为外键,外键内容是 T_CUSTOMER勺 CUSTOMERID 列CONSTRAINT_ORDER_PrimaryKeyPRIMARYKEYORDERID -设置 ORDERIDJ主键CONSTRAINT_ORDER_T_CUSTOMER_ForeignKeOREIGNKEY ORDER_CUSTOMER REFERENCEST_CUSTOMERUSTOMERI)D/*设定外键基本语法*/CONSTRAINT约束名 FOREIGNKEY 外键表列名)REFERENCES

14、主键表 (主键表列名)/*设置外键,T_ORDER_T_CUSTOMER_ForeignKey键约束名,FOREIGN KEY边是本表内要被设置的外键REFERENCED九是主键所在的表,括号内是主键表的链接列*/*表名后的所有内容,都要拿括号括起来*/*外键的数据类型要和主键一模一样,哪怕主键是UNIQUEIDENTIFIE他必须设置成一样*/【修改表名】/*修改表名,可能会破坏脚本和存储过程。*/EXECSP_RENAME< 原表名 >','< 新表名 >'示例:EXECSP_RENAME_CUSTOMER2"T_CUSTOMER2

15、2'【修改表结构】1、添加列和列的约束/*添加列、添加唯一性约束 */ALTERTABLE< 表名 >ADD<列名1> BIT NOTNULL,-添加多个列不用括号,用逗号分开即可列名2> INT NOTNULL UNIQUE声明的时候,和创建表的时候一样示例:ALTERTABLET_CUSTOMERADDGENDEFBIT NOTNULL,-添加多个列不用括号,用逗号分开即可CUSTOMERADDRESS NOTNULL UNIQUE-声明的时候,和创建表的时候一样2、删除列/*删除列*/ALTERTABLE <表名 >DROPCOLUM&l

16、t;列名1>,<列名2>-使用关键字COLUNM列)示例:ALTERTABLET_CUSTOMERDROPCOLUMN3ENDEFCUSTOMERADDRESS用关键字 COLUNM歹U)/*每个列名之间用逗号隔开,如果列上有任何约束,则需要先删除约束*/3、添加主键约束,唯一性约束、check约束和默认值约束/*添加主键约束,唯一性约束,check约束和默认值约束*/ALTERTABLE< 表名 >ADDCONSTRAINT约束名CHECK( CHECK束内容,-CHECK勺束,每个约束之间用逗号隔开CONSTRAINT约束名> UNIQUE<歹U名

17、 >),-唯一性约束CONSTRAINT:约束名> DEFAULK默认约束彳!或函数 > FOR<列名 > 一默认值约束 示例:ALTERTABLET_CUSTOMERADDCONSTRAINTT_CUMSTOMER_AGE_CHCCKCK( AGg, -CHECK勺束 CONSTRAINTT_CUSTOMER_USERNAME_UNUNUEUEUSERNAME-唯一性约束 CONSTRAINTT_CUSTOMER_DEFALDJTFAULTGETDAT(E FORMODIFIEDDATE-默认值约束4、删除主键约束,唯一性约束、check约束和默认值约束/*删除

18、主键约束,删除唯一性约束、删除 check约束,删除默认值约束*/ALTERTABLE:表名 >DROB约束名1>, <约束名2>, <约束名3>-后边直接跟约束名,用逗号隔开示例:ALTERTABLET_CUSTOMERDROPT_CUSTOMER_DEFAULTt边直接跟约束名,用逗号隔开UQ_T_CUSTOM_EDBD0E1935BC,FE0ACK_T_CUSTOMER_AGE_276EDEB3如果创建的时候,没有显性的指定约束名,例如UNIQUE CHEC管约束,可以通过sp_helpt_customeR查询所有的约束名。在查询结果的第7个结果集中,

19、可以看到类似下图的结果,第一列是约束类型,第二列就是约束名,最后一列是 列名。cnismt_raf1tMejdion ipdneaM虹jsgjsd::虫r1 ffiiuHr'iFfftkisw岫)札W丽J L, 明尼UONFD2 LSGUEncr-cfeHi;叨 TOOM 61QBDSS25J89W1阖峋N和隔。一乖丫出口3"QUEWii;加即阖,可h印峭CDMPDN脚 E5、修改列的字段类型/*修改列的字段类型和非空*/ALTERTABLE< 表名 >ALTERCOLUMN列名新数据类型>示例:ALTERTABLET_CUSTOMERALTERCOLUMN

20、CUSTOMERADDRESSARCHAR00)-修改多列的字段类型还不知道怎么改6、设置列的空/非空/*修改列的空和非空*/ALTERTABLE< 表名 >ALTERCOLUMN列名数据类型> NOT NULJ必须跟数据类型,否则会示例:ALTERTABLET_CUSTOMERALTERCOLUMN/IODIFIEDDATEDATE NULL7、修改列名/*修改列名,可能会破坏脚本和存储过程 */EXECSP_RENAME<tbname>.<原列名 >','<新列名>','COLUMN-后边的column是

21、固定写法示例:EXECSP_RENAME , 'PHONE', 'COLUMN-将原来的 PHONENUMBERg号码,改成 PHONE!话【删除表】DROPTABLE<tbname>三、表数据【插入数据】1、插入一行全字段数据/*插入一行全字段数据*/INSERT INTO <tbname>VALUES'值1','值2','值3')-值的数量必须和表定义的一样多,而且数据类型必须一一对应示例:INSERT INTO T_CUSTOMERVALUES( NEWID),'公司 3',&

22、#39;用户 3' ,'123' , DEFAULTxxx')-要到了 NEWID()函数2、插入一行部分字段数据/*插入一行数据*/INSERT INTO <tbname>(歹U 1 ,歹U 2,歹U 3.)VALUES'值1','值2','值3')-字符串是要用单引号括起来,数字值不用示例:INSERT INTO T_CUSTOMER2(COMPANYNAMJBERNAMEHONENUMB)ERVALUES'公司1','用户1',")与要插入的列一一对应,可

23、以不同于表定义的顺序,可以乱序,只要一一对应即可/*CUSTOMERID1标识列,自增的,所以不用指定*/3、插入多行数据INSERT INTO T_CUSTOMER2(COMPANYNAMJBERNAMEHONENUMB)ERVALUES'公司 2','用户 2',"),('公司3','用户3',''),-用括号将每一行数据括起来,括号与括号之间用逗号隔开('公司4','用户4','')4、插入函数值和默认值/*UNIQUEIDENTIFIER类型字段,使

24、用 NEWID()函数。有默认值的使用 DEFAULT键字*/INSERT INTO <tbname>(列1,列2,列3,列4,)VALUESNEWID),'值 1','值 2' , DEFAULT示例:/*CUSTOMERIDt UNIQUEIDENTIFIE或型,所以要使用 NEWID()函数,MODIFIEDDAT字段有模式值,是取 得当前的日期时间 GETDATE(国数*/INSERT INTO T_CUSTOMER(CustomerjcompanynamisernamphonemodifieddateVALUESNEWID),公司,用户,D

25、EFAULT【修改数据】/*UPDATE通常是与SET和WHERE合使用,如果不用 WHERE则会把整个列都修改*/UPDATE<tbname>SET列='彳TWHERE='值'AND列='值'可以是任何删选条件示例:/*将公司2的电话号码修改成*/UPDATET_CUSTOMERSET PHONE'WHER£OMPANYNAM公司 2'【查询数据】1、查询所有数据,或者部分行数据(用 where进行过滤)/*查询表中的所有数据用星号 */SELECT*FROM<tbname>WHERE:筛选条件1>

26、; AND筛选条件2> OR筛选条件3>示例:/*查询客户表中的所有数据*/SELECT* FROMT_CUSTOMER2、查询表中的部分列数据,/*查询部分列的所有数据,或者部分行部分列的数据*/SELECT:列名1>,<列名2>,< >-这个列名顺序可以按照自己的想法来,不用非要和表定义一致FROMT_ORDERWHERE<筛选条件1> AND筛选条件2> OR筛选条件3>示例:/*查询订单表中的所有数据*/SELECTPRODUCTPAYMENTFROMT_ORDER3、对查询出来的数据进行排序/*ORDER BY的默认排

27、序是升序ASC如果BY勺列是数字,则是从大到小,如果是字符串,则是从 A如果是时间从远至近。降序的话是加关键字DESC假如是升序,最好也加上 ASC*/SELECT*FROM<tbname>WHERE:筛选条件1> AND筛选条件2> OR筛选条件3>ORDEFBY<歹U名 1> ASC计序)/DESC(降序),< 歹|名 2> ASC计序)/DESC(降序)/*歹U1和列2可以采用不一样的排序*/示例:/*查询客户表中的所有数据*/SELECT*FROMT_ORDERWHEREAYMENTI00 价格大于 100ORDEFBY PRODU

28、CASC PAYMENDESG-产品名称使用升序,产品价格使用降序【删除数据】1、删除一般数据/*删除公司一般数据*/DELETEFROM<tbname>WHERE:筛选条件1> AND:筛选条件2> OR:筛选条件3>示例:/*删除公司,公司ID是订单表的外键*/DELETEFROMT_CUSTOMERWHERECOMPANYNAM 公司 1'2、快速高效的删除表内的全部数据/*快速高效的清空表内的全部数据,TRUNCATE意是截短、把-截短。TRUNCATE能用来删除表中的所有数据,不能用来删除部分数据,而且有外键约束的主键表不能被删除*/TRUNCA

29、TffABLE <tbname>示例:/*删除公司,公司ID是订单表的外键*/TRUNCATffABLE T_CUSTOMER3、删除有外键约束的数据/*如果该条数据已经被外键表引用,则无法删除。被引用的数据必须置于未被使用的状况,方法就是修改外键表字段,或者删除外键表中的引用数据*/示例:/*删除公司,公司ID是订单表的外键*/UPDATET_ORDER-将所有引用公司1的数据全部改成公司2SET ORDER_CUSTOMER2f20b157-a287-43e0-be99-1fb9'WHEREDRDER_CUSTOMERCD13076f-7889-400e-aa7a-bd

30、70'/*然后才可以在主键表中删除公司1*/DELETEFROMT_CUSTOMERWHER£OMPANYNAM 公司 1'四、其他辅助关键字LIKE通配符】1、单字符通配符,只能用于字符串匹配/*单字符通配符_*/SELECT*FROMT_CUSTOMERWHERE:列名1> LIKE '_通配符AND筛选条件2> OR筛选条件3>示例:SELECT*FROMT_CUSTOMERWHEREJSERNAM日KE '用户-将客户表中包含"用户 短意字符”的行数据查出来2、多字符通配符,只能用于字符串匹配/*单字符通配符。/%百

31、分号代表*从0到N)勺字符串/SELECT*FROMT_CUSTOMERWHERE:列名1> LIKE '%通配符' AND筛选条件2> OR筛选条件3>示例:SELECT*FROMT_CUSTOMERWHEREJSERNAMEIKE '%用户'-查询客户表中用户名包含“用户”二字的所有数据【AS列名】1、AS可以将查询结果的英文定义表头改成非英语的别名表头/*单字符通配符_*/SELECT:歹U名1> AS:别名1>,<列名2> AS:别名2> -每个列之间用逗号隔开FROM<tbname>示例:SE

32、LECTCOMPANYNAME 公司,USERNAMAS 联系人,PHONEAS 联系电话FROMT_CUSTOMERNULLffl1、NULL®要用特殊的关键字IS或IS NOT,而不能用!=或<>之类的符号示例:SELECTCOMPANYNAMISERNAMEFROMT_CUSTOMERWHEREHON日S NULL-选出电话号码是NULL勺行,也可以与其他条件一起使用或者SELECTCOMPANYNAMISERNAMEFROMT_CUSTOMERWHEREPHON日S NOTNULL-选出电话号码不是 NULL的行【IN匹配离散值】1、如果要查询离散值,一个方法是很

33、多个OR条件,可以可以用IN或NOTN关键字。示例:SELECT*FROMT_DOCTORWHEREkGEIN (23,24,34)-选出年龄是 23,24和34岁的医生或者SELECT*FROMT_DOCTORWHEREkGENOTIN (23,24,34)-选出年龄不是 23,24和34岁的医生【BETWEEN酉己连续值】1、如果要查询离散值,一个方法是很多个OR条件,可以可以用IN或NOTN关键字。示例:SELECT*FROMT_DOCTORWHEREkGEBETWEE20 AND50-查询出年龄介于20到50之间的医生数据或者SELECT*FROMT_DOCTORWHEREkGE NO

34、T BETWEE20 AND50-查询出年龄不介于 20至U 50之间的医生数据【GROUP组】1、按照某列分组/*先按照GROUP BY段进行分组,然后在分组内进行操作。所以SELEC后的歹U名只能是GROUP BY的歹U,或者是聚合函数。如果有 WHERE话,GROUPORDER必须放在 WHERE后*/SELECT分组列名 AS列别名,聚合函数1,聚合函数2FROM<tbname>GROUPBY分组列名示例:SELECTF_AGEAS 年龄,COUNT) AS 人数,AVGF_SALARY AS 工资平均值FROMT_EMPLOYEEGROUPBY F_AGE-按照年龄分组输

35、出结果:2、按照多列分组/*先按照列名1分组,再按照列名2分组。如何列名1分为3组,每一组里边按照列名 2又分为2组,则输出就是6行数据*/SELECT列名1,歹U名2,聚合函数FROM<tbname>GROUPBY列名1,列名2-直接用逗号隔开多个列名即可示例:SELECTF_AGEAS 年龄,F_SALARYAS 工资,COUNT) AS 人数FROMT_EMPLOYEEGROUPBY F_AGEF_SALARY按照年龄分组,再按照工资分组,然后统计人数ORDEFBY F_AGEASC-ORDER BX可以一起使用输出结果:【HAVIN微据分组后的再筛选】1、数据分组后的筛选/

36、*HAVING是对分组以后的数据进行过滤。有了GROUP BY能使用HAVING无GROUP BY1不能使用HAVING的。HAVING的列,也只能和SELEC语句一样,使用GROUP BY或者聚合函数*/SELECT列名1,歹U名2,聚合函数FROM<tbname>GROUPBY列名1,列名2-直接用逗号隔开多个列名即可HAVING聚合函数的筛选条件示例:SELECTF_AGEAS 年龄,F_SALARYAS 工资,COUNT) AS 人数FROMT_EMPLOYEEGROUPBY F_AGEF_SALARY按照年龄分组,再按照工资分组,然后统计人数HAVINGCOUNT)>

37、; 1-在分组中剔除count数为的小分组输出结果:【TOP艮制结果集】1、对查询出的前几条数据的筛选/* 一般是与ORDEFB值用,而且TOP必须放在*型号或者列名的前面。不和 ORDEFBYfe可以使用,但是查询结果不确定*/SELECTTOP 数量 歹U1,歹U2FROM<tbname>ORDEFBY排序列1,排序列2 DESC/ASC示例:SELECTTOP3 F_NAMEF_SALAR¥选出工资最高的三个人FROMT_EMPLOYEEORDEFBY F_SALARYDESC2、对查询出的中间结果进行筛选,使用子查询。这个非常重要的是用在分 页上。/*如果要选择从

38、X开始后丫个结果的子集,第一步先查询出 TOP X-1个结果子集,然后把它排除掉就是从 XSJX+Y勺结果子集。删除的时候一般是用主键,或者没有重复的数据列。最主要的是NOT IN关键字*/SELECTTOPX 列名 1,列名 2FROM<tbname>WHEREfc键歹U NOTIN (SELECTTOPX-1 主键 FROM<tbname> ORDEFBY 排序歹U名 DESC)ORDEFBY排序歹U名 DESC/*WHEREf的列名必须和子查询的 SELECTS 一致*/*主查询的ORDER BY列名必须和子查询的 ORDER BY名一致,而且排序方式也必须一致*

39、/示例:/*查询出工资排名是4,5 , 6名*/SELECTTOP3 F_NAMEF_SALARYFROMT_EMPLOYEEWHERF_ID NOTIN (SELECTTOP3 F_ID FROMT_EMPLOYEE)RDER3Y F_SALARYDESC)ORDEFBY F_SALARYDESC【DISTINCT去除重复数据】1、查询一列中的无重复数据/*只能查询列的结果集。 DISTINC馁放在SELECTS,和所有列名的前面*/SELECTDISTINCT 去重歹U名FROM<tbname>示例:SELECTDISTINCT F_DEPARTMENTg询出的部门歹U去重FR

40、OMT_EMPLOYEE2、多列组合去重/*每个列都一样的,才算重复。如果一列不一样,就不算重复 */SELECTDISTINCT去重列名1,去重列名2FROM<tbname>示例:SELECTDISTINCT F_DEPARTMENT_SUBCOMPANYFROMT_EMPLOYEE1,l,”,mi,e (i|i办公室本部2上海3开发部北京4开发部本部5开发部上海6市场部北京7市场部东部希果消息F,DEPARTWEMTF_5UBC0WP而【UNIONS并查询结果】1、合并查询结果/*合并查询结果集,所以每个每个结果集必须有相同的列数,每个结果集的列必须类型相容,位置也必须一致,可

41、以合并2个以上的查询结果。但是默认会合并重复数据*/*如果列数不一样,必须再相应的位置补齐。默认查询结果是对第一列排序*/*如果列名不一致,则表头默认是采用第一个查询的列名*/*外键是把多个列组合在一起,而UNION1把多个行组合在一起*/SELECT 列 1,列 2,补齐列 FROM<tbname1>UNIONSELECT歹U1,歹U 2,歹U3 FROM<tbname2>示例:SELECTFNAMEFAGEO AS"工资"FROMT_TEMPEMPLOYE膈时工没工资,所以要补齐UNIONSELECTF_NAMEF_AGEF_SALARYFROM

42、T_EMPLOYEE口结果_J消息FNAW&FAGE1a J12ODO2“证现2300 003B23ODDdCM0 005CAT252100 (WGCIHEM24aaM.00/CHENG252100002、ALL合并查询出的所有结果,不去重/*除非程序需要,一般要加 ALL,因为判断去重,会让数据库消耗掉大量的资源*/SELECT 列 1,列 2,补齐列 FROM<tbname1>UNIONALLSELECT歹U1,歹U 2,歹U3 FROM<tbname2>示例:selectfnamefromt_tempemployeE§ 字里头有重复的UNIONA

43、LLSELECTF_NAMEFROMT_EMPLOYEE3、利用UNION多加一行,做一些函数操作示例:SELECTF_NAMEF_SALARYFROMT_EMPLOYEEUNIONALLSELECT'工资合计',SUMF_SALARY FROMT_EMPLOYEET资合计UNIONALLSELECT'平均工资',AVGF_SALARY FROMT_EMPLOYEE¥均工资JOIN联合查询】1、JOIN联合查询/*JOIN联合查询不光是可以查有主/外键关联的,也可以查没有关联的几张数据表 ,但是得有一列数据相等而且可以列出几张表中所有的列 */SELE

44、CT表 1.歹U1,表2.歹U3,表2.列4FRO般1 JOIN表2 ON表1.列1=表2.列2/*或者给表取个别名,比较容易查看 */SELECTO 列 1, O 列2, C.歹U 3FRO般 1 AS C JOIN 表2 ASOONC列1=O列2示例:SELECT,FROMT_CUSTOMEAS C JOIN T_ORDERS O ON =国结果后消息ORD ERID PRODUCT PHONEIS !l! -=! !S- SSIB -71 口 j作业本 12322的箪12333希望堂123d4钢笔32159母笔321EW铅笔321711作业本321五、常用函数:函数名函数意义示例数学函数

45、SUM()求某一列的和AVG()求某一列的平均值MAX()取出某一列的最大值MIN()取出某一列的最小值ABS()求绝对值CEILING()舍入到比它大的、最近的最大整数。注意M是数学意义上的四舍五入例如:舍入到4,舍入到-3FLOOR()舍入到比它小的、最近的最大整数。注意不是数学意义上的四舍五入例如:舍入到3,舍入到-4ROUND()舍入到离我半径的整数,就是传统意义上的数学上的四舍五入例如:舍入到4,舍入到-4。ROUND,3就是保留小数点后 3位,将舍入为字符串函数LEN()字符串的长度括号里头是字符串或列名LOWER()字符串转成小写同上UPPER()字符串转成大写同上LTRIM()

46、去掉字符串左边的空格同上RTRIM()去掉字符串右边的空格同上。如果要去掉两边的空格,就想L再R,或者先R再LSUBSTRING。取子字符串。后二个参数,SUBSTRING(STRIN(START_POSITION LENGH期子字符串SELECTSUBSTRINGabcdeflll' ,2,3)日期函数GETDATE()获取服务器当前日期和时间DATEADD()DATEADD (datepart , number, date ),计算增加以后的日期。参数date为待计算的日期;参数 number为增里;参数 datepart 为 计里单位(可取值 year、quarter 季度、 m

47、onth、day、week、hour、minute、second等,具体参考书)SELECTDATEADDMONTH- 8, GETDATE)为计算日期date的个月之前的日期DATEDIFF()DATEDIFF(datepart,startdate,enddate)计算两个日期之间的差额。datepart 为计量单位,可取值参考DateAdd。统计不同工龄的员工的个数:select DateDiff(year,FInDate, getdate(),count(*)from T_Employee group by DateDiff(year, FInDate,getdate()DATEPART

48、()DATEPART (datepart,date):返回一个日期的特te部分。datepart 为计里单位,可取值DateAdd。selectDatePart(year,FInDate),count(*)from T_Employeegroup by DatePart(year,FInDate)类型转换函数CAST()CAST ( expression AS data_type)expression是要转换的对象,data_type是要转换的数据类型SELECTCAST'123' ASINT)+ 1,CAST( '2009-09-09' ASDATECONVE

49、RT。CONVERT ( data_type, expression)expression是要转换的对象,data_type是要转换的数据类型SELECTCONVERDATETIME'2012-12-12'),CONVERTNT,'123' )+2其他函数ISNULL()ISNULL(expression,value) expression是SELECCSNULL(FName,'佚名')as 姓列名,如果不为空则返回具体的列值,如果未空,则用value填充名 FROM T_Employee如果名字为空,则用佚名来代替CASE()用法1:非常类似于

50、 C#中白SWITCH-CASE!法。用来判断离散值离散单值判断,相当于 switch caseCASE歹U名WHEN value1 THEN ReturnValue1WHEN value2 THEN ReturnValue2WHEN value3 THEN ReturnValue3ELSE DefaultReturnValueEND用法2:非常类似于 C即白I IF-ELSE用法CASEWHENl!达式 1 THEN ReturnValuelWHENl!达式 2 THEN ReturnValue2WHENl!达式 3 THEN ReturnValue3ELSE DefaultReturnVa

51、lueENDCAS田边什么也不写ELSE但必须有END用法1:SELECT FName,(CASE FLevel WHEN 1 THEN 'VIP 客户,WHEN 2 THEN高级客户'WHEN 3 THEN'普通客户'ELSE'客户类型错误'END) as FLevelNameFROM T_Customer用法2:SELECTF_NAME(CASEWHENF_SALARY2000 THEN'穷人WHEI2000 <=F_SALARYAND F_SALARY3000THEN'中产'WHEI3000 <=F_SA

52、LARYAND F_SALARY5000THEN'富人WHEI5000 <=F_SALARYTHEN'贵族'ELSE'未知END)AS收入水平FROMT_EMPLOYEE用法3:SELECTF_NAME(CASEWHENF_SALARY2000 THENF_SALARYWHEI2000 <=F_SALARYAND F_SALARY3000THENF_SALARYWHEI3000 <=F_SALARYAND F_SALARY5000THENF_SALARYWHEI5000 <=F_SALARYTHENF_SALARYEND)AS涨工资FROMT_EMPLOYEECOUNT()求某一列的行数NEWID()数据库自带的函数,生成一个GUID的id号26

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!