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)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 114 B: EXCEPT 运算符 115 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 116 C: INTERSECT 运算符 117 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 118 注:使用运算词的几个查询结果行必须是一致的 119 D、left (outer) join: 120 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 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) join: 125 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。 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语句代码来自网络