sql语言

sql语言

一.基金会

1.描述:创建一个数据库。

创建数据库数据库名称2。描述:删除数据库。

删除数据库dbname3。描述:备份sql server -用于创建备份数据的设备。

使用masterEXEC sp _ addumpdevice & # 39磁盘& # 39;, 'testBack & # 39, 'c:\ MSSQL 7 backup \ myn wind _ 1 . dat & # 39;-将数据库pub备份到testBack4。描述:创建新表。

create table tabname(col 1 type 1[not null][主键],col2type2 [not null],…)基于现有表格创建新表格:

答:创建表tab _ new liketab _ old(使用旧表创建新表)

b:将表tab_new创建为select col1,col2…仅从tab_old定义

5.描述:删除新表。

删除表tabname6。描述:添加列。

alter table tabname add coltype注意:列添加后不能删除。在DB2中添加列后,不能更改数据类型。唯一可以改变的就是增加varchar类型的长度。

7.描述:添加主键:

Alter table tab name add primary key(col)描述:Delete primary key:Alter table tab name drop primary key(col)。

8.描述:创建索引:

在tabname(列)上创建[唯一]索引idxname…)删除索引:drop index idxname注意:索引不能更改。如果您想要更改它,您必须删除并重建它。

9.描述:创建视图:

创建视图视图名作为select语句删除视图:

删除视图视图名10。描述:几个简单和基本的sql语句。

Select:Select * From table 1 Where Range
Insert:Insert into table 1(field 1,field2) values (value1,value 2)
Delete:Delete From table 1 Where Range Update:Update table 1 Set field 1 = value 1 Where Range
Search:Select * From table 1 Where field 1 Like ‘ % value 1% ‘-Like的语法非常微妙,请查阅资料!
排序:select * from table1 order by field1,field 2[desc]
Total:select count作为table1的总计数
Sum: select sum (Field1)作为Table1的合计值
erage: select g(field1)。as g value from table 1
Maximum:select max(field 1)as max value from table 1
Minimum:select min(field 1)as min value from table 1。

11.描述:几个高级查询运算符

A: UNION操作符UNION操作符通过组合另外两个结果表(如TABLE1和TABLE2)并消除表中的任何重复行来导出结果表。当ALL与UNION(即UNION ALL)一起使用时,不会消除重复的行。在这两种情况下,派生表的每一行都来自表1或表2。

除了接线员

EXCEPT运算符通过包含TABLE1中的所有行(但不包含TABLE2中的所有行)并消除所有重复行来导出结果表。当ALL与EXCEPT (EXCEPT ALL)一起使用时,不会消除重复行。

c:交集运算符

INTERSECT运算符通过仅包含表1和表2中的行并消除所有重复行来导出结果表。当ALL与INTERSECT (INTERSECT ALL)一起使用时,不会消除重复的行。

注意:使用操作数的几个查询结果行必须一致。

12.描述:使用外部连接

a、left (outer) join: left outer join(左连接):结果集包括连接表的匹配行和左连接表的所有行。SQL:从a.a = b.c上的左外联接b中选择a.a,a.b,a.c,b.c,b.d,b.f

B: Right (outer) Join: right join(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。c:full/cross(outer)join:total outer join:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。12.分组:分组依据:

一个表,一旦分组,查询后只能得到与分组相关的信息。分组相关信息:(统计信息)count、sum、max、min、g分组标准)SQLServer中分组时:Text、ntext、Image类型的字段不能作为selecte统计函数中的分组依据,不能与普通字段放在一起;

13.操作数据库:

分离数据库:sp _ detach _ db

附加数据库:sp_attach_db后跟表示附件需要完整的路径名。

14.如何修改数据库的名称:

sp _ renamedb & # 39old _ name & # 39, 'new _ name & # 39

第二,推广

1.描述:复制表(仅复制结构,源表名:新表名:b)(访问可用)。

方法1: select * into b from a where 1

