SQL Server 语句整理
1. 创建数据库
create database dbName
2. 删除数据库
drop database dbName
3. 备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice '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的语法很精妙,查资料!
--分组
一张表,一旦分组 完成后,查询后只能得到组相关的信息。
组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
在select统计函数中的字段,不能和普通的字段放在一起;
group by 子句中的表达式可以包含from子句中表、派生表或视图的列。这些列不必显示在select子句<select>列表中
<select>列表中任何非聚合表达式中的每个表列或视图列都必须包括在group by列表中:
--允许:
select colA,colB from tb1 group by colA,colB;
select colA + colB from tb1 group by colA,colB;
select colA + colB from tb1 group by colA + colB;
select colA + colB + constant from tb1 group by colA,colB; --constant表示常量
--不允许
select colA,colB from tb1 group by colA + colB;
select colA + constant + colB from tb1 group by colA + colB;
- 执行任何分组操作之前,不满足 where子句中条件的行将被删除。
- having 子句与 group by 子句一起用来筛选结果集内的组。
- 不能使用带有别名的 GROUP BY 来替换 AS 子句中的列名,除非别名将替换 FROM 子句内派生表中的列名。
- 将不删除 GROUPING SETS 列表中的重复分组集。在以下情况下可能会生成重复分组集:多次指定一个列表达式,或者在 GROUPING SETS 列表中列出同样由 CUBE 或 ROLLUP 生成的列表达式。
- ROLLUP、CUBE 和 GROUPING sets 支持区分聚合,例如,avg(distinct column_name)、count(distinct column_name) 和 SUM (DISTINCT column_name)。
- 不能直接针对具有 ntext、text 或 image 的列使用 GROUP BY 或 HAVING。这些列可以在返回其他数据类型的函数(如 SUBSTRING() 和 CAST())中用作参数。
-- 排序:
select * from tb1 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
-- in
select * from tb_user where a [not] in ('v1','v2','v3','v4')
-- between ; between限制查询数据范围时包括了边界值,not between不包括
select * from tb1 where time between t1 and t2
select a,b,c, from tb1 where a not between v and v
-- top
select top 10 * from tbName where id < 5
--注意: n到结尾数据
select top n * from tbName order by id desc
11. 查询运算符
-- 1. UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
-- 2. EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
-- 3. INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
-- 注:使用运算词的几个查询结果行必须是一致的。
12. 外连接
-- 1. 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
-- 2. right (outer) join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
-- 3. full/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
13. 数据库操作
-- 1. 分离数据库:
exec sp_detach_db dbName;
-- 2. 附加数据库:
exec sp_attach_db --附加需要完整的路径名
@dbName = N'Test', --要附加数据库的名字
@filename1 = N'E:\xms-work\vs-test\Test.mdf',
@filename2 = N'E:\xms-work\vs-test\Test_log.ldf';
-- 3. 修改数据库名称 exec sp_renamedb 'oldName','newName'
14. 表操作
-- 1. 复制表结构
-- 1.1
select * into tbNew from tbOld where 1<>1
-- 注:"where 1=1"表示全选,"where 1=2"表示全不选
-- 1.2
select top 0 * into tbNew from tbOld
-- 2. 拷贝表数据(同数据库)
insert into tbNew(a,b,c) select d,e,f from tbOld
15. 在线视图查询
select* from(select id,username from tb_user)T where t.id<10
16. 两张关联表,删除主表中已经在副表中没有的信息
delete from tb1 where not exists (
select * from tb2 where tb1.field1=tb2.field1 )
17. 随机取出10条数据
select top 10 * from tablename order by newid()
-- 随机选择记录
select newid()
18. 删除重复记录
delete from tbName where id not in (
select max(id) from tbName group by col1,col2,...)
19. 列出数据库中所有的表名
select name from sysobjects where type='U' // U代表用户
20. 列出数据库中所有的列名
1. select name from syscolumns where id=object_id('tbName')
2. select name from syscolumns where id in (
select id from sysobjects where type = 'u' and name = '表名')
21. 初始化表
truncate table tbName
22. 查看与某一个表相关的视图、存储过程、函数
select a.* from sysobjects a, syscomments b
where a.id = b.id and b.text like '%tbName%'
-- 注: type='P',表示存储过程;type='FN',表示函数
23. 选择10到15的记录
1. select top 5 * from (select top 15 * from taName order by id asc) A order by id desc
2. select top 5 * from tbName where id in(select top id from tbName) order by id desc
SQL Server 语句整理的更多相关文章
- 基本的SQL Server 语句,包含 增、删、改、查 程序员必会
这是我以前学习时, 整理的一套基础SQL Server增.删.改.查 等语句 ,初学者可以从上往下学完. 也方便自己忘记时翻看! create database SQLschool go --批 go ...
- 提升SQL Server速度整理索引碎片
转载:http://wenku.baidu.com/view/f64c8a707fd5360cba1adbea.html SQL Server2005索引碎片分析和解决方法 毫无疑问,给表添加索引 ...
- sql server 碎片整理——DBCC SHOWCONTIG
转自: 1.http://blog.sina.com.cn/s/blog_6d2675450101ks6i.html 2.http://www.cnblogs.com/CareySon/archive ...
- SQL SERVER 语句大全
·SQL的简单查询实例教程关键词:SQL语句大全 中文网 整理编辑,经典SQL语句大全(SQL语句大总结),欢迎网友投稿 下列语句部分是Mssql语句,不可以在access中使用.SQL分类:DDL— ...
- Oracle、Mysql、Sql Server语句的区别
1.空值的处理——判断是否为空,为空时取一个值,不为空时取另一个值 1).Sql Server 中 ISNULL(check_expression,replacement_value) 解释:如果ch ...
- SQL Server通过整理索引碎片和重建索引提高速度
本文章转载:http://database.51cto.com/art/201108/282408.htm SQL Server数据库中,当索引碎片太多时,就会拖慢数据库查询的速度.这时我们可以通过整 ...
- sql server语句
一.基础1.说明:创建数据库CREATE DATABASE 数据库名2.说明:删除数据库drop database 数据库名3.说明:备份sql server--- 创建 备份数据的 deviceUS ...
- Sql Server语句大全
T-SQL语句大全 --跳转到SQL myDemo USE [SQL myDemo] go --声明变量id declare @id int --为变量赋值:直接赋值 --将cid为3的cname值赋 ...
- 常用SQL Server 语句
常用SQL语句大全 1.//创建数据库 CREATE DATABASE DBName 2.//删除数据库 DROP DATABASE DBName 3.//备份SQL SERVER --- 创建 ...
随机推荐
- Python 调用自定义包
创建包 # mkdir -p /python/utils # touch /python/utils/__init__.py # vi /python/utils/Log.pyimport timed ...
- html5中插入视频和音频
<audio src="1.mp3" controls></audio> <video src="1.mp4" controls& ...
- #Javascript:this用法整理
常用Javascript的人都知道,[this這個關鍵字在一個函式內究竟指向誰]的這個問題很令人頭大,本人在這裡整理了一下Javascript中this的指向的五種不同情況,其中前三種屬於基本的情況, ...
- Nodejs开发框架Express3.0开发手记–从零开始
转载请注明出处: http://blog.fens.me/nodejs-express3/ 程序代码已经上传到github有需要的同学,自行下载. https://github.com/bsspiri ...
- spring来了-01-概述
思考 对象创建能否写死? 对象创建细节 对象数量 action 多个 [需要维护成员变量] service 一个 [不需要维护成员变量] dao ...
- JavaScript:闭包
根据MDN上的解释『闭包是指函数有自由独立的变量.换句话说,定义在闭包中的函数可以“记忆”它创建时候的环境.』 闭包有两个主要的作用: 1.访问内部函数的局域变量: 2.将创建的变量永久保存在内存中, ...
- 纯css3代码写下拉菜单效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ubuntu14 eclipse luna 无法显示菜单 , 解决方案
使用命令行 , 输入 Exec=env UBUNTU_MENUPROXY=0 <eclipse的安装路径>/eclipse 就可以了 或者建立一个Eclipse的快捷方式,eclipse. ...
- hdu 3038 How Many Answers Are Wrong ( 带 权 并 查 集 )
How Many Answers Are Wrong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- <<薪资至少10K的一道题,你能拿下吗>>练习
偶尔要写写算法,是我平时用来保持感觉的常用的方法.今天看到园子里一面试题,看了一下感觉也能实现,不过过程确实艰的,自认为自己对算法的感觉还不错.不过这题确实我也用了差不多一下午的时间,基本上把工作时间 ...