SQLServer


/*********创建数据库**********/
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  新表名

 

三、连接查询

你可能感兴趣的:(SQLServer)