当前位置:首页 » 编程语言 » sql语句库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql语句库

发布时间: 2022-04-30 06:33:17

sql数据库语句

1.
将sql2005的数据表导出成excel表格
在所有任务>>数据导出.
选择数据源的提供者为
sql
server
2005,
数据目标(target)
的提供程序为microsoft
excell
,
就可以导出数据,
2.数据库中的某个表的所有数据用sql语句
插入到另一个表中.
如果这两个表的结构定义完全相同最理想.
如果不是,那就要挑选类型相同的相对应
.
insert
into
tbla(aa,bb,cc)
values(select
aa1,bb1,cc1
from
tblbb)

⑵ SQL语句大全

SQL语句大全

一、基础
1、说明:创建数据库
Create DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname on tabname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ (所有包含‘value1’这个模式的字符串)---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]
11、说明:几个高级查询运算词
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),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
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:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
二、提升
1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
法一:select * into b from a where 1<>1
法二:select top 0 * into b from a
2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
insert into b(a, b, c) select d,e,f from b;
3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件
例子:..from b in '"&Server.MapPath("."&"\data.mdb" &"' where..
4、说明:子查询(表名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)
5、说明:显示文章、提交人和最后回复时间
select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b
6、说明:外连接查询(表名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
7、说明:在线视图查询(表名1:a
select * from (Select a,b,c FROM a) T where t.a > 1;
8、说明: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
9、说明:in 的使用方法
select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)
10、说明:两张关联表,删除主表中已经在副表中没有的信息
delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1
11、说明:四表联查问题:
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 .....
12、说明:日程安排提前五分钟提醒
SQL: select * from 日程安排 where datediff('minute',f开始时间,getdate())>5
13、说明:一条sql 语句搞定数据库分页
select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段
14、说明:前10条记录
select top 10 * form table1 where 范围
15、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)
16、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
(select a from tableA except (select a from tableB) except (select a from tableC)
17、说明:随机取出10条数据
select top 10 * from tablename order by newid()
18、说明:随机选择记录
select newid()
19、说明:删除重复记录
Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)
20、说明:列出数据库里所有的表名
select name from sysobjects where type='U'
21、说明:列出表里的所有的
select name from syscolumns where id=object_id('TableName')
22、说明:列示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
23、说明:初始化表table1
TRUNCATE TABLE table1
24、说明:选择从10到15的记录
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
[编辑本段]三、技巧
1、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 [' + @tblName + '] where 1=1 安定 '+ @strWhere
2、收缩数据库
--重建索引
DBCC REINDEX
DBCC INDEXDEFRAG
--收缩数据和日志
DBCC SHRINKDB
DBCC SHRINKFILE
3、压缩数据库
dbcc shrinkdatabase(dbname)
4、转移数据库给新用户以已存在用户权限
exec sp_change_users_login 'update_one','newname','oldname'
go
5、检查备份集
RESTORE VERIFYONLY from disk='E:\dvbbs.bak'
6、修复数据库
Alter DATABASE [dvbbs] SET SINGLE_USER
GO
DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK
GO
Alter DATABASE [dvbbs] SET MULTI_USER
GO
7、日志清除
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
8、说明:更改某个表
exec sp_changeobjectowner 'tablename','dbo'
9、存储更改全部表
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
10、SQL SERVER中直接循环写入数据
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end

⑶ sql语句大全

