MSSQL的基础应用

  1 基础
  2 创建数据库
  3 /****** 创建数据库******/
  4 CREATE DATABASE [PlateFormsExpress] ON  PRIMARY 
  5 (
  6   NAME = N'PlateFormsExpress', /*数据名称*/
  7   FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\PlateFormsExpress.mdf' ,  /*文件路经*/
  8   SIZE = 2304KB , /*大小*/
  9   MAXSIZE = UNLIMITED,  /*最大 UNLIMITED 是无限*/
 10   FILEGROWTH = 1024KB )
 11  LOG ON  /*日志*/
 12 ( NAME = N'PlateFormsExpress_log', 
 13  FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\PlateFormsExpress_log.LDF' ,
 14  SIZE = 576KB , 
 15  MAXSIZE = 2048GB ,
 16  FILEGROWTH = 10%)
 17 GO
 18 删除数据库
 19 /****** 删除数据库******/
 20 IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'PlateFormsExpress')
 21 DROP DATABASE [PlateFormsExpress]
 22 GO
 23 
 24 分离数据库
 25 /*********分离数据库**********/
 26 sp_detach_db
 27 /**附加数据库**/
 28 sp_attach_db --加名称,然后完整的路经
 29 修改数据库
 30 
 31 /*********修改数据库**********/
 32 sp_renamedb '旧名称','新名称'
 33 
 34 备份
 35 /******* 备份数据库*******/
 36 
 37 USE master
 38 GO
 39 EXEC sp_addumpdevice 'DISK','TESTBACK','C:\MSSQLBACKUP\MYDATABASE.DAT'
 40 --开始备份
 41 Backup database PlateFormsExpress to TESTBACK
 42  
 43 创建表
 44 /*********创建表**********/
 45 CREATE TABLE 表名(列名 数据类型 [NOT NULL] [Primary key],列名 数据类型  [NOT NULL] Default '')
 46 
 47 --根据已有的表创建新表
 48 CREATE TABLE 新表名 like 旧表名
 49 
 50 CREATE TABLE 新表名 as select 列名 from 旧表 definition only
 51 删除表
 52 /*********删除表**********/
 53 drop table tableName
 54 
 55 增加一列
 56 /*********增加一个列**********/
 57  ALTER TABLE [表名] add column [] [字段类型]
 58 
 59 --注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,
 60 --唯一能改变的是增加varchar类型的长度
 61 添加主键
 62 /*********添加主键**********/
 63 
 64  Alter table [表名] add primary key([列名])
 65  --删除主键
 66  Alter table [表名] drop primary key([列名])
 67 创建索引
 68 /*********创建索引**********/
 69 
 70 create  index 索引名 
 71 on [表名([列名])
 72 --删除索引:
 73 drop index 索引名称
 74 
 75 eg:
 76 CREATE INDEX SelectIndex
 77 on Userinfo(UserCode)
 78 创建视图
 79 /*********创建视图**********/
 80 
 81 create view [视图名] as 
 82 select [表名]
 83 --删除视图名
 84 drop view [视图名]
 85 聚合函数应用
 86 --
 87 select COUNT as 总数 from 表名
 88 --求和:
 89 select SUM([字段]) as 总和 from 表名
 90 --平均
 91 select AVG([字段]) as 平均 from 表名
 92 --最大
 93 select MAX([字段]) as 最大值 from 表名
 94 --最小
 95 select min([字段])as 最小 from 表名
 96 
 97 简单语句:
 98 --选择:
 99 select * from Customer where [条件][范围]
100 --插入
101 insert into Customer(Id,Name,Address,Tel) values('','','','')
102 insert into Customer (Id,Name,Address,Tel) select userid,username,useraddress,usertel from userinfo
103 --删除
104 delete from table1 where 条件
105 --更新
106 update [表名] set 列名=value where 条件
107 --模糊查找
108 select * from [表名] where 列名 like '%[值]%'
109 --排序
110 select * from [表名] order by 字段名 desc
111 高级查询
112  A: UNION 运算符
113   UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALLUNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
114  B: EXCEPT 运算符
115   EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALLEXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
116  C: INTERSECT 运算符
117   INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALLINTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
118 注:使用运算词的几个查询结果行必须是一致的
119  D、left (outer) join120   左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
121   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
122  E:right (outer) join:
123   右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
124  F:full/cross (outer) join125   全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
126 分组 Group by
127 注:Group by 一般与聚合函数使用
128 select COUNT(UserCode) from userinfo group by username
129 go
130  
 1 --1说明:复制表(只复制结构,源表名:UserInfo 新表名:f_testa) (Access可用)
 2   --A
 3    select * into F_testa from  UserInfo where 1<>1 --(仅Sql Server使用)
 4    select * from f_testa
 5    go
 6    --B
 7    select top 0 * into F_testb from UserInfo
 8 --2拷贝表 (拷贝数据,源表名:UserInfo 目标表名:f_testa) (Access可用)
 9    insert into f_testa (usercode,username,userage,PassWordInfo) select
10    usercode,username,userage,'Hello' from UserInfo
11 --3 说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
12   insert into f_testa(usercode,username,userage,PassWordInfo)
13   select id,name,AgentId,Password from store..Users where store..Users.Id='222'
14   
15 --4子查询
16    select usercode,username,userage from UserInfo where UserCode in 
17    (select UserCode from f_testa)
18 --多表查询
19 select a.ordercode,a.OrderName,a.orderdata,b.CommonName,b.CommonCount,b.CommonMoney 
20 from F_OrderCommon as a,F_OrderDetail as b where a.OrderCode=b.Ordercode
21 
22 --5 外连接查询
23 select a.ordercode,a.OrderName,a.orderdata,b.CommonName,b.CommonCount,b.CommonMoney 
24 from F_OrderCommon as a inner join F_OrderDetail as b  on a.Ordercode=b.Ordercode
25 
26 select a.ordercode,a.OrderName,a.orderdata,b.CommonName,b.CommonCount,b.CommonMoney 
27 from F_OrderCommon as a left  join F_OrderDetail as b  on a.Ordercode=b.Ordercode
28 
29 --6 between /not between
30  select * from F_OrderCommon where builddate time1 and time2  --在time1 time2之间
31  select * from  F_OrderCommon where commoncode not between 111 and 333
32 --7 in 使用方法 
33 select * from  UserInfo where UserCode in ('22','11','00')
34 select * from UserInfo where UserCode not in ('22','11')
35 select top 10 * from UserInfo where UserCode not in(select top 30 UserCode from UserInfo)
36 --8两张关联表,删除主键已在副表中没有的信息
37 delete from F_OrderCommon where not exists(select * from F_OrderDetail where 
38 F_OrderCommon.ordercode=F_OrderDetail.Ordercode)
39 --9随机取10条数据
40 select top 10 * from UserInfo order by NEWID()
41 
42 --10随机选择记录
43 select NEWID()
44 
45 --11删除重复的记录
46 delete from UserInfo where UserCode not in (select MAX(UserCode) from UserInfo group by UserName)
47 
48 select distinct *  into usercodew from f_testa
49 delete from f_testa
50 insert into f_testa select * from usercodew
51 --注: 这种操作不能有大量数据操作。
52 --12列出数据库里面所有的表名
53  select name from sysobjects where type='u'  --U代表用户
54 --13列出表里面所有的列名
55 select name from syscolumns where id=OBJECT_ID('UserInfo')
56 select * from syscolumns

 

备注:部分SQL语句代码来自网络

posted @ 2012-12-11 14:17  在 水 一 方  阅读(233)  评论(0编辑  收藏  举报