方法2:从a中选择top 0 *进入b

2.描述:复制表(复制数据,源表名称:a目标表名称:b)(有访问权限)

插入b(a,b,c)从b中选择d,e,f;3.描述:跨数据库表复制(特定数据使用绝对路径)(可以访问)

插入b (a,b,c)从bin“混凝土数据库”中选择d,e,f,其中条件示例:…从b in & # 39"&服务器。MapPath(& # 34;。")&"\ data.mdb & # 34&"'在哪里..4.描述:子查询(表名1:表名2: b)

Select a,b,c from a where a in(select d from b)or:select a,b,c from a where a in (1,2,3) 5。描述:显示文章、作者和最后回复时间

select a . title a . username b . add date from table a,(select max(add date)add date from table where table。title = a.title) B6,描述:外连接查询(表名1: a表名2: b)

从a.a = b.c7上的一个左出join b中选择a.a,a.b,a.c,b.c,b.d,b.f .描述:联机查看查询(表名1: a)

select * from(从a中选择a,b,c)T其中t.a & gt1;8.说明:between的用法包括between限制查询数据范围时的边界值,not between不包括

Select * from table 1 where time 1 and time 2 Select a,b,c from table 1 where a not between numerical value 1 and numerical value 29,说明:如何在

中使用。

select * from table 1 where a[not]in(‘ value 1 ‘,’ value 2 ‘,’ value 4 ‘,’ value 6′)10。描述:两个相关的表,删除主表中不在辅助表中的信息

从不存在的表1中删除(select * from table2,其中table1.field1 = table2.field1) 11。描述:四表联查问题:

select * from a . a = b.b上的左内联接b . b右内联接c on a.a = c.c内联接d on a.a = d.d其中…………………………………………………………………………………………………………………

SQL:select * from schedule where datediff(& # 39;分钟& # 39;,f开始时间,getdate())& gt;513,描述:获取数据库分页的sql语句。

select top 10 b . * from(select top 20 primary key field,sort field from table name order by sort field desc)a,table name b其中b primary key field = a . primary key field order by a . sort field

具体实现:关于数据库分页:

declare @start int,@ end int @ SQL nvarchar(600)set @ SQL = ‘ select top ‘+str(@ end-@ start+1)+’+from T where Rid not in(select top ‘+str(@ str-1)+’ Rid from T where Rid & gt;-1)’ exec sp_executesql @sql注意:top之后不能直接跟一个变量,所以这是实际应用中进行特殊处理的唯一方法。Rid是一个标识列,如果top之后有一个特定的字段,这是非常有益的。因为这样可以避免top的字段如果进行逻辑索引,查询结果后实际表中的不一致(逻辑索引中的数据可能与数据表中的数据不一致,如果查询时对字段进行了索引,则先查询索引)。

14.描述:前10条记录

选择前10个*表单表1,其中范围

15.描述:选择每组B值相同的数据中A值最大的记录的所有信息(类似这样的用法可以用于论坛月度排名、热销产品月度分析、按主题评分排名等。)

select a,b,c from tablename ta其中a =(select max(a from tablename TB其中tb.b=ta.b)

16.描述:结果表是通过包括TableA中的所有行而不是TableB和TableC中的所有行并消除所有重复行而得到的。

(从表a中选择a) except(从表b中选择a)except(从表c中选择a)17。描述:随机抽取10条数据

select top 10 * from tablename order by newid()18。描述:随机选择记录

Select newid()19。描述:删除重复记录。

1)从id不在的表名中删除(select max(id)from tablename group by col 1,col2,…)2)select distinct * into temp from tablename delete from tablename insert into tablename select * from temp evaluation:该操作涉及到大量数据的移动,不适合大容量的数据操作3)比如在将数据导入外部表时,由于某些原因,第一次只导入了一部分,但是很难确定具置,所以只有在下次再导入,这样就会造成很多重复字段。如何删除重复字段?

