1. 首页 > 百科知识

sql语句大全实例教程(sql语句大全100句)

sql语句大全实例教程(sql语句大全100句)

本文为大家介绍sql语句大全实例教程(sql语句大全100句),下面和小编一起看看详细内容吧。

sql语句大全_sql语句入门

SQL(结构化查询语言)是一种专用编程语言。它是一种数据库查询和编程语言,用于访问数据以及查询、更新和管理关系数据库系统;它也是一个数据库脚本。文件扩展名。 SQL语句的种类和数量很多,经常使用的语句也很多。 SQL查询语句就是一个典型的例子。无论是高级查询还是低级查询,对SQL查询语句的需求都是最频繁的。那么sql语句的百科全书有哪些呢?下面提供了完整的sql语句百科全书。希望对需要入门sql语句的网友有所帮助。让我们来了解一下吧!

基础

创建数据库

创建数据库之前先判断数据库是否存在

如果存在(从sysdatabases 中选择*,其中name='databaseName')

删除数据库databaseName

创建DATABASE 数据库名称

on Primary--默认属于主文件组,可以省略

(/*--数据文件详细说明--*/

name=‘databasename_data’, 主数据文件的逻辑名称

filename=''存储位置:\databasename_data.mdf', --主数据文件的物理名称

size=数值mb, --主数据文件的初始大小

maxsize=数值mb, --主数据文件的最大增长值

filegrowth=Number%--主数据文件的增长率)

登录

(/*--日志文件的详细描述,各参数含义同上--*/

name='databasename_log', -- 日志文件的逻辑名称

filename='保存目录:\databasename_log.ldf', --日志文件的物理名称

size=数值mb, --日志文件的初始大小

filegrowth=数值mb--日志文件的增长值)

删除数据库

删除数据库数据库名

备份

---创建备份数据的装置

使用大师

EXEC sp_addumpdevice '磁盘','testBack','c:\mssql7backup\MyNwind_1.dat'

---开始备份

备份数据库pubs 到testBack

创建新表

create table tabname(col1 type1 [not null] [主键] Identity(起始值,增量)

,col2 type2 [not null],)--primary key为主键标识代表递增数量

基于现有表创建新表:

使用原始数据库名称

select * 进入目标数据库名称.dbo。原始表名中的目标表名(使用旧表创建新表)

B:仅从tab_old 定义中创建表tab_new as select col1,col2.

创建序列

创建序列SIMON_SEQUENCE

minvalue 1 -- 最小值

最大值999999999999999999999999999 -- 最大值

从1 开始-- 起始值

加1——每次加多少

缓存20;

删除表

drop table tabname--这是把表连同表中的信息一起删除但是日志文件中会有记录

删除消息

delete from table_name - 这是删除表中的信息但保留表

添加栏目

alter table table_name add column_name column_type [default 默认值]--向表中添加一列,[]中的内容为可选

删除列

alter table table_name drop column column_name--从表中删除一列

添加主键

更改表选项卡名称添加主键(col)

说明:删除主键:Alter table tabname drop Primary key(col)

创建索引

在tabname(col….) 上创建[唯一] 索引idxname

删除索引:在选项卡名称上删除索引idxname

注意:索引不能更改。如果要更改它,则必须删除它并重建它。

创建视图

创建视图视图名称作为select 语句

删除视图:drop view viewname

基本语句

(1) 数据记录筛选:

sql='select * from data table where 字段名=字段值order by 字段名[desc]'(按某个字段值降序排序,默认升序ASC)

sql='select * from 数据表,其中字段名称如'%field value%' 按字段名称排序[desc]'

sql='从数据表中选择前10个*,其中字段名称=字段值按字段名称排序[desc]'

sql='从数据表中按字段名称顺序选择前10 个* [desc]'

sql='select * from 数据表where 字段名in ('值1', '值2', '值3')'

sql='select * from 数据表,其中字段名在值1 和值2 之间'

(2)更新数据记录:

sql='更新数据表设置字段名=字段值where条件表达式'

sql='更新数据表设置字段1=值1,字段2=值2.字段n=值n where条件表达式'

(3)删除数据记录:

sql='从数据表中删除where条件表达式'

sql='delete from data table'(删除数据表中所有记录)

(4)添加数据记录:

sql='插入数据表(字段1、字段2、字段3.)值(值1、值2、值3.)'

sql='insert into target data table select * from source data table'(将源数据表中的记录添加到目标数据表中)

(5)数据记录统计功能:

AVG(字段名) 导出表列平均值

COUNT(*;字段名) 统计数据行数或统计某一列有值的数据行数

MAX(字段名) 获取表列的最大值

MIN(字段名) 获取表列的最小值

SUM(字段名) 将数据列的值相加

如何引用上述函数:

sql='从数据表中选择sum(字段名) 作为别名,其中条件表达式'

设置rs=conn.excute(sql)

使用rs('alias')获取统计值,其他函数使用与上面相同的方法。

删除重复值的查询:select unique * from table1

(6)数据表的创建和删除:

CREATE TABLE 数据表名(字段1类型1(长度),字段2类型2(长度).)

(7) 单列求和:

SELECT SUM(字段名) FROM 数据表

最新语句

查询数据库中包含相同字段的表:

从sysobjects 中选择名称,其中xtype='u' 和id in(从syscolumns 中选择id,其中name='s3')

可以根据出生日期计算年龄:

从page_shsjgrgl 中选择datediff(year,scrq,'2013') 作为年龄

根据当年自动计算年龄

选择datediff(year,csny,cast(YEAR(GETDATE) as char))

从page_shsjgrgl 中选择年份(djsj)

月亮

从page_shsjgrgl 选择月份(djsj)

从page_shsjgrgl 选择日期(djsj)

复制同一个数据库中的表结构:

从b 中选择* 到a,其中11

当IDENTITY_INSERT 设置为OFF 时,无法为表'aa' 中的标识列插入显式值。

set 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---关闭

不同数据库之间的复制:

复制结构:

从GCRT.dbo.page_shsjgrgl 选择* 进入test.dbo.b 其中11

复制内容:

插入test.dbo.b(xm,ssdq) 从GCRT.dbo.page_shsjgrgl 中选择xm,ssdq

查看数据库中所有数据表名:

从SysObjects 中选择名称,其中type='u'

查看数据库中所有包含相同字段的表:

从sysobjects 中选择名称,其中xtype='u' 和id in(从syscolumns 中选择id,其中name='相同字段')

查看数据表中所有字段:

从Syscolumns 中选择名称,其中id=object_id('表名称')

查询数据库时的前10条记录:

通过newid 从td_areacode 顺序中选择前10 个*

修改字段类型:

ALTER TABLE 表名ALTER COLUMN 字段名varchar(30) NOT NULL

使用ZHJIANGJGYL

声明@temp nvarchar(30)

设置@temp='ZWI4'

从page_yljg_zyry 中选择hllx,其中hllx 不在(

选择

案例@temp 当''

然后''

否则b1结束

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)

更改数据库表字段类型:

更改表page_shsjgrgl 更改列s1 int

高级搜索

A:联合运算符

UNION 运算符通过组合其他两个结果表(例如TABLE1 和TABLE2)并消除表中的任何重复行来派生结果表。当ALL 与UNION(即UNION ALL)一起使用时,不会消除重复行。在这两种情况下,派生表中的每一行都来自TABLE1 或TABLE2。

B:除了操作员

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

C:相交运算符

INTERSECT 运算符通过仅包含TABLE1 和TABLE2 中的行并消除任何重复行来派生结果表。当ALL 与INTERSECT (INTERSECT ALL) 一起使用时,不会消除重复行。

注意:使用运算符词的多条查询结果行必须一致。

外连接

A.左外连接:

左外连接(left join):结果集既包括被连接表的匹配行,也包括左连接表的所有行。

SQL: 从LEFT OUT JOIN b ON a.a=b.c 中选择a.a、a.b、a.c、b.c、b.d、b.f

B:右外连接:

右外连接(right join):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:完全外连接:

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

判断对象

判断数据库是否存在

如果存在(select*fromsysdatabaseswherename='数据库名称')

删除数据库[数据库名称]

判断表是否存在

如果不存在(select * from sysobjects where [name]='table name' and xtype='U')

开始

--在这里创建表

判断存储过程是否存在

如果存在(select*fromsysobjectswhereid=object_id(N'[存储过程名称]') 和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].[视图名称]'

判断函数是否存在

