sql语句大全_sql语句入门
如果有更好的建议或者想看更多关于电子数码技术大全及相关资讯,可以多多关注茶馆百科网。

SQL语句摘要_sql语句介绍
基金会
创建数据库
创建前检查数据库是否存在
if exists (select * from sysdatabases where name='databaseName')
drop database databaseName
go
Create DATABASE databasename
On primary——默认属于主文件组,可以省略
(
Name='databasename_data',主数据文件的逻辑名称
文件名=' 'location: \databasename_data。Mdf ',——主数据文件的物理名称
Size=值mb,——主数据文件的初始大小
Maxsize=mb,——主数据文件的最大大小
Filegrowth=value %——主数据文件的增长率)
log on
(相同
filename='存储目录:\databasename_log. 'Ldf ',——日志文件的物理名称
Size=值MB——日志文件的初始大小
Filegrowth=value mb——日志文件的增长值)
删除数据库
drop database databasename
备份
——创建备份数据的设备
USE master
EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
—启动备份
BACKUP DATABASE pubs TO testBack
创建一个新表
创建表tabname(col1 type1 [not null]][主键]identity(起始值,增量值)
,col2 type2 [not null],…)——primary key主键标识递增的个数
从现有表创建一个新表:
答:去
使用原始数据库名称
go
选择*作为目标数据库名。dbo。原表名中的目标表名(使用旧表创建新表)
B:创建表tab_new为select col1,col2…仅来自tab_old定义
创建序列
create sequence SIMON_SEQUENCE
minvalue 1——最小值
最大值999999999999999999999999999999999 -最大值
从1开始——Start value
递增1 -每次递增几个
cache 20;
drop table tabname—删除表以及表中的信息,但会记录在日志文件中
删除信息
delete from table_name—从表中删除信息,但保留表
增加一列
Alter table table_name add column_name column_type [default default]——在表中添加一个列,[]中的内容是可选的
删除列
Alter table table_name drop column column_name——从表中删除一个列
添加主键
Alter table tabname add primary key(col)
删除主键
创建索引
在tabname(col.)上创建[unique]索引idxname
删除tabname上的索引idxname
注:索引不可更改,要更改必须删除重建。
创建视图
create view viewname as select statement
删除view viewname删除视图
基本语句
(1)数据记录筛选:
sql='select * from data table where field name=field value order by field name [desc]'(按字段值降序排序)默认升序ASC)
Sql='select *从字段名类似'%字段值%'的数据表中按字段名[desc]排序'
Sql='select top 10 * from data table where字段name=字段value order by字段name [desc]'
Sql='select top 10 * from table order by字段名[desc]'
Sql='select * from data table where字段名in (' value 1',' value 2',' value 3')'
Sql='select * from字段名在1和2之间的数据表'
(2)更新数据记录:
Sql='update table set字段name=字段value '
Sql='update table set field 1=value 1, field 2=value 2.字段n=值n,其中条件表达式'
(3)删除数据记录:
Sql='从数据表中删除条件表达式'
Sql='delete from data table '(删除数据表中的所有记录)
(4)增加数据记录:
Sql='insert into data table(字段1,字段2,字段3…)values(值1,值2,值3…)'
Sql='insert into目标表' select * from源表'(添加源表的记录到目标表)
(5)数据记录的统计功能:
AVG(字段名)产生一个表列平均值
COUNT (*);字段名)数据的行数或列中具有值的行数
MAX(字段名)获取表列的最大值
MIN(字段名)获取表列的最小值
SUM(字段名)将数据字段的值相加
引用上述函数的方法:
Sql='select sum(字段名)作为数据表的别名'
set rs=conn.excute(sql)
使用rs(' alias ')获取统计值,并使用上述其他函数。
查询distinct以删除重复的值:select distinct * from table1
(6)数据表的建立和删除:
CREATE TABLE表名(字段1 type 1(length),字段2 type 2(length).)
(7)单列和:
SELECT SUM(字段名)FROM数据表
查询数据库中包含相同字段的表。
select name from sysobjects where xtype='u' and id in(select id from syscolumns where name='s3')
年龄可以从出生日期开始计算:
选择datediff(year,scrq,'2013')作为page_shsjgrgl的年龄
年龄自动从当年开始计算
select datediff(year,csny,cast(YEAR(GETDATE()) as char))
年
select year(djsj) from page_shsjgrgl
月
select month(djsj) from page_shsjgrgl
日
select day(djsj) from page_shsjgrgl
同一数据库中重复的制表结构:
select * into a from b where 11
当IDENTITY_INSERT设置为OFF时,不能为表'aa'中的标识列插入显式值。
设置identity_insert aa ON----
批量插入:
insert into aa(Customer_ID, ID_Type, ID_Number) select Customer_ID, ID_Type, ID_Number from TCustomer;
set identity_insert aa OFF——禁用
不同数据库之间的复制:
复制结构:
select * into test.dbo.b from GCRT.dbo.page_shsjgrgl where 11
复制内容:
insert into test.dbo.b(xm,ssdq) select xm,ssdq from GCRT.dbo.page_shsjgrgl
查看数据库中所有的表名:
select name from SysObjects where type='u'
查看数据库中所有表含有同一字段的表:
select name from sysobjects where xtype='u' and id in(select id from syscolumns where name='同一字段')
查看数据表中的所有字段:
select name from Syscolumns where id=object_id('表名')
查询数据库时前10条记录:
select top 10 * from td_areacode order by newid()
修改字段类型:
ALTER TABLE 表名ALTER COLUMN 字段名varchar(30) NOT NULL
use ZHJIANGJGYL
declare @temp nvarchar(30)
set @temp='ZWI4'
select hllx from page_yljg_zyry where hllx not in(
select
case @temp when ''
then ''
else b1 end
from (select * from TD_Code where page_en='page_yljg_zyry' and B2='ZWI') s where s.b1 !=
case @temp when '' then '' else @temp end)
更改数据库表字段类型:
alter table page_shsjgrgl alter column s1 int
高级查询
A:UNION运算符
UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消去表中任何重复行而派生出一个结果表。当ALL 随UNION 一起使用时(即UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自TABLE1 就是来自TABLE2。
B: EXCEPT运算符
EXCEPT 运算符通过包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随EXCEPT 一起使用时(EXCEPT ALL),不消除重复行。
C:INTERSECT运算符
INTERSECT 运算符通过只包括TABLE1 和TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当ALL 随INTERSECT 一起使用时(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:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
判断对象
判断数据库是否存在
if exists (select*fromsysdatabaseswherename='数据库名')
dropdatabase[数据库名]
判断表是否存在
if not exists (select * from sysobjects where [name]='表名' and xtype='U')
begin
--这里创建表
判断存储过程是否存在
if exists (select*fromsysobjectswhereid=object_id(N'[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure')=1)
dropprocedure[存储过程名]
判断临时表是否存在
if object_id('tempdb.#临时表名')isnot null
droptable#临时表名
判断视图是否存在
--SQL Server 2000
IF EXISTS (SELECT*FROMsysviewsWHEREobject_id='[dbo].[视图名]'
--SQL Server 2005
IF EXISTS (SELECT*FROMsys.viewsWHEREobject_id='[dbo].[视图名]'
判断函数是否存在
if exists (select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF'))
dropfunction[dbo].[函数名]
获取创建信息
SELECT[name],[id],crdateFROMsysobjectswherextype='U'
判断列是否存在
if exists(select*fromsyscolumnswhereid=object_id('表名') andname='列名')
altertable表名dropcolumn列名
判断列是否自增列
if columnproperty(object_id('table'),'col','IsIdentity')=1
print '自增列'
else
print '不是自增列'
SELECT*FROMsys.columnsWHEREobject_id=OBJECT_ID('表名')
AND is_identity=1
判断表中是否存在索引
if exists(select*fromsysindexeswhereid=object_id('表名') andname='索引名')
print '存在'
else
print '不存在
查看数据库中对象
SELECT*FROMsysobjectsWHEREname='对象名'
select * from table(所要查询的表名) where coloum(条件)
提升
复制表
(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 11
法二:select top 0 * into b from a
拷贝表
(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(x, y, z) select d,e,f from a;
跨数据库之间表的拷贝
(具体数据使用绝对路径) (Access可用)
insert into b(x, y, z) select d,e,f from a in ‘具体数据库’ where 条件
例子:from b in ''Server.MapPath('.''\data.mdb' '' where.
子查询
(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b 或者: select a,b,c from a where a IN (1,2,3)
显示文章最后时间
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)
select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a=b.c
在线视图查询
(表名1:a)
select * from (Select a,b,c FROM a) T where t.a 1;
between的用法
between为查询某字段的指定范围,限制查询数据范围时包括了边界值,not between不包括边界值
select * from table1 where time between time1 and time2
select a,b,c, from table1 where a not between 数值1 and 数值2
in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
删除主表没有的信息
两张关联表delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1
四表联查问题
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 .
日程安排提前五分钟
SQL: select * from 日程安排where datediff('minute',f开始时间,getdate())5
一条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值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等。)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
派生结果表
包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select 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 from 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),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
初始化表table1
TRUNCATE TABLE table1
选择从10到15的记录
select top 5 * from (select top10 * from (select top 15 * from table order by id asc) table_别名order by id desc) table_2 order by id
数据类型转换
declare @numid int
declare @id varchar(50)
set @numid=2005
set @id=convert(varchar,@numid)
关于sql语句大全的疑问,下面将做详细的解答。通过上述语句完成数据类型Int转换成varchar,其他转换类似,可参看convert函数。
技巧
1=1,1=2的使用
在SQL语句组合时用的较多
“where 1=1”是表示选择全部“where 1=2”全部不选,
如:
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 tablename where 1+1'
if(@strWhere!='')
收缩数据库
--重建索引
DBCC REINDEX
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 CHECKDB('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 wrap 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/1024)) + '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, @NewSize)
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 @OriginalSize/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=@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 @OwnerName 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
循环写入数据
declare @i int
set @i=1
while @i30
begin
insert into test (userid) values(@i)
set @i=@i+1
有关sql语句大全的介绍就到这里,希望对大家都有所帮助!想要详细了解sql语句大全,可以继续关注sql语句入门的最新动态。
本文主要介绍了关于sql语句大全_sql语句入门的相关养殖或种植技术,电子数码栏目还介绍了该行业生产经营方式及经营管理,关注电子数码发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解电子数码技术怎么管理的要点,是您电子数码致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://23.234.50.4:8411/article/2508753.html