sp_helpdb ----------查本服务器中所有数据库 可跟库名
例:sp_helpdb 库名
-------------------------------------------------------------
sp_databases -------------查看本服务器中可用的数据库
--------------------------------------------------------------------
sp_helpfile -------------------查看当前工作着的数据库
-----------------------------------------------------------
sp_helpfilegroup ---------------查看当前工作着的组的信息。可加参数,跟组名
例:sp_helpdb 库名
----------------------------------------------------------------
sp_renamedb -----------改数据库名
例:sp_renamedb 旧库名,新库名
----------------------------------------------------------------
select groupname from sysfilegroups where status=24
---------查看文件组 =8是查只读文件组 =16是查默认文件组 =24是查即只读又默认
---------------------------------------------------------------------------
sp_dboption ----------修改数据库选项值
例:sp_dboption 库名 选项 值
值决定真假 一般用:true/faule 或off/on表示
选项一般常用为:use only(数据库拥有者)single user(单一用户)read only(只读)
--------------------------------------------------------------------------
dbcc shrinkdatabase ---------收缩数据库
例:dbcc shrinkdatabase (库名,10)
收缩库,剩余空间保留10%,后面如果不加notruncate,则释放空间操作系统,
加truncateonly,归还空间给操作系统,但忽略所给的百分比数值。
----------------------------------------------------------------------
dbcc shrinkfile ---------收缩文件
用法与ddcc shrinkdatabase相同。
----------------------------------------------------------------------
alter database ---------------修改数据库
用法:这是起始句,告诉要做的是修改数据库,然后再接要做什么工作。每次只做一项工作
alter database 库名
add file 文件名....to filegroup 文件组名
----------------增加库文件,格式与建库时括号里指定大小时的格式一样
add log file 文件名 -------------增加日志文件
remove file 文件名 ---------删除库内的文件
add filegroup 文件组名 -----------增加一个文件组
modify file 文件名 -------------修改文件属性
modify filegroup 组名 ------------修改文件组属性
---------------------------------------------------------------------------
drop database --------------删除数据库
例:drop database 库名1,库名2 ---------可同时删除两个库
------------------------------------------------------------------------
create table 表名
(列名 类型,
列名 类型) -------------------建立表
--------------------------------------------------------------------
select * from 表名 ---------查询表结构
--------------------------------------------------------------------
select @@dbts ----------查询最后一次操作
--------------------------------------------------------------------
insert into 表名
(列名,列名)
values (变量,变量.....) ------------向表中插入数据
如省略列名,则必须把每列的变量填全,不可缺少。可以省略 into
--------------------------------------------------------------------
sp_addtype 自定义类型名 系统类型名 -------用户自定义类型
--------------------------------------------------------------------
sp_droptype 自定义类型名 -----------删除自定义类型
如有数据库正在使用该自定义类型,则不能删除
--------------------------------------------------------------------
alter table ---------修改表结构
用法: alter table 表名
alter column 列名 类型 ---------修改列的类型
drop column 列名 --------删除列
add (column) 列名 --------增加列,实际用时不加 column
-----------------------------------------------------------------
sp_help -------------查看数据库中对象信息
用法: sp_help 表名 ---------------查表的信息
或 sp_help 库名 --------------查库信息
后面可以跟库名或者表名,是查数据库或者表的信息
-----------------------------------------------------------------
sp_spaceused --------查看对象占用的空间信息
用法: sp_spaceused ----------查当前库占用空间信息
或 sp_spaceused 表名 ----------查指定表占用空间信息
后面可以加表名查看表占空间信息。如不加,则查看当前数据库。
------------------------------------------------------------------
sp_depends ------------查看对象的相关性
用法: sp_depends 表名 -----------后面加表名
------------------------------------------------------------------
sp_rename ---------------重新命名
用法: sp_rename 旧表名,新表名 ---------改表名
或 sp_rename '表名.旧列名','新列名' 'column' -------修改列名
--------------------------------------------------------------------
create index --------------创建索引
用法: create index 索引名 on 表名 (列名) ------创建索引
或: create unique clustered index 索引名 on 表名 (列名)
------创建簇集唯一索引 unique是建唯一索引 clustered是建簇集索引
---非簇集索引用:nonclustered
----------------------------------------------------------------------
select top ---------查表中前几行
用法: select top 3 * from 表名 -------查表中前三行
或: select top 10 percent * from 表名 -------显示表中前10%数据
------------加入percent是百分比的意思。只以大于的最小整数,无小数
----------------------------------------------------------------------
select 列名,列名,列名 from 表名 -------显示表中特定的列
----------------------------------------------------------------------
select *,列名 from 表名 ----------查询表中所有,后面再加一列
----------------------------------------------------------------------
select distinct ----------查询不重复数据 distinct用于去掉重复数据
用法: select distinct * from 表名 ---------查表中不重复数据
或: select distinct * into 新表名 from 旧表名 ------查旧表中不重复数据同时生成新表
-------------------------------------------------------------------------------------
select 列名+列名 from 表名 -------允许有计算式出现,显示无列名的计算结果
如想加列名,则: select 列名+列名 as 新列名 from 表名
-------------------------------------------------------------------------
select 年龄,联系电话,cast (年龄 as varchar(2))+联系电话 from 表名
--------把整型数据年龄转化为字符型与字符型数据联系电话相加
----------------------------------------------------------------------------
ctrl+o(字母O) --------清空数据。空值与别的数据运算结果为空
----------------------------------------------------------------------------
select 原始列名 别名 from 表名
select 原始列名 as 别名 from 表名
select 别名=原始列名 from 表名
--------指定别名的三种方法。非法符号可''或[]引起来,不得直接使用。
----------------------------------------------------------------------------
select * from 表名
where 年龄 between 20 and 30 ---------显示年龄在20到30之间的人
-------between是从条件一到条件二之间的限制
-----------------------------------------------------------------------
select * from 表名
where 年龄 in (20,21,22) ---------显示年龄为20、21、22的人
--------in是限制在这些条件内的,是显示一个取值范围
-----------------------------------------------------------------------
select * from 表名
where 联系电话 like '[1-3]%' --------查电话是1-3开头的人
--------like是像这些条件的语句,能用通配符:%、_、[]、[^]
--------意思分别代表:所有字符、一个字符、一位上可取值、一位上不可取值
----------------------------------------------------------------------
select * from 表名
where 姓名 like '[e[]%'
or 姓名 like '%e]'
escape 'e' ------------显示以‘[’开头或以‘]’结尾的所有数据,中间有不显示
----------escape ''是指定通配符
-----------------------------------------------------------------------------
order by ---------给数据排序
用法: select * from 表名
order by 年龄 -----------排序显示年龄。默认为升序(asc)要降序必须加desc
------------------------------------------------------------------------
select distinct top 3 from 表名
order by 年龄 desc --------显示最大的三种年龄
-------------------------------------------------------------------------
select * from 表名
where 年龄 in (select distinct top 3 年龄 from 表名 order by 年龄)
order by 年龄 -----------显示年龄最小的所有人,并排序
-------------------------------------------------------------------------
select 姓名,
case
when MCSE成绩 >=80 and MCSE成绩<=100
then '考的不错'
when MCSE成绩 >=60 and MCSE成绩<80
then '考的一般'
when MCSE成绩 >=0 and MCSE成绩<60
then '不及格'
when MCSE成绩 is null
then '这小子没考试'
else '异常数据'
end
MCSE成绩
from 表名
-----------判断语句 null是空值的意思,不能用等号连接,只能用is
-----------case到end为一列里的判断,case在这里是取值,结果用于输出,不显示原值
-----------------------------------------------------------------------------
select 列名1,
case 列名2
when 1 then '男生'
when 0 then '女生'
else '未知'
end
from 表名
--------这里case取列名,是用于这一列每项取值比较,在这里列名2用的是bit型数据
-------------------------------------------------------------------------
select * into 库1.表1 from 库2.表2
-----------把库2中表2移到库1中
------------------------------------------------------------------------
数据维护三个命令:
insert ---------向表中插入数据
update ---------修改表中的数据
delete ---------删除表中的数据
------------------------------------------------------------------------
insert into 表名 -----------(into可有可无)
(列1,列2,列3,列4) -----------表的原始列,用括号括起来
values ----------有这条命令只能插入一条数据
(数1,数2,数3,数4) ----------插入的数值
---------可以省略原始列清单,但必须把所有列都赋值
------------------------------------------------------------------------
insert into 表1
(列1,列2,列3,列4)
select * from 表2 where sex=1
----------将表2中sex列等于1的数据信息插入表1中
-------------------------------------------------------------------------
update 表名
set 姓名='丁一'
where 姓名='李一' ----------把表中姓名叫李一的改为丁一。
------------where后面跟定位的列与值
-------------------------------------------------------------------------
update 表名
set 学号=14,
姓名=陈强
where 学号=1 ------------把学号为1的同学改为学号14,姓名陈强
-----------------------------------------------------------------------
update 表名
set 学号=年龄+7,
姓名='陈一强',
年龄=29
where 学号=14
-------把学号为14的同学资料改为年龄加七赋给学号姓名改为陈一强,年龄改为29
-------如果没用where定位,则修改全部值
------------------------------------------------------------------------
delete 表名
where 学号>30 ---------把学号大于30的资料删除
--------如不指定条件,则删表内所有数据。这是记录日志文件的操作
----------------------------------------------------------------
truncate table 表名
-------清空表。不记录日志文件的操作。
--------------------------------------------------------------------
create view 图名 -------------新建视图
用法: create view 图名
as
select 列名 from 表名
------------------------------------------------------------------------------
syscomments ------------这个表存着视图代码的信息
------------------------------------------------------------------------------
alter view 图名
with encryption
as
select 列名 from 表名 -----------用with encyption语句给视图原代码加密
-------------不可恢复,除非保留源代码
------------------------------------------------------------------------------
sp_helptext 图名 -----------查看视图源代码
-----------------------------------------------------------------------------
select text from syscomments
where id =(select id from sysobjects where name ='图名')
---------查视图的代码
-----------------------------------------------------------------------------
create view 图名
as
select * from 源图名 ------------基于源图创建新视图
-----------------------------------------------------------------------------
create view 图名
as
select 列1 as 新列1,列2 新列2,列3=新列3 ---------起别名的三种方法
from 表名 -----------在新视图中为列起别名,则所见的是新起的别名
-----------------------------------------------------------------------------
sp_depends 表名 -----------查该表的相关性,有多少表、图与之相关。
-------------------------------------------------------------------------------
create view 图名
select * from 表名
where 年龄<20
with check option ---------强制插入数据符合年龄小于20的条件,加在where后面
-----------是约束insert和update语句的
-------------------------------------------------------------------------------
select 男公民.姓名,女公民.姓名 from 男公民,女公民
where 男公民.配偶编号=女公民.编号
------------查结婚男女。较原始的语法,后被下列语法取代
或: select 男公民.姓名,女公民.姓名
from 男公民 join 女公民 on 男公民.配偶编号=女公民.编号
-------新的形式,在join之前省略了inner语句。
--可用左连接(*=或left outer join)右连接(=*或right outer join)全连接(full outer)
----where不能做全连接,但可以做连接的约束
select * from 男公民
where 配偶编号 in (select 编号 from 女公民)
--------嵌套查询,查配偶编号在女公民表中编号列中出现过的
-------------------------------------------------------------------------------
select distinct 客户表.*
from (select * from 订单表 where 订单年份=2004) as d,客户表
where d.客户号=客户表.客户号
-----子查询放在from身后,也可以放在where身后
----------------------------------------------------------------------------
select (select 子查询语句) from 表名
-------这种格式要求子查询查出的必须是唯一的数据
----------------------------------------------------------------------------
select a.员工编号,a.员工姓名,b.员工姓名 as 领导姓名
from 员工表 as a,员工表 as b
where a.部门领导编号=b.员工编号

