SQL语句大全

end

SQL 语句大全

一、基础

1 说明:创建数据库

Creat DATABASE database-nam

2 说明:删除数据库

drop databas dbname

3 说明:备份 sql server

--- 创立 备份数据的 devic

USE master

'testBack',EXEC sp_addumpdevic 'disk'. 'c:/mssql7backup/MyNwind_1.dat'

--- 开始 备份

BACKUP DATABASE pub TO testBack

4 说明:创建新表

col2 type2 [not null],creat tabl tabnam col1 type1 [not null] [primari key]...

根据已有的表创建新表:

A creat tabl tab_new like tab_old 使用旧表创建新表 )

col2 from tab_old definit onli B creat tabl tab_new as select col1.

5 说明:删除新表

drop tabl tabnam

6 说明:增加一个列

Alter tabl tabnam add column col type

唯一能改变的增加 varchar 类型的长度。 注:列增加后将不能删除。 DB2 中列加上后数据类型也不能改变。

7 说明:添加主键: Alter tabl tabnam add primari kei col

说明:删除主键: Alter tabl tabnam drop primari kei col

8 说明:创建索引: creat [unique] index idxnam on tabnam col .

删除索引: drop index idxnam

注:索引是不可更改的想更改必需删除重新建。

9 说明:创建视图: creat view viewnam as select statement

删除视图: drop view viewnam

10 说明:几个简单的基本的 sql 语句

选择: select * from table1 where 范围

field2 valu value1, 拔出: insert into table1 field1.value2

删除: delet from table1 where 范围

更新: updat table1 set field1=value1 where 范围

查资料 ! 查找: select * from table1 where field1 like %value1% ---like 语法很精妙。

field2 [desc] 排序: select * from table1 order by field1.

总数: select count as totalcount from table1

求和: select sum field1 as sumvalu from table1

平均: select avg field1 as avgvalu from table1

最大: select max field1 as maxvalu from table1

最小: select min field1 as minvalu from table1

11 说明:几个高级查询运算词

A UNION 运算符

派生表的每一行不是来自 TABLE1 就是来自 TABLE2 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2 并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL 不消除重复行。两种情况下。

B EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 EXCEPT ALL 不消除重复行。

C INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 INTERSECT ALL 不消除重复行。

注:使用运算词的几个查询结果行必须是一致的

12 说明:使用外连接

A left outer join

也包括左连接表的所有行。 左外连接(左连接)结果集几包括连接表的匹配行。

a.b,SQL: select a.a. a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

B right outer join:

也包括右连接表的所有行。 右外连接 ( 右连接 ) 结果集既包括连接表的匹配连接行。

C full outer join

还包括两个连接表中的所有记录。 全外连接:不只包括符号连接表的匹配行。

二、提升

源表名: a 新表名: b Access 可用 ) 1 说明:复制表 ( 只复制结构 .

法一: select * into b from a where 1<>1

法二: select top 0 * into b from a

源表名: a 目标表名: b Access 可用 ) 2 说明:拷贝表 ( 拷贝数据 .

b,insert into b a. c select d,e,f from b;

3 说明:跨数据库之间表的拷贝 ( 具体数据使用绝对路径 ) Access 可用 )

b,insert into b a. c select d,e,f from b in 具体数据库 ’ where 条件

例子: ..from b in '"&Server.MapPath "."&"/data.mdb" &"' where..

