常用Select语句

–语 句                                功 能
–数据操作
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    –定义当前事务数据访问特征
–程序化SQL
DECLARE      –为查询设定游标
EXPLAN      –为查询描述数据访问计划
OPEN      –检索查询结果打开一个游标
FETCH      –检索一行查询结果
CLOSE      –关闭游标
PREPARE      –为动态执行准备SQL 语句
EXECUTE      –动态地执行SQL 语句
DESCRIBE     –描述准备好的查询
—局部变量
declare @id char(10)
–set @id = ‘10010001’
select @id = ‘10010001’
—全局变量
—必须以@@开头
–IF ELSE
declare @x int @y int @z int
select @x = 1 @y = 2 @z=3
if @x > @y
print ‘x > y’ –打印字符串’x > y’
else if @y > @z
print ‘y > z’
else print ‘z > y’
–CASE
use pangu
update employee
set e_wage =
case
  when job_level = ’1’ then e_wage*1.08
  when job_level = ’2’ then e_wage*1.07
  when job_level = ’3’ then e_wage*1.06
  else e_wage*1.05
end
–WHILE CONTINUE BREAK
declare @x int @y int @c int
select @x = 1 @y=1
while @x =表达式的最小整数返回的数据类型与表达式相同可为
        –INTEGER/MONEY/REAL/FLOAT 类型
FLOOR(numeric_expression)    –返回, ) –函数返回表中指定字段的长度值
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_name
into newtable
from oldtable*/
ISDATE()  –函数判断所给定的表达式是否为合理日期
ISNULL(, ) –函数将表达式中的NULL 值用指定值替换
ISNUMERIC()  –函数判断所给定的表达式是否为合理的数值
NEWID()   –函数返回一个UNIQUEIDENTIFIER 类型的数值
NULLIF(, )
–NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值
精妙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_DATE
FROM TABLE1,
(SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE
FROM (SELECT NUM, UPD_DATE, INBOUND_QTY, STOCK_ONHAND
FROM TABLE2
WHERE TO_CHAR(UPD_DATE,’YYYY/MM’) = TO_CHAR(SYSDATE, ‘YYYY/MM’)) X,
(SELECT NUM, UPD_DATE, STOCK_ONHAND
FROM TABLE2
WHERE 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 ) B
WHERE 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 DEC
FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration
FROM TELFEESTAND a, TELFEE b
WHERE a.tel = b.telfax) a
GROUP 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 HandleID
FROM Handle
WHERE NOT HandleID IN (SELECT a.HandleID – 1 FROM Handle a)
: 我在ms sql中建了一个表,可由于种种原因有些记录重复了
: 记录完全的一模一样。
: 现在我想把重复的都删掉,只保留重复记录中的第一条。
: 我在database好象看到有介绍oracle的,
select distinct * into #table_name from table_name
delete from table_name
select * into table_name from #table_name
drop table #table_name
与此相关的是“select into”选项,可以在数据库属性
对话框中,勾起来此项,或者在Query Analyzer中执行
execute sp_dboption ‘db_name’,’select into’,’true’
开启。默认值是关闭的。

    原文作者:SQL
    原文地址: https://www.cnblogs.com/qingchen1984/p/3919456.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