1. 首页
  2. 电子数码
  3. sql语句大全_sql语句入门

sql语句大全_sql语句入门

简介:关于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