1.创建数据库:
Create database student
On primary
(name=student,
Filename=’student.mdf’,
Size=10mb,
Maxsize=unlimited,
Filegrowth=2mb)
Log on
(name=student_log,
Filename=’student_log.ldf’,
Size=4mb,
Maxsize=unlimited,
Filegrowth=10%)
复制
2.打开指定的数据库
Use database_name
Database_name:student
复制
3.查看数据库信息
Execute sp_helpdb student
复制
4.重命名数据库名
Alter database student
Modify name=新的数据库名
复制
5.删除数据库
Drop database student
复制
6.创建表,为表添加约束
Create table student
(name varchar(20) not null primary key,--这里添加了一个主键
Age int not null ,
Star varchar(20) not null ,
Idcard varchar(20) not null
--这里也可以一次添加多个主键
例如:primary key(列1,列2)
)
添加约束(直接添加在定义完的列后面):
标识列:IDENTITY(初始值,步长)
主键: Constraint frimary key(列名)
唯一键:constraint unique key(列名)
外键:constraint foreigh key(外键列) references 引用表名(应用列)
检查约束:constraint check(检查表达式)
默认值: constraint default 默认值
复制
7.查看表结构信息
Execute sp_help 表名
复制
8.向表中添加列
alter table 表名
Add 列名 数据类型(长度) null/not null
复制
9.修改列已有属性
Alter table 表名
Alter column 列名数据类型(长度) null/not null
复制
10.删除列
Alter table 表名
Drop column 列名
复制
11.删除数据表
Drop table 表名1,表名2...
复制
12.向表中添加数据
Insert into 表名(列名1,列名2,列名2...)
Values(值1,值2,值3...)
复制
13.修改表中的数据
Update 表名
Set 列名1=‘字段名称’,列名2=‘字段名称’......
(如果有约束:from 相关表名1,相关表名2......)
Where 条件表达式
例:update student
Set 星座=’白羊座’
Where 姓名=‘sindsun’
复制
14.删除表中一行或多行数据
Delete from 表名 (或者:truncate table 表名)--这里删除表中所有数据
Where 条件表达式
复制
15.主键约束
语法格式1:
Create table 数据表名
列名 数据类型 nul/not nulll constraint 约束名 primary key
语法格式2:
Create table 数据表名
Constraint 约束名 primary key(列名1,列名2,列名3......)
向已有表中添加主键约束:
Alter table 表名
Add constraint 约束名 primary key(列名1,列名2......)
删除主键约束:
Alter table 表名
Drop constraint 约束名
复制
16.唯一键约束
语法格式1:
Create table 数据表名
列名 数据类型 null/not null constraint 约束名 unique
语法格式2:
Create table 数据表名
Constraint 约束名 unique(列名1,列名2......)
向已有表中添加唯一约束:
Alter table
Add constraint 约束名 unique(列名1,列名2......)
删除唯一约束:
Alter table 表名
Drop constraint 约束名
复制
17.检查约束
语法格式:
Create table 数据表名
列名 数据类型 null/not null constraint 约束名 check(逻辑表达式)
向已有表中添加检查约束:
Alter table 表名
(with nocheck) --这里存在时,不检查现有约束
Add constraint 约束名 check(逻辑表达式)
注意:多表达式之间用or 连接
例:check(电话like o-9 0-9 0-9)--电话号码由每一位都由0-9组成
删除检查约束:
Alter table 表名
Drop constraint 约束名
通过check 和nocheck 设置为无效或重新有效:
Alter table 表名
Nocheck constraint 约束名 / check constraint 约束名
复制
18.默认值约束
语法格式1:
Create table 数据表名
列名 数据类型 null/not null constraint 约束名 default 默认值
语法格式2:
Create table 数据表名
Constraint 约束名 default 默认值 for 列
向已有表中添加默认约束:
Alter table 表名
Add constraint 约束名 默认值 for 列
删除默认约束:
Alter table 表名
Drop constraint 约束名
复制
19.外键约束
语法格式1:
Create table 数据表名
列名 数据类型 null/not null constraint 约束名 foreign key
References 参照主见表(参照列)
On delete cascade –表示级联删除
On update cascade –表示级联更行
语法格式2:
Create table 数据表名
Constraint 约束名 foreign key(列名)
References 参照主键表(参照列)
On delete cascade –表示级联删除
On update cascade –表示级联更行
向已有表中添加外键约束:
Alter table 表名
Add constraint 约束名 foreign key(列名)
References 参照主键表(参照列)
On delete cascade –表示级联删除
On update cascade –表示级联更行
删除外键约束:
Alter table 表名
Drop constraint 约束名
复制
20.默认值
创建默认值:
Create default 默认值名称 as 常量表达式
例如:create default df_学时数 as 60
绑定默认值:
Execute sp_bindefault ‘默认值名称’,’表名.字段名/用户自定义的数据类型
解绑默认值:
Execute sp_unbindefault ’表名.字段名/用户自定义的数据类型
删除默认值:
Drop default 默认值名称
复制
21.规则
创建规则:
Create rule 规则名称 as 条件表达式
例如:create rule 总学分 as @score>0 and @score<50
绑定规则:
Execute sp_binrule ‘规则名称’,’表名.字段名/用户自定义的数据类型
解绑规则:
Execute sp_unbinrule ’表名.字段名/用户自定义的数据类型
删除规则:
Drop rule 规则名称
复制
22.标识列
创建标识列:
Create table 数据表名
列名 数据类型 identity(种子,增量)
复制
23.自定义数据类型
创建自定义数据类型
Execute sp_addtype 自定义数据类型,系统数据类型名称 null/not null
例如:execute sp_addtype type_电话 ,’varchar(8)’,”null”
删除用户自定义数据类型:
Execute sp_droptype 自定义数据类型
复制
24.基本的select 语句
方法1:
Select 字段列表 from 表名列表 where 查询条件
设置字段别名:
列表达式 as 别名
或
列名=列表达式
查询经过计算的值:
计算字段名=表达式
例如:select 学号,姓名,年龄=datediff(YY,出生时间,getdate())
过滤重复字段:
例如:select distinct 专业 from 表名
返回前面若干条记录:
Select top n/top n percent 列名1/* from 表名
例如:select top 5 * from student –查询表中前五条记录
Select top 10 percent * from student –查询表中前10%的记录
复制
25.条件查询语句
Select 字段列表 Into 新表名 from 表名列表
where 查询条件
注释:新表是不存在的,新表的列和行是基于查询结果的,
---使用该语句必须在目的数据据中必须具 有create table 权限,如果表名称的是以#开头,则生成的是临时表。
复制
26.应用WHERE子句定义搜索条件
Select 列名1,列名2... From 表名 where 条件表达式
查询条件中常用 的运算符
运算符 用途
=,<>,>,>=,<,<=,!= 比较大小
And,or,not 设置多重条件
Between...and... 确定范围
In,notin,any|some,all 确定集合
like 字符匹配,用于模糊查询
Is[not]null 测试空值
* 比较表达式作为查询条件:
例:select 姓名,性别,年龄=datediff(YEAR,出生时间,getdate()) from 数据表
Where datediff(YEAR,生出时间,getdate())<20
* 逻辑表达式作为查询条件:
例:select 姓名,性别,年龄=datediff(YEAR,出生时间,getdate()) from 数据表
Where datediff(YEAR,生出时间,getdate())<20 and 性别=’女’
* 查找属性值在(或不在)指定范围内的元组:
例 :select 姓名,性别,年龄=datediff(YEAR,出生时间,getdate()) from 数据表
Where datediff(YEAR,生出时间,getdate()) between 19 and 20 and 性别=’女’
*更方便的限制检索数据的范围:
表达式:表达式 [not] in (表达式1,表达式2...)
例:select distinct 学号 from 数据表名
Where 课程号 in(‘A003’,’J003’)
*模糊查询:
表达式:表达式 [not] like <匹配串>
--%:表示从0~nwh 任意字符串
--_:表示单个任意字符
--[]:表示方括号里列出的任意一个字符
--[^]:任意一个没有在方括号里列出的字符
例:“查询张姓学生的学号及姓名”
Select 学号,姓名 from 数据表名
Where 姓名 like ‘张%’
*涉及空值的查询:
例:”查询选修了课程却没有成绩的学生的学号”
select * from 数据表名
Where 成绩 is null
复制
27.对查询结果进行排序查询
表达式:select 列名1,列名2,列名3......
Where 列名 =’值’
order by 给定条件列 [asc/desc]
注释:asc:升序 desc:降序
复制
28.集合函数(对查询结果得到的数据集进行汇总或求平均值等各种运算)
SQL server的统计函数表
函数名 功能
SUM() 求和
AVG() 求平均值
MIN() 返回一个数列或数值表达式的最小值
MAX() 返回一个数列或数值表达式的最大值
COUNT() 返回满足SELECT语句中指定条件的记录的个数
COUNT(*) 返回找到 的行数
例:“查询学生总人数”:select 学生总人数=count(*) from 数据表名
“查询选修A005课程的学生人数”:
select 选课人数=count(distinct 学号) from 数据表名
Where 课程号=’A005’
“查询选修A001课程的学生的最高分”:
Select A001课程最高分=MAX(成绩) from 数据表名
Where 课程号=’A001’
复制
29.按照指定的列,对查询结果进行分组统计(课本112页)
表达式:group by 列名
[having 条件表达式]
复制
30.使用COMPUTE BY子句可以对BY后面给出的列进行分组分组显示,并进行列的小计
例:“求每门课程的成绩大于等于90分的人数”
Select * from 数据列表
Where 成绩>=90
Order by 课程号
Compute count(课程号) by 课程号
复制
31.交叉连接查询
表达式1:
Select 表名1.列名 , 表名2.列名... from 表名1 cross join 表名2
表达式2:
Select 表名1.列名, 表名2.列名... From 表名1,表名2
复制
32.内连接(连接条件通常采用“主键=外键”的形式)
表达式1:
Select 表名1.列名 , 表名2.列名... from 表名1 [inner] jion 表名2
on 表名1.列名=表名2.列名
表达式2:
Select 表名1.列名, 表名2.列名... From 表名1,表名2
Where 表名1.列名=表名2.列名
复制
33.外连接:
*左外连接(将左表中的所有记录分别与右表中的每条记录进行组合)
表达式:select 列表1.列名_ as 列名,列表1.列名......,列表2.列名_,列名2.列名
From 表名1 as A left [outer] join 表名2 as B on A.列名_=B.列名_
*右外连接(将左表中的所有记录与右表中的每条记录进行组合)
表达式:
select 列名列表
from 表名1 right [outer]
join 表名2 on 表名1.列名=表名2.列名
Join 表名3 on 表名3.列名=表名2.列名2...
*全外连接:(不管查询的结果是否为空,都会全部显示)
表达式:
Select 表名1.列 as 列1,表名1.列名,表名2.列2 as 列2,表名2.列名
From 表名1 full join 表名2 on 表名1.列=表名2.列
复制