alter table tablename-添加自添加列add column_b int identity(1,1)delete from tablename where column _ b not in(select max(column _ b)from tablename group by column 1,column2,…)alter table tablename drop column column _ b

20.描述:列出数据库中所有的表名。

从sysobjects中选择名称,其中type = & # 39U & # 39// U代表用户21。描述:列出表中的所有列名。

select name from syscolumns其中id = object _ id(& # 39;TableName & # 39) 22.描述:列出类型、供应商和pcs字段,并按类型字段排列。case可以轻松实现多选,类似于select中的case。

选择类型,sum(case vender when & # 39;一& # 39;然后pcs else 0 end),sum(case vender when & # 39;C & # 39然后pcs else 0 end),sum(case vender when & # 39;B&第39名;然后PCs else 0 end)从tablename按类型分组显示结果:
类型供应商pcs
电脑A 1
电脑A 1
CD B 2
CD A 2
手机B 3
手机C 3。

23.描述:初始化表1。

截断表格table124。描述:选择10到15条记录。

select top 5 * from(select top 15 * from table order by id ASC)table _ alias order by id desc III。技能

1,1=1,1=2是SQL语句中常用的组合。

“其中1=1”表示全选“其中1=2”,不全选。

比如:

if @strWhere!=''beginset @ strSQL = & # 39select count(*)as Total from[& # 39;+@ TBL name+& # 39;]其中& # 39;+@ strWhereendelse beginet @ strSQL = & # 39;select count(*)as Total from[& # 39;+@ TBL name+& # 39;]'结尾我们可以直接写。

set @ strSQL = & # 39select count(*)as Total from[& # 39;+@ TBL name+& # 39;]其中1=1稳定性& # 39;+ @strWhere

2.收缩数据库

-rebuild index
dbcc reindex
dbcc index defrag
-收缩数据和日志
dbcc shrink db
dbcc shrink file

3.压缩数据库

Dbcc shrinkdatabase(dbname)4。将数据库转移给具有现有用户权限的新用户。

exec sp _ change _ users _ login & # 39update _ one & # 39,'newname & # 39,'老字号& # 39;Go5,检查备份组

从磁盘还原verify only = & # 39;e:\ dv BBS . bak & # 39;6.修复数据库

ALTER DATABASE[dvbbs]SET SINGLE _ USER
GO
DBCC CHECKDB(& # 39;dvbbs & # 39,repair _ allow _ data _ loss)WITH ta block
GO
ALTER DATABASE[dv BBS]SET MULTI _ USER
GO

7.日志清除

SET no count ON
DECLARE @ logical filename sysname,
@MaxMinutes INT,
@NewSize INT

使用tablename – database name进行操作
select @ logical filename = & # 39;tablename _ log & # 39,-日志文件名
@ maxminutes = 10,-允许换行的时间限制。
@ new size = 1-要设置的日志文件的大小(m)

setup/initialize
DECLARE @ original size int
SELECT @ original size = size
FROM sysfiles
其中name = @ logical filename
SELECT & # 39;原始尺寸& # 39;+db _ name()+& # 39;日志是& # 39;+
CONVERT(VARCHAR(30),@ original size)+& # 39;8K页或& # 39;+
CONVERT(VARCHAR(30),(@ original size * 8/1024))+& # 39;MB & # 39
FROM sysfiles
其中name = @ logical filename
创建表dummy trans
(dummy column char(8000)not null)

DECLARE @Counter INT,
@StartTime DATETIME,
@ TruncLog VARCHAR(255)
SELECT @ start time = GETDATE(),
@ TruncLog = & # 39;备份日志& # 39;+db _ name()+& # 39;WITH TRUNCATE _ ONLY & # 39

DBCC SHRINKFILE(@ logical filename,@ NewSize)
EXEC(@ TruncLog)
-如有必要,包装日志。
WHILE @ max minutes & gt;DATEDIFF (mi,@StartTime,GETDATE()) -时间未过期
且@ original size =(SELECT size FROM sysfiles WHERE name = @ logical filename)
且(@ original size * 8/1024)& gt;@NewSize
BEGIN -外循环。
SELECT @ Counter = 0
WHILE((@ Counter & lt;@OriginalSize / 16)和(@ Counter & lt50000))
BEGIN-update
插入DummyTrans值(& # 39;填充日志& # 39;)DELETE dummy trans
SELECT @ Counter = @ Counter+1
END
EXEC(@ TruncLog)
END
SELECT & # 39;最终尺寸& # 39;+db _ name()+& # 39;日志是& # 39;+
CONVERT(VARCHAR(30),size)+& # 39;8K页或& # 39;+
CONVERT(VARCHAR(30),(size * 8/1024))+& # 39;MB & # 39
FROM sysfiles
WHERE name = @ logical filename
DROP TABLE dummy trans
SET no count OFF

8.描述:更改表格。

exec sp _ changeobjectowner & # 39tablename & # 39,'dbo & # 399.存储所有已更改的表

创建过程dbo。user _ ChangeObjectOwnerBatch
@ old owner AS NVARCHAR(128),
@ new owner AS NVARCHAR(128)
AS

声明@Name为NVARCHAR(128)
声明@Owner为NVARCHAR(128)
声明@OwnerName为NVARCHAR(128)


select声明curObject游标& # 39;姓名& # 39;= name,
& # 39;所有者& # 39;=用户名(uid)
from sysobjects
其中用户名(uid)= @旧所有者
按名称排序

OPEN cur object
FETCH NEXT FROM cur object INTO @ Name,@ Owner
WHILE(@ @ FETCH _ STATUS = 0)
BEGIN
if @ Owner = @ old Owner
BEGIN
set @ Owner Name = @ old Owner+& # 39;。'+rtrim(@ Name)
exec sp _ changeobjectowner @ owner Name,@NewOwner
end
-select @ Name,@ new owner,@OldOwner

将下一个从curObject提取到@Name,@Owner
END

close curObject
deallocate curObject
GO

10.在SQL SERVER中直接循环写数据。

declare @ I int
set @ I = 1
while @ I & lt;30
begin
insert into test(userid)值(@i)
set @i=@i+1
end

案例:

如下表所示,要求装裱中所有不及格的等级每次都要加0.1,这样才能刚好及格:

姓名score张山80李石59王五50松泉69 while((select min(score)from TB _ table)& lt;60)

开始

更新tb _表集得分=得分*1.01

where score & lt60

if(select min(score from TB _ table)& gt;60

破裂

其他

继续

结束

数据开发-经典

1.按姓氏笔画排序:

select * From tablename order by customername collate Chinese _ PRC _ stroke _ ci _ as//从少到多2。数据库加密:

选择加密(& # 39;原始密码& # 39;)
选择pwd encrypt(& # 39;原始密码& # 39;)
选择pwd compare(& # 39;原始密码& # 39;,'加密密码& # 39;)= 1-相同;否则它与encrypt(& # 39;原始密码& # 39;)
选择pwd encrypt(& # 39;原始密码& # 39;)
选择pwd compare(& # 39;原始密码& # 39;,'加密密码& # 39;)= 1-相同;否则不一样。

3.检索表中的字段:

declare @list varchar(1000),
@ SQL nvarchar(1000)
select @ list = @ list+& # 39;,'+b.name from sysobjects a,syscolumns b其中a.id=b.id,a.name = & # 39表A & # 39
set @ SQL = & # 39;选择& # 39;+right(@list,len(@ list)-1)+& # 39;从表A & # 39
exec (@sql)

4.检查硬盘分区:

执行主机..xp _ fixeddrives5。比较表A和表B是否相等:

if(select checksum _ agg(binary _ checksum(*))from A)
=
(select checksum _ agg(binary _ checksum(*))from B)
print & # 39;等于& # 39;
else
print & # 39;不平等& # 39;

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论