/*********创建数据库**********/
CREATE DATABASE test //数据库名称
ON PRIMARY //在主文件组中建立主要数据文件
(
NAME = test, //逻辑文件名
FILENAME = 'D:\test.mdf', //物理文件路径和名字
SIZE = 10MB, //初始大小
MAXSIZE = UNLIMITED,//最大容量为无限大
FILEGROWTH = 10% //增长速度
)
LOG ON //建立日志文件
(
NAME = test_log,
FILENAME = 'D:\test_log.ldf',
SIZE = 1024KB,
MAXSIZE = 5120KB,
FILEGROWTH = 1024KB
)
/*************修改数据库**************/
//ADD FILE<数据文件> 增加数据文件到文件组
//ADD LOG FILE<日志文件> 增加日志文件
//ADD FILEGROUP 组文件名 增加文件组
//添加两个次要数据文件
ALTER DATABASE test
ADD FILE
(
NAME = test1,
FILENAME = 'D:\test1.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
),
(
NAME = test2,
FILENAME = 'D:\test2.ndf',
SIZE = 3MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB
)
/**********删除数据库***********/
DROP DATABASE test
/**********创建表************/
use test
GO
CREATE TABLE ReadTable
(
TypeID int NOT NULL PRIMARY KEY,
Bname varchar(20) NULL
)
/**********修改表************/
//ALTER COLUMN 列名 列定义 :修改列定义
//ADD 列名 数据类型 约束 :增加新的列
//DROP 列名 :删除已有的列
//ADD CONSTRAINT 约束名 约束 :添加约束
//DROP CONSTRAINT 约束名 :删除已有的约束
//增加列
use test
GO
ALTER TABLE ReadTable
ADD NickName varchar(20) NULL
Go
/************删除表**************/
use test
GO
DROP TABLE ReadTable
/************插入数据记录到表中***************/
use test
GO
INSERT INTO ReadTable VALUES(1, '张三')
GO
use test
GO
INSERT ReadTable(TypeID, Rname) VALUES(2, '李四')
GO
/*************修改表中数据****************/
use test
GO
UPDATE ReadTable
SET Bname = '二狗' WHERE Rname = '李四'
/*************删除表中数据****************/
use test
GO
DELETE ReadTable
WHERE TypeID = 1
GO
/*************创建索引******************/
1、索引两种形式:聚集索引和非聚集索引,前者是根据键值对行进行排序,所以每个表只能有一个聚集索引。后者不根据键值对行进行排序,索引数据结构与数据行是分开的,由于没有按顺序进行排序,所以查找速度比前者要低。
2、创建所以可以提高查询速度,但过多建立索引会占大量磁盘空间。
3、适合建立索引的情况:常被查的列,在ORDER BY字句中使用的列,外键或主键列,值唯一的列。
//UNIQUE: 指定创建的索引为唯一索引
//CLUSTERED | NONCLUSTERED: 指定创建的是聚集索引还是非聚集索引
//ASC | DESC: 确定某个具体的索引列是升序还是降序,默认是升序ASC
//DROP_EXISTING: 指定是否删除先前存在的并且与创建所以同名的索引
//表ReadTable创建一个不唯一、非聚集索引"tableindex2",索引键为"age",升序排列
use test
GO
create nonclustered index tableindex2 on ReadTable (age ASC)
//删除表ReadTable的索引"tableindex2"
use test
GO
drop index ReadTable.tableindex2
/***********************数据查询select*************************/
一、按功能对表查询:投影查询、连接查询、选择查询、分组统计查询、限定查询、排序查询和保存查询。
select 字句投影查询
into 字句保存查询
form 字句连接查询
where 字句选择查询
group by 字句分组查询
having 字句限定查询
order by 字句排序查询
二、字句投影查询
A、格式: select [all | distinct][top n] 表达式1,表达式2......,表达式n
//查出表ReadTable中男生的姓名、性别和年龄
use test
go
select name, sex, age from ReadTable where sex = '男'
B、top关键字限制返回行数,格式: top n[percent]
//查询表ReadTable中前5行数据
use test
go
select top 5 name, sex, age from ReadTable
C、是否消除重复数据行,格式:all | distinct 前者可能出现重复数据行,后者可消除重复数据行
//投影查询表ReadTable后,消除结果集中名字重复的数据行
use test
go
select distinct name from ReadTable
D、通配符 " * "投影所有列, 格式:*
//查询表ReadTable中所有数据
use test
go
select * from ReadTable
E、使用表达式计算列值,格式:表达式1,表达式2,....表达式n //+, -, *, /, %
//从表ReadTable中查询出所有年龄减2后的年龄
use test
go
select name, sex, age, age-2 from ReadTable
//select name, sex, age, STR(age-2, 6, 0) + '岁' from ReadTable STR返回字符数据+岁
F、自定义列标题, 格式: '指定列标题'=列名 或 列名 AS '指定列标题'
use test
go
select name AS 年龄, sex AS 性别, age AS 年龄,实际年龄 = STR(age-2, 6, 0) + '岁' from ReadTable
G、列函数(聚集函数) 格式: 函数名([all | distinct] 列名表达式|*)
count : 统计列中选取的项目个数或查询输出的行数
sum : 计算指定的数值型列名表达式的总和
avg: 计算指定的数值型列名表达式的平均值
max: 算出指定数值、字符、或日期型列名表达式的最大值
min: 算出指定数值、字符、或日期型列名表达式的最小值
//查询表ReadTable中不同名的有多少个人
use test
go
select count(distinct name) from ReadTable
2、from 字句连接查询
3、where字句选择查询
A、关系运算符:等于(=)、不等于(<>)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)
B、逻辑运算符:非(NOT)、与(AND)、或(OR)
C、模式匹配运算符: 格式: 列名 [NOT] LIKE 通配符
// 通配符 _ 代表一个任意字符, 通配符 % 代表任意多个字符, 运算符LIKE可以实现对表的模糊查询
//查询表ReadTable中姓李的人的信息
use test
go
select * from ReadTable where name LIKE '李%'
D、列表运算符: 格式: [NOT] in (列表|子查询)
//查询表ReadTable中姓名为 李二狗和李大毛的人的信息
use test
go
select * from ReadTable where name in('李二狗', '李大毛')
E、空值判断符:格式: 列名 is [NOT] NULL
4、group by 字句分组统计查询: 格式 :group by 列名表
5、having字句限定查询 格式:having 逻辑表达式
6、order by 字句排序查询 格式:order by 列名表达式表 ASC/DESC
7、into 字句保存查询 格式:into 新表名
三、连接查询