select a.员工编号,a.员工姓名,b.员工姓名 as 领导姓名
from 员工表 as a join 员工表 as b on a.部门领导编号=b.员工编号

select a.员工编号,a.员工姓名,
(select 员工姓名 from 员工表 as b where a.部门领导编号=b.员工编号) as 领导姓名
from 员工表 as a
---------三种查询员工领导的方法
------如果里面总经理领导编号是这空的,这种查询方法不显示空值。如要显示,则用左连接
-----------------------------------------------------------------------------
sp_tables -----------查当前数据库中的所有表
------------------------------------------------------------------------------
select * from 男公民
union ------------联合。自动升序排序,并去掉重复语句
select * from 女公民
-----查询结果是男公民和女公民表的总集。如果不去掉重复的,则用 union all
-----如果要降序排,则要在最后一个select语句后面加上order by 列名 desc
-----用union查询时,结果集内列数必须相同,并且数据类型必须相互兼容
-----多表联合查询加order by时,后面必须跟第一个结果集的列名
------------------------------------------------------------------------------
select top 2 成绩 from 表
order by 成绩 desc ---------查前两种最好成绩
-------------------------------------------------------------------------------
select top 2 with ties 成绩 from 表
order by 成绩 desc ---------查前两种最好成绩所有人的信息
-------------------------------------------------------------------------------
select top 1 a.成绩
from (select distinct top 3 成绩 from 表 order by 成绩 desc) as a
order by 成绩 ---------嵌套查询,查考成绩第三名的值
-------------------------------------------------------------------------------
select max (SQL成绩),min (MCSE成绩) from 表
-----查SQL最高分和MCSE最低分
-----常用的函数:max(最大),min(最小),sum(总和),avg(平均值)
-----count(*)统计表内数据的行数。count(列名)统计表内列里非空值的行数
-------------------------------------------------------------------------------
select count(*) from 表名 --------查表内有多少行数据
-------------------------------------------------------------------------------
select count(列名) from 表名 ------------查表内列中有多少行非空数据
-------------------------------------------------------------------------------
select min(成绩),max(成绩),sum(成绩),avg(成绩),count(*),count(成绩) from 表名
--------返回显示数据只有一行。中间不能加列名,如想加,可以在后面加列。
-------------------------------------------------------------------------------
group by ---------分组统计,后面跟的是列名
---------上面select检索多少原始列,后面group by就要跟多少原始列
例: select 性别,avg(年龄) from 表名
group by 性别 -------统计性别的平均年龄
-------------------------------------------------------------------------------
select 年龄,avg(年龄) from 表名
where 年龄<23
group by 年龄 -------查年龄小于23岁的各年龄段平均年龄
-------或也可用如下方法:
select 年龄,avg(年龄) from 表名
group by 年龄
having<23 -------having是统计之后的条件,where是统计之前的条件
--------having是做为group by的子句出现的,不能单独使用
------------------------------------------------------------------------------
select 年龄,avg(年龄) from 表名
where 年龄<23
group by all 年龄 -------显示所有年龄,但只统计年龄小于23的,大于23的显示空值
------------------------------------------------------------------------------
select 品牌,颜色,sum(价格),avg(价格) from 汽车表
group by 品牌,颜色
with cube -------多维统计,按不同品牌不同颜色统计,也是group by的子句
--------其结果出现把各品牌统计一下,最后再统计所有品牌、所有颜色的总统计
------------------------------------------------------------------------------
select 品牌,颜色,sum(价格),avg(价格) from 汽车表
group by 品牌,颜色
with rollup ------只按第一列统计,也是group by的子句
---------即统计品牌各颜色和所有品牌所有颜色的总统计
------------------------------------------------------------------------------
select 品牌,颜色,价格 from 汽车表
compute sum(价格),avg(价格) ----------出现两个结果集
------------查原始列,另外统计所有的总和与平均值
-------------------------------------------------------------------------------
select 品牌,sum(价格),avg(价格) from 汽车表
group by 品牌 ------只对汽车品牌进行统计。进行分组的列不一定用来统计
------------------------------------------------------------------------------
select 品牌,颜色,价格 from 汽车表
order by 品牌
compute sum(价格),avg(价格) by 品牌
--------按品牌分组统计。分别显示品牌各款,然后再显示函数计算值
------------------------------------------------------------------------------
exists --------存在。相当于一个判断开关。说对了执行,说错了放弃
用法: select * form 表名
where exists (select * from 表名 where 性别='男')
------如果存在性别为男的,执行查询。如果不存在,则不执行命令。
-----------------------------------------------------------------------------
数据完整性:1.实体完整性----用unique(唯一)或主键控制,数据不能重复
2.值域完整性----用check控制。控制的是列中不能有非法数据
3.引用完整性----一列的取值完全依赖于前一列时,用这个。
4.用户自定义完整性
------------------------------------------------------------------------------
create table 表名
(列1 int primary key, --------设置列级主键,紧跟在设置列的后面。
列2 int)
-------------------------------------------------------------------------------
create table 表名
(列1 int,
列2 int,
primary key (列1)) --------设置表级主键,放在建表语句的最后面。
-------------------------------------------------------------------------------
create table 表名
(列1 int constraint pk_表 primary key,
列2 int)
--------把列1设为主键,并且起名叫:pk_表。constraint是命名的命令

