收藏 分享(赏)

SQL简单语句.docx

上传人:myk79025 文档编号:7657432 上传时间:2019-05-23 格式:DOCX 页数:12 大小:32.70KB
下载 相关 举报
SQL简单语句.docx_第1页
第1页 / 共12页
SQL简单语句.docx_第2页
第2页 / 共12页
SQL简单语句.docx_第3页
第3页 / 共12页
SQL简单语句.docx_第4页
第4页 / 共12页
SQL简单语句.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、创 建 数 据 库创 建 之 前 判 断 该 数 据 库 是 否 存 在 if exists (select * from sysdatabases where name=databaseName) drop database databaseName go Create DATABASE database-name 删 除 数 据 库drop database dbname 备 份 sql server- 创 建 备 份 数 据 的 device USE master EXEC sp_addumpdevice disk, testBack, c:mssql7backupMyNwind_1.d

2、at - 开 始 备 份 BACKUP DATABASE pubs TO testBack 创 建 新 表create table tabname(col1 type1 not null primary key,col2 type2 not null,) 根 据 已 有 的 表 创 建 新 表 : A: go use 原 数 据 库 名 go select * into 目 的 数 据 库 名 .dbo.目 的 表 名 from 原 表 名 (使 用 旧 表创 建 新 表 ) B: create table tab_new as select col1,col2 from tab_old de

3、finition only 创 建 序 列create sequence SIMON_SEQUENCE minvalue 1 - 最 小 值 maxvalue 999999999999999999999999999 - 最 大 值 start with 1 - 开 始 值 increment by 1 - 每 次 加 几 cache 20; 删 除 新 表drop table tabname 增 加 一 个 列Alter table tabname add colname coltype 删 除 一 个 列Alter table tabname drop column colname 添 加

4、主 键Alter table tabname add primary key(col) 说 明 : 删 除 主 键 : Alter table tabname drop primary key(col) 创 建 索 引create unique index idxname on tabname(col。 ) 删 除 索 引 : drop index idxname on tabname 注 : 索 引 是 不 可 更 改 的 , 想 更 改 必 须 删 除 重 新 建 。 创 建 视 图create view viewname as select statement 删 除 视 图 : dro

5、p view viewname 简 单 基 本 的 sql 语 句(1) 数 据 记 录 筛 选 : sql=“select * from 数 据 表 where 字 段 名 =字 段 值 order by 字 段名 desc“ sql=“select * from 数 据 表 where 字 段 名 like %字 段 值 % order by 字 段 名 desc“ sql=“select top 10 * from 数 据 表 where 字 段 名 order by 字 段名 desc“ sql=“select * from 数 据 表 where 字 段 名 in (值 1,值 2,

6、值3)“ sql=“select * from 数 据 表 where 字 段 名 between 值 1 and 值 2“ (2) 更 新 数 据 记 录 : sql=“update 数 据 表 set 字 段 名 =字 段 值 where 条 件 表 达 式 “ sql=“update 数 据 表 set 字 段 1=值 1,字 段 2=值 2 字 段 n=值 n where 条 件 表 达 式 “ (3) 删 除 数 据 记 录 : sql=“delete from 数 据 表 where 条 件 表 达 式 “ sql=“delete from 数 据 表 “ (将 数 据 表 所 有

7、 记 录 删 除 ) (4) 添 加 数 据 记 录 : sql=“insert into 数 据 表 (字 段 1,字 段 2,字 段 3 ) values (值 1,值2,值 3 )“ sql=“insert into 目 标 数 据 表 select * from 源 数 据 表 “ (把 源 数 据表 的 记 录 添 加 到 目 标 数 据 表 ) (5) 数 据 记 录 统 计 函 数 : AVG(字 段 名 ) 得 出 一 个 表 格 栏 平 均 值 COUNT(*;字 段 名 ) 对 数 据 行 数 的 统 计 或 对 某 一 栏 有 值 的 数 据 行 数 统 计 MAX(字

8、段 名 ) 取 得 一 个 表 格 栏 最 大 的 值 MIN(字 段 名 ) 取 得 一 个 表 格 栏 最 小 的 值 SUM(字 段 名 ) 把 数 据 栏 的 值 相 加 引 用 以 上 函 数 的 方 法 : sql=“select sum(字 段 名 ) as 别 名 from 数 据 表 where 条 件 表 达 式“ set rs=conn.excute(sql) 用 rs(“别 名 “) 获 取 统 计 的 值 , 其 它 函 数 运 用 同 上 。 查 询 去 除 重 复 值 : select distinct * from table1 (5) 数 据 表 的 建 立

