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