4 说明:子查询 ( 表名 1 a 表名 2 b

b,select a.c from a where a IN select d from b 或者 : b,c from a where a IN 1,2,3

5 说明:显示文章、提交人和最后回复时间

a.username,select a.title.b.addd from tabl a, select max adddat adddat from tabl where table.title=a.titl b

6 说明:外连接查询 ( 表名 1 a 表名 2 b

a.b,select a.a. a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7 说明:线视图查询 ( 表名 1 a

b,select * from Select a.c FROM a T where t.a > 1;

between 限制查询数据范围时包括了边境值 ,8 说明: between 用法 .not between 不包括

select * from table1 where time between time1 and time2

b,select a.c, from table1 where a not between 数值 1 and 数值 2

9 说明: in 使用方法

值 2 ,select * from table1 where a [not] in 值 1 . 值 4 , 值 6

删除主表中已经在副表中没有的信息 10 说明:两张关联表。

delet from table1 where not exist select * from table2 where table1.field1=table2.field1

11 说明:四表联查问题:

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 .....

12 说明:日程安排提前五分钟提醒

f 开始时间 ,SQL: select * from 日程布置 where datediff 'minute'.getdat >5

13 说明:一条 sql 语句搞定数据库分页

排序字段 from 表名 order by 排序字段 desc a,select top 10 b.* from select top 20 主键字段 . 表名 b where b. 主键字段 = a. 主键字段 order by a. 排序字段

14 说明:前 10 条记录

select top 10 * form table1 where 范围

每月热销产品分析 ,15 说明:选择在每一组 b 值相同的数据中对应的 a 最大的记录的所有信息 ( 类似这样的用法可以用于论坛每月排行榜 . 按科目效果排名 , 等等 .

b,select a.c from tablenam ta where a= select max a from tablenam tb where tb.b=ta.b

16 说明:包括所有在 TableA 中但不在 TableB 和 TableC 中的行并消除所有重复行而派生出一个结果表

select a from tableA except select a from tableB except select a from tableC

17 说明:随机取出 10 条数据

select top 10 * from tablenam order by newid

18 说明:随机选择记录

select newid

19 说明:删除重复记录

col2,Delet from tablenam where id not in select max id from tablenam group by col1....

20 说明:列出数据库里所有的表名

select name from sysobject where type='U'

21 说明:列出表里的所有的

select name from syscolumn where id=object_id 'TableName'

以 type 字段排列,22 说明:列示 type vender pc 字段。 case 可以方便地实现多重选择,类似 select 中的 case

sum case vender when 'A' then pc els 0 end ,select type.sum case vender when 'C' then pc els 0 end ,sum case vender when 'B' then pc els 0 end FROM tablenam group by type

显示结果:

type vender pc

电脑 A 1

电脑 A 1

光盘 B 2

光盘 A 2

手机 B 3

手机 C 3

23 说明:初始化表 table1

PUNCATE TABLE table1

24 说明:选择从 10 15 记录

select top 5 * from select top 15 * from tabl order by id asc table_ 别名 order by id desc

三、技巧

SQL 语句组合时用的较多 1 1=1 1=2 使用。

where 1=1 表示选择全部 where 1=2 全部不选。

如:

if @strWhere !='

begin

set @strSQL = 'select count * as Total from [' + @tblName + '] where ' + @strWhere

end

els

begin

set @strSQL = 'select count * as Total from [' + @tblName + ']'

end

可以直接写成

set @strSQL = 'select count * as Total from [' + @tblName + '] where 1=1 安宁 '+ @strWhere

2 收缩数据库

-- 重建索引

DBCC REINDEX

DBCC INDEXDEFRAG

-- 收缩数据和日志

DBCC SHRINKDB

DBCC SHRINKFILE

3 压缩数据库

dbcc shrinkdatabas dbname

4 转移数据库给新用户以已存在用户权限

'newname',exec sp_change_users_login 'update_one'.'oldname'

go

5 检查备份集

RESTORE VERIFYONLY from disk='E:/dvbbs.bak'

6 修复数据库

Alter DATABASE [dvbbs] SET SINGLE_USER

GO

repair_allow_data_loss WITH TABLOCK DBCC CHECKDB 'dvbbs'.

GO

Alter DATABASE [dvbbs] SET MULTI_USER

GO

7 日志清除

SET NOCOUNT ON

DECLARE @LogicalFileNam sysname.

@MaxMinut INT.

@NewSiz INT

USE tablenam -- 要操作的数据库名

-- 日志文件名 Select @LogicalFileNam = 'tablename_log'.

-- Limit on time allow to wrap log. @MaxMinut = 10.

@NewSiz = 1 -- 想设定的日志文件的大小 ( M

-- Setup / initi

DECLARE @OriginalS int

Select @OriginalS = size

FROM sysfil

Where name = @LogicalFileNam

Select 'Origin Size of ' + db_name + ' LOG is ' +

@OriginalS + ' 8K page or ' + CONVERT VARCHAR 30 .

@OriginalSize*8/1024 + 'MB' CONVERT VARCHAR 30 .

FROM sysfil

Where name = @LogicalFileNam

Creat TABLE DummyTran

DummyColumn char 8000 not null

DECLARE @Counter INT.

@StartTim DATETIME.

@TruncLog VARCHAR 255

Select @StartTim = GETDATE .

@TruncLog = 'BACKUP LOG ' + db_name + ' WITH PUNCATE_ONLY'

@NewSiz DBCC SHRINKFILE @LogicalFileName.

EXEC @TruncLog

-- Wrap the log if necessary.

@StartTime,WHILE @MaxMinut > DATEDIFF mi. GETDATE -- time ha not expir

AND @OriginalS = Select size FROM sysfil Where name = @LogicalFileNam

AND @OriginalS * 8 /1024 > @NewSiz

BEGIN -- Outer loop.

Select @Counter = 0

WHILE @Counter < @OriginalS / 16 AND @Counter < 50000

BEGIN -- updat

Insert DummyTran VALUES 'Fill Log'

Delet DummyTran

Select @Counter = @Counter + 1

END

EXEC @TruncLog

END

Select 'Final Size of ' + db_name + ' LOG is ' +

size + ' 8K page or ' + CONVERT VARCHAR 30 .

size*8/1024 + 'MB' CONVERT VARCHAR 30 .

FROM sysfil

Where name = @LogicalFileNam

Drop TABLE DummyTran

SET NOCOUNT OFF

8 说明:更改某个表

'dbo' exec sp_changeobjectown 'tablename'.

9 存储更改全部表

Creat PROCEDURE dbo.User_ChangeObjectOwnerBatch

@OldOwner as NVARCHAR 128 .

@NewOwner as NVARCHAR 128

AS

DECLARE @Name as NVARCHAR 128

DECLARE @Owner as NVARCHAR 128

DECLARE @OwnerNam as NVARCHAR 128

DECLARE curObject CURSOR FOR

select 'Name' = name.

'Owner' = user_nam uid

from sysobject

where user_nam uid =@OldOwner

order by name

OPEN curObject

@Owner FETCH NEXT FROM curObject INTO @Name.

WHILE @@FETCH_STATUS=0

BEGIN

if @Owner=@OldOwner

begin

set @OwnerNam = @OldOwner + '.' + rtrim @Name

@NewOwner exec sp_changeobjectown @OwnerName.

end

@NewOwner,-- select @name.@OldOwn

@Owner FETCH NEXT FROM curObject INTO @Name.

END

close curObject

dealloc curObject

GO

10 SQL SERVER 中直接循环写入数据

declar @i int

set @i=1

while @i<30

begin

insert into test userid valu @i

set @i=@i+1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值