9、和 删 除 : CREATE TABLE 数 据 表 名 称 (字 段 1 类 型 1(长 度 ),字 段 2 类 型 2(长 度 ) ) 几 个 高 级 查 询 运 算 词A: UNION 运 算 符 UNION 运 算 符 通 过 组 合 其 他 两 个 结 果 表 ( 例 如 TABLE1 和 TABLE2) 并消 去 表 中 任 何 重 复 行 而 派 生 出 一 个 结 果 表 。 当 ALL 随 UNION 一 起 使 用 时( 即 UNION ALL) , 不 消 除 重 复 行 。 两 种 情 况 下 , 派 生 表 的 每 一 行 不 是 来 自TABLE1 就 是 来 自

10、TABLE2。 B: EXCEPT 运 算 符 EXCEPT 运 算 符 通 过 包 括 所 有 在 TABLE1 中 但 不 在 TABLE2 中 的 行 并 消除 所 有 重 复 行 而 派 生 出 一 个 结 果 表 。 当 ALL 随 EXCEPT 一 起 使 用 时(EXCEPT ALL), 不 消 除 重 复 行 。 C: INTERSECT 运 算 符 INTERSECT 运 算 符 通 过 只 包 括 TABLE1 和 TABLE2 中 都 有 的 行 并 消 除 所有 重 复 行 而 派 生 出 一 个 结 果 表 。 当 ALL 随 INTERSECT 一 起 使 用 时(

11、INTERSECT ALL), 不 消 除 重 复 行 。 注 : 使 用 运 算 词 的 几 个 查 询 结 果 行 必 须 是 一 致 的 。 使 用 外 连 接A、 left outer join: 左 外 连 接 ( 左 连 接 ) : 结 果 集 既 包 括 连 接 表 的 匹 配 行 , 也 包 括 左 连 接 表的 所 有 行 。 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 B: right outer join: 右 外 连 接 (右 连 接 ): 结 果 集 既 包