⑷ SQL数据库语句大全

SQL数据库语句大全:
1、选择:select
*
from
table1
where
范围
2、插入:insert
into
table1(field1,field2)
values(value1,value2)
3、删除:delete
from
table1
where
范围
4、更新:update
table1
set
field1=value1
where
范围
5、排序:select
*
from
table1
order
by
field1,field2
[desc]
6、总数:select
count
as
totalcount
from
table1
7、求和:select
sum(field1)
as
sumvalue
from
table1
几个高级查询运算词:
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),不消除重复行。

⑸ 怎样用SQL语句查询一个数据库中的所有表

1、打开Microsoft SQL Server 2012,选中需要查询所有表的数据库。

⑹ sql 语句大全

1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_admpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
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),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
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/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
12、分组:Group by:
一张表,一旦分组 完成后,查询后只能得到组相关的信息。
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
在selecte统计函数中的字段,不能和普通的字段放在一起;
13、对数据库进行操作:
分离数据库: sp_detach_db;附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
14.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'

⑺ mysql创建库的sql语句

使用 create 命令创建数据库,语法如下:
CREATE DATABASE 数据库名;
如果数据库名已经存在,则会提示不能创建,这里可以加上“if not exists"从句就可以避免类似错误,如下所示:
CREATE DATABASE IF NOT EXISTS 数据库名;

