从一个表中选取数据插入到另一个表中:
select column_name(s) into new_table_name from old_table_name --new_table_name表不必事先存在
identity与select into合用,插入行号:
set identity_insert students on
insert students(id, name, age, city) values(10, 'jim', 18, 'newyank')
set identity_insert students off
--注意:一张表中只能有一列为identity,如果指定了自增列,又需要插入指定id的值,需要停止indentiy,执行后再开启
select identity(int,1,1) as rownumber, name, age, sex, city
into students_backup
from students
--注意:如果查询的列中有自增列,需要将其删除,或者屏蔽,因为一张表中只有一个identity字段。
在有identity列的插入时,需要返回当前行的identit的列值:scope_identity()函数
insert into dbo.tb_test2( NAME ) values ( '测试' )
select scope_identity()
返回架构范围内对象的数据库对象标识号:object_id()
--查询表是否存在
select object_id(N'students', N'u')
--与以下语句等价
select id from sysobjects where name=N'Students' and type=N'U'
在已存在表中增加一列:
alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
添加主键:
alter table tabname add primary key(col)
删除主键:
alter table tabname drop primary key(col)
创建索引:
create [unique] index idxname on tabname(col….)
删除索引:
drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
创建视图:
create view viewname as select statement
删除视图:
drop view viewname
union 运算符
union 运算符通过组合其他两个结果表(例如 table1 和 table2)并消去表中任何重复行而派生出一个结果表。当 all 随 union一起使用时(即 union all),不消除重复行。两种情况下,派生表的每一行不是来自 table1 就是来自table2。
except 运算符
except 运算符通过包括所有在 table1 中但不在 table2 中的行并消除所有重复行而派生出一个结果表。当 all 随 except 一起使用时 (except all),不消除重复行。
intersect 运算符
intersect 运算符通过只包括 table1 和 table2 中都有的行并消除所有重复行而派生出一个结果表。当 all 随 intersect 一起使用时 (intersect all),不消除重复行。
修改数据库的名称:
sp_renamedb 'old_name', 'new_name'
随机取出10条数据:
select top 10 * from tablename order by newid()
列出数据库里所有的表名:
select name from sysobjects where type='U' --U代表用户
列出表里的所有的列名:
select name from syscolumns where id=object_id('TableName')
选择从10到15的记录:
select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc
数据库分页查询:
declare @pageSize int --每页数量
declare @pageIndex int --页码
set @pageSize=10
set @pageIndex=5
--适应于SQL Server 2012以下的版本
select top @pageSize id from tb_test2
where id not in (select top (@pageIndex - 1) * @pageSize id from tb_test2)
--row_number() over( order by id desc ),该关键字只有在SQL Server 2005版本以上才有
select * from (select row_number() over( order by id desc ) as rowNumber, * from tb_test2) temp
where rowNumber > (@pageIndex - 1) * @pageSize and rowNumber <= @pageIndex * @pageSize
--SQL Server 2012以上版本才支持
select * from tb_test2
order by id
offset ((@pageIndex - 1) * @pageSize) rows
fetch next @pageSize rows only
按姓氏笔画排序:
select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as --从少到多
转换函数:convert()
说明:一般在时间类型(datetime, smalldatetime)与字符串类型(nchar, nvarchar, char, varchar)相互转换的时候才用到
tyle数字在转换时间时的含义如下:
------------------------------------------------------------------------------------------------------------
Style(2位表示年份) | Style(4位表示年份) | 输入输出格式
------------------------------------------------------------------------------------------------------------
0 | 100 | mon dd yyyy hh:miAM(或PM)
------------------------------------------------------------------------------------------------------------
1 | 101 美国 | mm/dd/yy
------------------------------------------------------------------------------------------------------------
2 | 102 ANSI | yy-mm-dd
------------------------------------------------------------------------------------------------------------
3 | 103 英法 | dd/mm/yy
------------------------------------------------------------------------------------------------------------
4 | 104 德国 | dd.mm.yy
------------------------------------------------------------------------------------------------------------
5 | 105 意大利 | dd-mm-yy
------------------------------------------------------------------------------------------------------------
6 | 106 | dd mon yy
------------------------------------------------------------------------------------------------------------
7 | 107 | mon dd,yy
------------------------------------------------------------------------------------------------------------
8 | 108 | hh:mm:ss
------------------------------------------------------------------------------------------------------------
9 | 109 | mon dd yyyy hh:mi:ss:mmmmAM(或PM)
------------------------------------------------------------------------------------------------------------
10 | 110 美国 | mm-dd-yy
------------------------------------------------------------------------------------------------------------
11 | 111 日本 | yy/mm/dd
------------------------------------------------------------------------------------------------------------
12 | 112 ISO | yymmdd
------------------------------------------------------------------------------------------------------------
13 | 113 欧洲默认值 | dd mon yyyy hh:mi:ss:mmm(24小时制)
------------------------------------------------------------------------------------------------------------
14 | 114 | hh:mi:ss:mmm(24小时制)
------------------------------------------------------------------------------------------------------------
20 | 120 ODBC 规范 | yyyy-mm-dd hh:mi:ss(24小时制)
------------------------------------------------------------------------------------------------------------
21 | 121 | yyyy-mm-dd hh:mi:ss:mmm(24小时制)
------------------------------------------------------------------------------------------------------------
1) 时间转换为指定形式
select convert(nvarchar(20), getdate(), 120)
select convert(nvarchar(100), getdate(), 109)
select convert(nvarchar(20), getdate(), 102)
select convert(nvarchar(100), getdate(), 113)
结果:
2) 转为XML格式
IF OBJECT_ID('Orders','U') IS NOT NULL
DROP TABLE Orders
CREATE TABLE Orders
(
ID bigint primary key not null,
ProductID int,
ProductName nvarchar(50),
Price float,
Scheme text,
Created datetime default(getdate())
)
INSERT INTO Orders(ID,ProductID,ProductName,Price,Scheme)
VALUES(201405130001,101,'Card',10.899,'<xml><ProductID>101</ProductID><ProductName>Card</ProductName></xml>')
结果:
备份数据库:
backup database ttt to disk = 'F:\BaiduNetdiskDownload\t.bak'
还原数据库:
use master
restore database test_aa from disk = 'F:\BaiduNetdiskDownload\t.bak'
分离数据库:
use master
exec sp_detach_db @dbname=N'数据库名'
附加数据库:
exec sp_attach_db @dbname=N'数据库名',@filename1=N'.mdf的文件路径',@filename2=N'.ldf的文件路径'