如果存在(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[函数名称]') 和xtype in (N'FN', N'IF', N'TF'))

dropfunction[dbo].[函数名称]

获取创作信息

SELECT[名称],[id],crdateFROMsysobjectswherextype='U'/*

xtype 表示参数类型,通常包括如下C=CHECK 约束D=默认值或DEFAULT 约束F=FOREIGNKEY 约束L=log FN=标量函数IF=嵌入表函数P=存储过程PK=PRIMARYKEY 约束(类型为K ) RF=复制过滤存储过程S=系统表TF=表函数TR=触发器U=用户表UQ=UNIQUE 约束(类型为K) V=视图X=扩展存储过程*/

判断该列是否存在

if存在(select*fromsyscolumnswhereid=object_id('表名') andname='列名')

altertable 表名dropcolumn 列名

判断列是否自增

if columnproperty(object_id('table'),'col','IsIdentity')=1

print '自动递增列'

别的

print '不是自动增量列'

SELECT*FROMsys.columnsWHEREobject_id=OBJECT_ID('表名')

并且is_identity=1

判断表中是否存在索引

if存在(select*fromsysindexeswhereid=object_id('表名') andname='索引名')

打印“存在”

别的

打印'不存在

查看数据库中的对象

SELECT*FROMsysobjectsWHEREname='对象名称'

select * from table (要查询的表名) where coloum (条件)

提升

复制表

(仅复制结构,源表名:a,新表名:b)(可访问)

方法一:select * into b from a where 11

方法二:从a中选择top 0 * 到b中

复制表

(复制数据,源表名:a 目标表名:b)(可访问)

插入b(x, y, z) 从a 中选择d,e,f;

跨数据库复制表

(具体数据使用绝对路径)(可访问)

插入b(x, y, z) 从“特定数据库”中的a 中选择d,e,f where 条件

例子:from b in ''Server.MapPath('.''\data.mdb' '' 其中.

子查询

(表名1:a 表名2:b)

从a中选择a,b,c,其中a IN(从b中选择d或:从a中选择a,b,c,其中a IN(1,2,3)

显示文章的最后时间

从表a中选择a.title,a.用户名,b.adddate,(从表中选择max(adddate)adddate,其中table.title=a.title)b

外连接查询

(表名1:a 表名2:b)

从LEFT OUT JOIN b ON a.a=b.c 中选择a.a、a.b、a.c、b.c、b.d、b.f

在线查看查询

(表名1:a)

select * from (Select a,b,c FROM a) T where t.a 1;

之间如何使用

Between是查询某个字段的指定范围。限制查询数据范围时,包含边界值,而不包含边界值。

select * from table1 其中time1 和time2 之间的时间

从表1 中选择a、b、c,其中a 不在值1 和值2 之间

如何使用在

select * from table1 where a [not] in (‘值1’, ‘值2’, ‘值4’, ‘值6’)

删除主表中没有的信息

两个相关表从table1 中删除不存在的地方(select * from table2 where table1.field1=table2.field1

四表联合查询问题

在a.a=b.b 上选择* 从左内联接b 在a.a=c.c 上右内联接c 在a.a=d.d 上内联接d 其中.

提前五分钟安排

SQL: select * from Schedule where datediff('分钟',f 开始时间, getdate)5

一条sql获取数据库页面

select top 10 b.* from (选择前20个主键字段,从表名order by 排序字段desc 中排序字段) a, 表名b where b.主键字段=a.主键字段顺序按a。排序字段

前10 条记录

从table1 中选择前10 个*,其中范围

选择排名

选取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 中的所有行并消除所有重复行来派生结果表

(从表A 中选择一个,除了(从表B 中选择一个)除外(从表C 中选择一个)

随机取出10条数据

通过newid 从表名顺序中选择前10 个*

随机选择记录

选择newid

删除重复记录

从表名中删除id 不在的位置(从表名组中选择max(id) by col1,col2,)

列出数据库中的表名

从sysobjects 中选择名称,其中type='U'

列出表中的所有内容

从syscolumns 中选择名称,其中id=object_id('TableName')

列表排列

列出类型、供应商和pcs 字段,按类型字段排列。 case可以轻松实现多选,类似于select中的case。

选择类型,sum(当'A'时case供应商,然后pcs else 0结束),sum(当'C'时case供应商,然后pcs else 0结束),sum(当'B'时case供应商,然后pcs else 0结束)FROM表名组按类型

显示结果:

类型供应商电脑

电脑A 1

电脑A 1

光盘B 2

光盘A 2

手机B 3

手机C 3

初始化表table1

截断表表1

选择10 到15 条记录

select top 5 * from (select top10 * from (select top 15 * from table order by id asc) table_alias order by id desc) table_2 order by id

数据类型转换

声明@numid int

声明@id varchar(50)

设置@numid=2005

设置@id=转换(varchar,@numid)

关于sql语句完整列表的问题,下面会给出详细解答。通过上面的语句完成数据类型Int到varchar的转换。其他转换类似。请参考科

nvert函数。

技巧

  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!='')   {set @strSQL=@strSQL+’and’+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 @i<30   begin   insert into test (userid) values(@i)   set @i=@i+1   有关sql语句大全的介绍就到这里,希望对大家都有所帮助!想要详细了解sql语句大全,可以继续关注sql语句入门的最新动态。

好了,sql语句大全实例教程(sql语句大全100句)的介绍到这里就结束了,想知道更多相关资料可以收藏我们的网站。

本文由云登发布,不代表东辰网立场,转载联系作者并注明出处:https://www.ktwxcd.com/bkzs/275403.html

留言与评论(共有 0 条评论)
   
验证码:

联系我们

在线咨询:点击这里给我发消息

微信号:vx614326601

工作日:9:30-18:30,节假日休息