⑻ 数据库SQL语句

select
into
from语句
要求目标表table_4不存在,因为在插入时会自动创建表table_4,并将table_3中指定字段数据复制到table_4中。
可以考虑使用如下语句:
insert
into
dbo.table_4
(sname,
semail)
(select
sname,
semail
from
table_3);

⑼ 数据库中常用的sql语句有哪些

1.检索数据
SELECT prod_nameFROM Procts;
#检索单列

SELECT prod_id, prod_name, prod_priceFROMProcts;
#检索多列

SELECT * FROM Procts;
#检索所有列

SELECT DISTINCTvend_id FROMProcts;
#检索不同的值

SELECTprod_name FROM Procts LIMIT 5;
#返回不超过5行数据

SELECTprod_name FROM Procts LIMIT 5 OFFSET 5;
#返回从第5行起的5行数据。LIMIT指定返回的行数,LIMIT带的OFFSET指定从哪儿开始。
2.排序检索数据
SELECTprod_name
FROMProcts
ORDER BYprod_name;
#排序数据

SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY prod_price, prod_name;
#按多个列排序

SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY 2, 3;
#按列位置排序,第三行表示先按prod_price, 再按prod_name进行排序

SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY prod_priceDESC, prod_name;
#prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序

3.过滤数据
SELECT prod_name, prod_price
FROMProcts
WHERE prod_price< 10;
#检查单个值

