《数据库基础操作语句》由会员分享,可在线阅读,更多相关《数据库基础操作语句(7页珍藏版)》请在金锄头文库上搜索。
1、.-一、根底1、说明:创立数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份 sql server- 创立备份数据的 deviceUSE masterEXEC sp_addumpdevice disk, testBack, c:mssql7backupMyNwind_1.dat- 开场备份BACKUP DATABASE pubs TO testBack4、说明:创立新表create table tabname(col1 type1 not null primary key,col2 type2 not nu
2、ll,.)根据已有的表创立新表:A:create table tab_new like tab_old (使用旧表创立新表)B:create table tab_new as select col1,col2 from tab_old definition only5、说明:删除新表drop table tabname6、说明:增加一个列Alter table tabname add column col type注: 列增加后将不能删除。 DB2中列加上后数据类型也不能改变, 唯一能改变的是增加varchar类型的长度。7、说明:添加主键: Alter table tabname add p
3、rimary key(col)说明:删除主键: Alter table tabname drop primary key(col)8、说明:创立索引:create unique index idxname on tabname(col.)删除索引:drop index idxname注:索引是不可更改的,想更改必须删除重新建。9、说明:创立视图:create view viewname as select statement删除视图:drop view viewname10、说明:几个简单的根本的sql 语句选择:select * from table1 where 范围插入:insert i
4、nto table1(field1,field2) values(value1,value2)删除:delete from table1 where 范围更新:update table1 set field1=value1 where 范围查找:select * from table1 where field1 like %value1% -like 的语法很精妙,查资料!排序:select * from table1 order by field1,field2 desc总数:select count as totalcount from table1求和:select sum(field1
5、) as sumvalue from table1平均:select avg(field1) as avgvalue from table1最大:select max(field1) as maxvalue from table1最小:select min(field1) as minvalue from table111、说明:几个高级查询运算词A: UNION 运算符-.word.zl.-UNION 运算符通过组合其他两个结果表例如 TABLE1 和 TABLE2并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时即 UNION ALL ,不消除重复行。两种情况下
6、,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。B: EXCEPT 运算符EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。C: INTERSECT 运算符INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。 当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL), 不消除重复行。注:使用运算词的几个查询结果行必须是一致的。12、说明:使用外连接
7、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.cB:right outer join:右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。C:full outer join:全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。二、提升1、说明:复制表(只复制构造,源表名:a 新表名:b) (Access 可用)法一:select * into b
8、from a where 11法二:select top 0 * into b from a2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access 可用)insert into b(a, b, c) select d,e,f from b;3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access 可用)insert into b(a, b, c) select d,e,f from b in 具体数据库 where 条件例子:.from b in &Server.MapPath(.&data.mdb & where.4、说明:子查询(表名 1:a 表名 2:b)s
9、elect a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3)5、说明:显示文章、提交人和最后回复时间select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table wheretable.title=a.title) b6、说明:外连接查询(表名 1:a 表名 2:b)select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OU
10、T JOIN b ON a.a = b.c7、说明:在线视图查询(表名 1:aselect * from (SELECT a,b,c FROM a) T where t.a 1;-.word.zl.-8、说明:between 的用法,between 限制查询数据范围时包括了边界值,not between 不包括select * from table1 where time between time1 and time2select a,b,c, from table1 where a not between 数值 1 and 数值 29、说明:in 的使用方法select * from tab
11、le1 where a not in (值 1,值 2,值 4,值 6)10、说明:两 X 关联表,删除主表中已经在副表中没有的信息delete from table1 where not exists ( select * from table2 where table1.field1=table2.field111、说明:四表联查问题: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.dwhere .12、说明:日程安排提前五分钟提醒SQL: se
12、lect * from 日程安排 where datediff(minute,f开场时间,getdate()513、说明:一条 sql 语句搞定数据库分页select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段14、说明:前 10 条记录select top 10 * form table1 where 范围15、说明:选择在每一组 b 值一样的数据中对应的 a 最大的记录的所有信息(类似这样的用法可以用于论坛每
13、月排行榜,每月热销产品分析,按科目成绩排名,等等.)select a,b,c from tablename ta where a=(select max(a) from tablename 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 tablena
14、me order by newid()18、说明:随机选择记录select newid()19、说明:删除重复记录Delete from tablename where id not in (select max(id) from tablename group by col1,col2,.)20、说明:列出数据库里所有的表名select name from sysobjects where type=U-.word.zl.-21、说明:列出表里的所有的select name from syscolumns where id=object_id(TableName)22、说明:列示 type、
15、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 0end),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 323、说明:初始化表 t
16、able1TRUNCATE TABLE table124、说明:选择从 10 到 15 的记录select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc三、技巧1、1=1,1=2 的使用,在 SQL 语句组合时用的较多“where 1=1是表示选择全部“where 1=2全部不选,如:if strWhere !=beginset strSQL = select count(*) as Total from + tblName + where + strWhereendels
17、ebeginset strSQL = select count(*) as Total from + tblName + end我们可以直接写成set strSQL = select count(*) as Total from + tblName + where 1=1 安定 + strWhere2、收缩数据库-重建索引DBCC REINDEX-.word.zl.-DBCC INDEXDEFRAG-收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE3、压缩数据库dbcc shrinkdatabase(dbname)4、转移数据库给新用户以已存在用户权限exec sp_ch
18、ange_users_login update_one,newname,oldnamego5、检查备份集RESTORE VERIFYONLY from disk=E:dvbbs.bak6、修复数据库ALTER DATABASE dvbbs SET SINGLE_USERGODBCC CHECKDB(dvbbs,repair_allow_data_loss) WITH TABLOCKGOALTER DATABASE dvbbs SET MULTI_USERGO7、日志去除SET NOCOUNT ONDECLARE LogicalFileName sysname,MaxMinutes INT,Ne
19、wSize INTUSE tablename - 要操作的数据库名SELECT LogicalFileName = tablename_log, - 日志文件名MaxMinutes = 10, - Limit on time allowed to wrap log.NewSize = 1 - 你想设定的日志文件的大小(M)- Setup / initializeDECLARE OriginalSize intSELECT OriginalSize = sizeFROM sysfilesWHERE name = LogicalFileNameSELECT Original Size of + d
20、b_name() + LOG is +CONVERT(VARCHAR(30),OriginalSize) + 8K pages or +CONVERT(VARCHAR(30),(OriginalSize*8/1024) + MBFROM sysfiles-.word.zl.-WHERE name = LogicalFileNameCREATE TABLE DummyTrans(DummyColumn char (8000) not null)DECLARE Counter INT,StartTime DATETIME,TruncLog VARCHAR(255)SELECT StartTime
21、= GETDATE(),TruncLog = BACKUP LOG + db_name() + WITH TRUNCATE_ONLYDBCC SHRINKFILE (LogicalFileName, NewSize)EXEC (TruncLog)- Wrap the log if necessary.WHILE MaxMinutes DATEDIFF (mi, StartTime, GETDATE() - time has not expiredAND OriginalSize = (SELECT size FROM sysfiles WHERE name = LogicalFileName)
22、AND (OriginalSize * 8 /1024) NewSizeBEGIN - Outer loop.SELECT Counter = 0WHILE (Counter OriginalSize / 16) AND (Counter 50000)BEGIN - updateINSERT DummyTrans VALUES (Fill Log)DELETE DummyTransSELECT Counter = Counter + 1ENDEXEC (TruncLog)ENDSELECT Final Size of + db_name() + LOG is +CONVERT(VARCHAR(
23、30),size) + 8K pages or +CONVERT(VARCHAR(30),(size*8/1024) + MBFROM sysfilesWHERE name = LogicalFileNameDROP TABLE DummyTransSET NOCOUNT OFF8、说明:更改某个表exec sp_changeobjectowner tablename,dbo9、存储更改全部表CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatchOldOwner as NVARCHAR(128),NewOwner as NVARCHAR(128)AS-
24、.word.zl.-DECLARE Name as NVARCHAR(128)DECLARE Owner as NVARCHAR(128)DECLARE OwnerName as NVARCHAR(128)DECLARE curObject CURSOR FORselect Name = name,Owner = user_name(uid)from sysobjectswhere user_name(uid)=OldOwnerorder by nameOPEN curObjectFETCH NEXT FROM curObject INTO Name, OwnerWHILE(FETCH_STA
25、TUS=0)BEGINif Owner=OldOwnerbeginset OwnerName = OldOwner + . + rtrim(Name)exec sp_changeobjectowner OwnerName, NewOwnerend- select name,NewOwner,OldOwnerFETCH NEXT FROM curObject INTO Name, OwnerENDclose curObjectdeallocate curObjectGO10、SQL SERVER 中直接循环写入数据declare i intset i=1while i30begininsert into test (userid) values(i)set i=i+1end-.word.zl