12、括 连 接 表 的 匹 配 连 接 行 , 也 包 括 右 连接 表 的 所 有 行 。 C: full outer join: 全 外 连 接 : 不 仅 包 括 符 号 连 接 表 的 匹 配 行 , 还 包 括 两 个 连 接 表 中 的 所 有记 录 。 编 辑 本 段 判 断 对 象 是 否 存 在判 断 数 据 库 是 否 存 在if exists (select* from sysdatabases wherename= 数 据 库 名 ) dropdatabase数 据 库 名 判 断 表 是 否 存 在if not exists (select * from sysobjec

13、ts where name = 表 名 and xtype=U) begin -这 里 创 建 表 end 判 断 存 储 过 程 是 否 存 在if exists (select* from sysobjects whereid = object_id(N存储 过 程 名 ) and OBJECTPROPERTY(id, NIsProcedure) = 1) dropprocedure存 储 过 程 名 判 断 临 时 表 是 否 存 在if object_id(tempdb#临 时 表 名 ) isnot null droptable#临 时 表 名 判 断 视 图 是 否 存 在-SQL

14、 Server 2000 IF EXISTS (SELECT* FROM sysviews WHEREobject_id = dbo.视图 名 -SQL Server 2005 IF EXISTS (SELECT* FROM sys.views WHEREobject_id = dbo.视图 名 判 断 函 数 是 否 存 在if exists (select* from dbo.sysobjects whereid = object_id(Ndbo.函 数 名 ) and xtype in (NFN, NIF, NTF) dropfunctiondbo.函 数 名 获 取 创 建 信 息SE

15、LECTname,id,crdate FROM sysobjects where xtype=U /* xtype 的 表 示 参 数 类 型 , 通 常 包 括 如 下 这 些 C = CHECK 约 束 D = 默认 值 或 DEFAULT 约 束 F = FOREIGNKEY 约 束 L = 日 志 FN = 标 量 函 数 IF = 内 嵌 表 函 数 P = 存 储 过 程 PK = PRIMARYKEY 约 束 ( 类 型 是 K) RF = 复 制 筛 选 存 储 过 程 S = 系 统 表 TF = 表 函 数 TR = 触 发 器 U = 用 户 表 UQ = UNIQUE

16、约 束 ( 类 型 是 K) V = 视 图 X = 扩 展 存 储 过 程 */ 判 断 列 是 否 存 在if exists(select* from syscolumns whereid=object_id(表 名 ) and name=列 名 ) altertable 表 名 dropcolumn 列 名 判 断 列 是 否 自 增 列if columnproperty(object_id(table),col,IsIdentity)=1 print 自 增 列 else print 不 是 自 增 列 SELECT* FROM sys.columns WHEREobject_id=O

17、BJECT_ID(表 名 ) AND is_identity=1 判 断 表 中 是 否 存 在 索 引if exists(select* from sysindexes whereid=object_id(表 名 ) and name=索 引 名 ) print 存 在 else print 不 存 在 查 看 数 据 库 中 对 象SELECT* FROM sysobjects WHEREname=对 象 名 select * from table( 所 要 查 询 的 表 名 ) where coloum(条 件 ) 编 辑 本 段 提 升复 制 表(只 复 制 结 构 , 源 表 名

18、: a 新 表 名 : b) (Access 可 用 ) 法 一 : select * into b from a where 15 一 条 sql 搞 定 数 据 库 页select top 10 b.* from (select top 20 主 键 字 段 ,排 序 字 段 from 表 名 order by 排 序 字 段 desc) a,表 名 b where b.主 键 字 段 = a.主 键 字段 order by a.排 序 字 段 前 10 条 记 录select top 10 * from table1 where 范 围 选 择 排 名选 择 在 每 一 组 b 值 相

19、同 的 数 据 中 对 应 的 a 最 大 的 记 录 的 所 有 信 息 (类 似这 样 的 用 法 可 以 用 于 论 坛 每 月 排 行 榜 , 每 月 热 销 产 品 分 析 ,按 科 目 成 绩 排 名 ,等 等 。 ) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b) 派 生 结 果 表包 括 所 有 在 TableA 中 但 不 在 TableB 和 TableC 中 的 行 并 消 除 所 有 重复 行 而 派 生 出 一 个 结 果 表 (selec

20、t a from tableA except (select a from tableB) except (select a from tableC) 随 机 取 出 10 条 数 据select top 10 * from tablename order by newid() 随 机 选 择 记 录select newid() 删 除 重 复 记 录Delete from tablename where id not in (select max(id) from tablename group by col1,col2,.) 列 出 数 据 库 里 的 表 名select name fro

21、m sysobjects where type=U 列 出 表 里 的 所 有 的select name from syscolumns where id=object_id(TableName) 列 示 排 列列 示 type、 vender、 pcs 字 段 , 以 type 字 段 排 列 , case 可 以 方 便 地实 现 多 重 选 择 , 类 似 select 中 的 case。 select type,sum(case vender when A then pcs else 0 end),sum(case vender when C then pcs else 0 end),

22、sum(case vender when B then pcs else 0 end) FROM tablename group by type 显 示 结 果 : type vender pcs 电 脑 A 1 电 脑 A 1 光 盘 B 2 光 盘 A 2 手 机 B 3 手 机 C 3 初 始 化 表 table1TRUNCATE TABLE table1 选 择 从 10 到 15 的 记 录select top 5 * from (select top 5 * from (select top 15 * from table order by id asc) table_别 名 or

23、der by id desc) table_2 order by id 数 据 类 型 转 换declare numid int declare id varchar(50) set numid=2005 set id=convert(varchar,numid) 通 过 上 述 语 句 完 成 数 据 类 型 Int 转 换 成 varchar, 其 他 转 换 类 似 , 可 参看 convert 函 数 编 辑 本 段 技 巧1=1, 1=2 的 使 用在 SQL 语 句 组 合 时 用 的 较 多 “where 1=1”是 表 示 选 择 全 部 “where 1=2”全 部 不 选

24、, 如 : if strWhere != begin set strSQL = select count(*) as Total from + tblName + where + strWhere end else begin set strSQL = select count(*) as Total from + tblName + end 我 们 可 以 直 接 写 成 set strSQL = select count(*) as Total from + tblName + where 1=1 and + strWhere 收 缩 数 据 库-重 建 索 引 DBCC REINDEX

25、DBCC INDEXDEFRAG -收 缩 数 据 和 日 志 DBCC SHRINKDB DBCC SHRINKFILE 压 缩 数 据 库dbcc shrinkdatabase(dbname) 转 移 数 据 库 给 新 用 户 以 已 存 在 用 户 权 限 exec sp_change_users_login update_one,newname,oldname go 检 查 备 份 集RESTORE VERIFYONLY from disk=E:dvbbs.bak 修 复 数 据 库Alter DATABASE dvbbs SET SINGLE_USER GO DBCC CHECKD

26、B(dvbbs,repair_allow_data_loss) WITH TABLOCK GO Alter DATABASE dvbbs SET MULTI_USER GO 日 志 清 除SET NOCOUNT ON DECLARE LogicalFileName sysname, MaxMinutes INT, NewSize INT USE tablename - 要 操 作 的 数 据 库 名 Select LogicalFileName = tablename_log, - 日 志 文 件 名 MaxMinutes = 10, - Limit on time allowed to wr

27、ap log. NewSize = 1 - 你 想 设 定 的 日 志 文 件 的 大 小 (M) - Setup / initialize DECLARE OriginalSize int Select OriginalSize = size FROM sysfiles Where name = LogicalFileName Select Original Size of + db_name() + LOG is + CONVERT(VARCHAR(30),OriginalSize) + 8K pages or + CONVERT(VARCHAR(30),(OriginalSize*8/1

28、024) + MB FROM sysfiles Where name = LogicalFileName Create TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE Counter INT, StartTime DATETIME, TruncLog VARCHAR(255) Select StartTime = GETDATE(), TruncLog = BACKUP LOG + db_name() + WITH TRUNCATE_ONLY DBCC SHRINKFILE (LogicalFileName, NewSiz

29、e) EXEC (TruncLog) - Wrap the log if necessary. WHILE MaxMinutes DATEDIFF (mi, StartTime, GETDATE() - time has not expired AND OriginalSize = (Select size FROM sysfiles Where name = LogicalFileName) AND (OriginalSize * 8 /1024) NewSize BEGIN - Outer loop. Select Counter = 0 WHILE (Counter OriginalSi

30、ze / 16) AND (Counter 50000) BEGIN - update Insert DummyTrans VALUES (Fill Log) Delete DummyTrans Select Counter = Counter + 1 END EXEC (TruncLog) END Select Final Size of + db_name() + LOG is + CONVERT(VARCHAR(30),size) + 8K pages or + CONVERT(VARCHAR(30),(size*8/1024) + MB FROM sysfiles Where name

31、 = LogicalFileName Drop TABLE DummyTrans SET NOCOUNT OFF 更 改 某 个 表exec sp_changeobjectowner tablename,dbo 存 储 更 改 全 部 表Create PROCEDURE dbo.User_ChangeObjectOwnerBatch OldOwner as NVARCHAR(128), NewOwner as NVARCHAR(128) AS DECLARE Name as NVARCHAR(128) DECLARE Owner as NVARCHAR(128) DECLARE OwnerNa

32、me as NVARCHAR(128) DECLARE curObject CURSOR FOR select Name = name, Owner = user_name(uid) from sysobjects where user_name(uid)=OldOwner order by name OPEN curObject FETCH NEXT FROM curObject INTO Name, Owner WHILE(FETCH_STATUS=0) BEGIN if Owner=OldOwner begin set OwnerName = OldOwner + . + rtrim(Name) exec sp_changeobjectowner OwnerName, NewOwner end - select name,NewOwner,OldOwner FETCH NEXT FROM curObject INTO Name, Owner END close curObject deallocate curObject GO SERVER 中 循 环 写 入 数 据declare i int set i=1 while i30 begin insert into test (userid) values(i) set i=i+1 end 扩展阅读: 1 完整

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报