SELECT prod_name, prod_price
FROMProcts
WHERE vend_id <> ‘DLL01’;
#不匹配检查

SELECT prod_name, prod_price
FROMProcts
WHERE prod_priceBETWEEN 5 AND 10;
#范围值检查

SELECT cust_name
FROMCUSTOMERS
WHERE cust_emailIS NULL;
#空值检查

4.高级数据过滤
SELECTprod_id, prod_price, prod_name
FROMProcts
WHERE vend_id = ‘DLL01’ANDprod_price <= 4;
#AND操作符

SELECTprod_name, prod_price
FROMProcts
WHEREvend_id=’DLL01’ OR vend_id=’BRS01’;
#OR操作符

SELECTprod_name, prod_price
FROMProcts
WHERE (vend_id = ’DLL01’ORvend_id=’BRS01’)
ANDprod_price >= 10;
#求值顺序 AND的优先级高于OR

SELECTprod_name, prod_price
FROMProcts
WHERE vend_idIN (‘DLL01’,’BRS01’)
ORDER BY prod_name;
#IN操作符

SELECT prod_name
FROMProcts
WHERE NOTvend_id = ‘DLL01’
ORDER BY prod_name;
#NOT 操作符

SELECT prod_name
FROMProcts
WHEREvend_id <> ‘DLL01’
ORDER BY prod_name;
#NOT 操作符

⑽ 如何用SQL语句创建数据库

在SQL语句中,CREATE DATABASE 语句用于创建数据库。

具体用法如下:

-from 树懒学堂

数据库表可以通过 CREATE TABLE 语句来添加。