SQL语句集锦.doc_第1页
SQL语句集锦.doc_第2页
SQL语句集锦.doc_第3页
SQL语句集锦.doc_第4页
SQL语句集锦.doc_第5页
已阅读5页,还剩113页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL语句集锦-语 句功 能-数据操作SELECT-从数据库表中检索数据行和列INSERT-向数据库表添加新数据行DELETE-从数据库表中删除数据行UPDATE-更新数据库表中的数据-数据定义CREATE TABLE-创建一个数据库表DROP TABLE -从数据库中删除表ALTER TABLE -修改数据库表结构CREATE VIEW -创建一个视图DROP VIEW -从数据库中删除视图CREATE INDEX-为数据库表创建一个索引DROP INDEX -从数据库中删除索引CREATE PROCEDURE -创建一个存储过程DROP PROCEDURE-从数据库中删除存储过程CREATE TRIGGER-创建一个触发器DROP TRIGGER-从数据库中删除触发器CREATE SCHEMA-向数据库添加一个新模式DROP SCHEMA -从数据库中删除一个模式CREATE DOMAIN-创建一个数据值域ALTER DOMAIN-改变域定义DROP DOMAIN -从数据库中删除一个域-数据控制GRANT-授予用户访问权限DENY-拒绝用户访问REVOKE-解除用户访问权限-事务控制COMMIT-结束当前事务ROLLBACK -中止当前事务SET TRANSACTION-定义当前事务数据访问特征-程序化SQLDECLARE-为查询设定游标EXPLAN-为查询描述数据访问计划OPEN-检索查询结果打开一个游标FETCH-检索一行查询结果CLOSE-关闭游标PREPARE-为动态执行准备SQL 语句EXECUTE-动态地执行SQL 语句DESCRIBE -描述准备好的查询-局部变量declare id char(10)-set id = 10010001select id = 10010001-全局变量-必须以开头-IF ELSEdeclare x int y int z intselect x = 1 y = 2 z=3if x yprint x y -打印字符串x yelse if y zprint y zelse print z y-CASEuse panguupdate employeeset e_wage =casewhen job_level = 1 then e_wage*1.08when job_level = 2 then e_wage*1.07when job_level = 3 then e_wage*1.06else e_wage*1.05end-WHILE CONTINUE BREAKdeclare x int y int c intselect x = 1 y=1while x 3beginprint x -打印变量x 的值while y 3 beginselect c = 100*x + yprint c -打印变量c 的值select y = y + 1 endselect x = x + 1select y = 1end-WAITFOR-例 等待1 小时2 分零3 秒后才执行SELECT 语句waitfor delay 01:02:03select * from employee-例 等到晚上11 点零8 分后才执行SELECT 语句waitfor time 23:08:00select * from employee*SELECT* select *(列名) from table_name(表名) where column_name operator value ex:(宿主)select * from stock_information where stockid = str(nid) stockname = str_name stockname like % find this % stockname like a-zA-Z% - (指定值的范围) stockname like F-M% - (排除指定范围) - 只能在使用like关键字的where子句中使用通配符) or stockpath = stock_path or stocknumber =表达式的最小整数返回的数据类型与表达式相同可为-INTEGER/MONEY/REAL/FLOAT 类型FLOOR(numeric_expression)-返回=表达式的最小整数返回的数据类型与表达式相同可为-INTEGER/MONEY/REAL/FLOAT 类型ROUND(numeric_expression)-返回以integer_expression 为精度的四舍五入值返回的数据-类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型ABS(numeric_expression)-返回表达式的绝对值返回的数据类型与表达式相同可为-INTEGER/MONEY/REAL/FLOAT 类型SIGN(numeric_expression) -测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型-与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型PI() -返回值为 即3.1415926535897936RAND(integer_expression) -用任选的integer_expression做种子值得出0-1 间的随机浮点数-字符串函数-ASCII() -函数返回字符表达式最左端字符的ASCII 码值CHAR() -函数用于将ASCII 码转换为字符-如果没有输入0 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值LOWER() -函数把字符串全部转换为小写UPPER() -函数把字符串全部转换为大写STR() -函数把数值型数据转换为字符型数据LTRIM() -函数把字符串头部的空格去掉RTRIM() -函数把字符串尾部的空格去掉LEFT(),RIGHT(),SUBSTRING()-函数返回部分字符串CHARINDEX(),PATINDEX()-函数返回字符串中某个指定的子串出现的开始位置SOUNDEX()-函数返回一个四位字符码 -SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 DIFFERENCE()-函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异-0 两个SOUNDEX 函数返回值的第一个字符不同-1 两个SOUNDEX 函数返回值的第一个字符相同-2 两个SOUNDEX 函数返回值的第一二个字符相同-3 两个SOUNDEX 函数返回值的第一二三个字符相同-4 两个SOUNDEX 函数返回值完全相同 QUOTENAME()-函数返回被特定字符括起来的字符串/*select quotename(abc, ) quotename(abc)运行结果如下-abc abc*/REPLICATE() -函数返回一个重复character_expression 指定次数的字符串/*select replicate(abc, 3) replicate( abc, -2)运行结果如下- -abcabcabc NULL*/REVERSE() -函数将指定的字符串的字符排列顺序颠倒REPLACE() -函数返回被替换了指定子串的字符串/*select replace(abc123g, 123, def)运行结果如下- -abcdefg*/SPACE() -函数返回一个有指定长度的空白字符串STUFF() -函数用另一子串替换字符串指定位置长度的子串-数据类型转换函数-CAST() 函数语法如下CAST() ( AS length )CONVERT() 函数语法如下CONVERT() ( length , , style)select cast(100+99 as char) convert(varchar(12), getdate()运行结果如下- -199 Jan 15 2000-日期函数-DAY() -函数返回date_expression 中的日期值MONTH() -函数返回date_expression 中的月份值YEAR() -函数返回date_expression 中的年份值DATEADD( , ,) -函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF( , ,)-函数返回两个指定日期在datepart 方面的不同之处DATENAME( , )-函数以字符串的形式返回日期的指定部分DATEPART( , )-函数以整数值的形式返回日期的指定部分GETDATE()-函数以DATETIME 的缺省格式返回系统当前的日期和时间-系统函数-APP_NAME()-函数返回当前执行的应用程序的名称COALESCE()-函数返回众多表达式中第一个非NULL 表达式的值COL_LENGTH(, ) -函数返回表中指定字段的长度值COL_NAME(, ) -函数返回表中指定字段的名称即列名DATALENGTH() -函数返回数据表达式的数据的实际长度DB_ID(database_name) -函数返回数据库的编号DB_NAME(database_id)-函数返回数据库的名称HOST_ID() -函数返回服务器端计算机的名称HOST_NAME() -函数返回服务器端计算机的名称IDENTITY(, seed increment) AS column_name)-IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中/*select identity(int, 1, 1) as column_nameinto newtablefrom oldtable*/ISDATE()-函数判断所给定的表达式是否为合理日期ISNULL(, ) -函数将表达式中的NULL 值用指定值替换ISNUMERIC()-函数判断所给定的表达式是否为合理的数值NEWID() -函数返回一个UNIQUEIDENTIFIER 类型的数值NULLIF(, )-NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值阅读全文(4714) | 回复(19) | 引用(0)精妙SQL语句晴天发表评论于2004-10-26 11:16:00 精妙SQL语句说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b from a where 11说明:拷贝表(拷贝数据,源表名:a 目标表名:b)SQL: insert into b(a, b, c) select d,e,f from b;说明:显示文章、提交人和最后回复时间SQL: select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b说明:外连接查询(表名1:a 表名2:b)SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c说明:日程安排提前五分钟提醒SQL: select * from 日程安排 where datediff(minute,f开始时间,getdate()5说明:两张关联表,删除主表中已经在副表中没有的信息SQL: delete from info where not exists ( select * from infobz where info.infid=infobz.infid ) 说明:-SQL: SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATEFROM TABLE1, (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATEFROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,YYYY/MM) = TO_CHAR(SYSDATE, YYYY/MM) X, (SELECT NUM, UPD_DATE, STOCK_ONHANDFROM TABLE2WHERE TO_CHAR(UPD_DATE,YYYY/MM) = TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, YYYY/MM) | /01,YYYY/MM/DD) - 1, YYYY/MM) ) Y, WHERE X.NUM = Y.NUM (+)AND X.INBOUND_QTY + NVL(Y.STOCK_ONHAND,0) X.STOCK_ONHAND ) BWHERE A.NUM = B.NUM说明:-SQL: select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系名称=&strdepartmentname& and 专业名称=&strprofessionname& order by 性别,生源地,高考总成绩说明:从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)SQL: SELECT a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, yyyy) AS telyear,SUM(decode(TO_CHAR(a.telfeedate, mm), 01, a.factration) AS JAN,SUM(decode(TO_CHAR(a.telfeedate, mm), 02, a.factration) AS FRI,SUM(decode(TO_CHAR(a.telfeedate, mm), 03, a.factration) AS MAR,SUM(decode(TO_CHAR(a.telfeedate, mm), 04, a.factration) AS APR,SUM(decode(TO_CHAR(a.telfeedate, mm), 05, a.factration) AS MAY,SUM(decode(TO_CHAR(a.telfeedate, mm), 06, a.factration) AS JUE,SUM(decode(TO_CHAR(a.telfeedate, mm), 07, a.factration) AS JUL,SUM(decode(TO_CHAR(a.telfeedate, mm), 08, a.factration) AS AGU,SUM(decode(TO_CHAR(a.telfeedate, mm), 09, a.factration) AS SEP,SUM(decode(TO_CHAR(a.telfeedate, mm), 10, a.factration) AS OCT,SUM(decode(TO_CHAR(a.telfeedate, mm), 11, a.factration) AS NOV,SUM(decode(TO_CHAR(a.telfeedate, mm), 12, a.factration) AS DECFROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factrationFROM TELFEESTAND a, TELFEE bWHERE a.tel = b.telfax) aGROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, yyyy)说明:四表联查问题:SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .说明:得到表中最小的未使用的ID号SQL:SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.HandleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleIDFROM HandleWHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a)详细的请见原贴:/Expert/topic/1546/1546652.xml?temp=.3089716个人主页 | 引用 | 返回回复:分享SQl语句学习专题晴天发表评论于2004-10-26 11:16:00 : 我在ms sql中建了一个表,可由于种种原因有些记录重复了: 记录完全的一模一样。: 现在我想把重复的都删掉,只保留重复记录中的第一条。: 我在database好象看到有介绍oracle的,select distinct * into #table_name from table_namedelete from table_nameselect * into table_name from #table_namedrop table #table_name与此相关的是“select into”选项,可以在数据库属性对话框中,勾起来此项,或者在Query Analyzer中执行execute sp_dboption db_name,select into,true开启。默认值是关闭的。个人主页 | 引用 | 返回专贴揭示SQL语句,贴出你的精妙SQL晴天发表评论于2004-10-26 11:17:00 主题:专贴揭示SQL语句,贴出你的精妙SQL,欢迎来抢分!作者:csdntoll (低调惯了) 等级: 信 誉 值:147所属论坛:Web 开发 ASP问题点数:200回复次数:260发表时间:2003-3-18 18:02:24格式说明:复制表(只复制结构,源表名:a 新表名:b)SQL: select * into b from a where 11回复人: LuoGD(沃适) ( ) 信誉:100 2003-3-18 18:07:37 得分:5说明:拷贝表(拷贝数据,源表名:a 目标表名:b)insert into b(a, b, c) select d,e,f from b;Top回复人: LuoGD(沃适) ( ) 信誉:100 2003-3-18 18:09:37 得分:5说明:合并数据(表名1:a 表名2:b)select a,b,c from a union select d,e,f from b;Top回复人: LuoGD(沃适) ( ) 信誉:100 2003-3-18 18:11:36 得分:5说明:子查询(表名1:a 表名2:b)select a,b,c from a where a IN (select d from b )或者:select a,b,c from a where a IN (1,2,3)Top回复人: _TMG_(Alan) ( ) 信誉:120 2003-3-18 18:11:55 得分:0这都是精妙?Top回复人: junsisi(君三思) ( ) 信誉:100 2003-3-18 18:12:36 得分:5俺来贴个让俺对sql茅塞顿开的例子说明:显示文章、提交人和最后回复时间sql:select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) bTop回复人: LuoGD(沃适) ( ) 信誉:100 2003-3-18 18:13:48 得分:0说明:外连接查询(表名1:a 表名2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.cTop回复人: LuoGD(沃适) ( ) 信誉:100 2003-3-18 18:15:56 得分:0说明:在线视图查询(表名1:a )select * from (SELECT a,b,c FROM a) T where t.a 1;Top回复人: gcs925(Study Java&Jsp ing) ( ) 信誉:105 2003-3-18 18:16:00 得分:0markTop回复人: net_lover(孟子E章) ( ) 信誉:727 2003-3-18 18:16:14 得分:0SQL:SELECT NEWID()Top回复人: snakegod(蛇姬) ( ) 信誉:100 2003-3-18 21:49:41 得分:0?没有深度 没兴趣Top回复人: _TMG_(Alan) ( ) 信誉:120 2003-3-18 21:54:21 得分:0我宁愿用数据库冗余也不会使用子查询,除非万不得已Top回复人: nittystone(没有想法) ( ) 信誉:115 2003-3-18 22:20:49 得分:5自连接取出荣于数据把所有姓名相同的只取出一个select from table_name a where a.id in (select b.id from table_name b where a.idb.id)同理删除荣誉数据delete from table_namewhere table_name.id in (select b.id from table_name b where table_name.idb.id)Top回复人: allforly(白衣胜血) ( ) 信誉:126 2003-3-19 1:18:29 得分:0今天开眼界了啊,我就会select * from * where *=*这一句Top回复人: gddd(gddd) ( ) 信誉:100 2003-3-19 2:07:30 得分:0利害.我会多一句select top n * form * where XXXTop回复人: csdntoll(低调惯了) ( ) 信誉:147 2003-3-19 9:22:40 得分:0不错,不错,蛮喜欢junsisi(君三思)的这句:select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b对net_lover(孟子E章)前辈,这句不理解,我菜,呵呵SQL:SELECT NEWID()Top回复人: cpp2017(幕白兄) ( ) 信誉:145 2003-3-19 9:27:39 得分:0SELECT DISTINCT TSD.Time_Sheet_Dtl_Record_No,TSD.User_Record_No,TP.Period_Start_Date ,TP.Period_End_Date INTO #temp FROM Time_Sheet_Details TSD, Time_Sheet_Period TP ,User_Group_User_Relationship UGUR,User_Group_Master UGM ,User_Data_Access_Right UDAR WHERE TSD.status =TS_WFMGRA AND DATEDIFF(dd,TP.period_start_date,TSD.work_Date)=0 AND DATEDIFF(dd,TP.period_end_date,TSD.work_Date)=0 AND DATEDIFF(dd,TP.period_end_date,TSD.work_Date)=0 AND UGUR.User_Record_No = TSD.User_Record_No AND UGM.User_Group_Record_No=UGUR.User_Group_Record_No AND UGM.User_Group_Name IN(Technician,Engineer) AND UDAR.User

温馨提示

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

评论

0/150

提交评论