基本操作...
2
第 2 章 数据库的设计与管理...
2
2.4 修改数据结构...
2
2.5 删除数据库...
2
2.5.2? 使用 DROP DATABASE 语句删除数据库...
2
2.6 备份和还原数据库...
2
2.6.2 使用查询分析器进行备份和还原数据库...
2
2.6.3 直接复制文件的备份和还原...
3
2.8 系统数据库介绍...
3
2.8.1 主控数据库 master
3
2.8.2 模板数据库 model
3
2.8.3 临时数据库 tempdb.
3
第 3 章? 表的创建与管理...
3
3.1 SQL Server 2000 中的数据类型...
3
3.2 表的创建...
3
3.2.2 用 CREATE TABLE 语句创建表...
4
3.3 使用约束...
4
2 使用 CREATE TABLE 语句创建NULL 约束...
4
3.3.2? PRIMARY KEY 约束 即 主键约束 【primary 第一的、原来的】...
4
3.3.3? UNIQUE 约束 即 唯一约束? [unique? 唯一的]
4
3.3.4? FOREIGN KEY 即 外键约束 [foreign 外国的、外交的]
5
3.3.5? CHECK 约束 即 检查约束 【check? 检查、阻止、制止 】...
5
3.3.6? DEFAULT 约束 即 默认约束...
5
3.4 表的修改【P93】...
5
3.4.2 使用 ALTER TABLE 语句修改表【P96】...
5
3.5 表的删除 【P98】...
6
3.5.2 使用 DROP TABLE 语句删除表...
7
DROP TABLE 表名[,…n]
7
*第 4 章 使用选择查询检索数据【P102】...
7
4.1 SELECT 语句概述【P102】...
7
4.1.1 SELECT 基本语句的语法格式...
7
SELECT 字段列表...
7
[INFO 新表]
7
FROM 数据源...
7
[WHERE 搜索条件]
7
[GROUP BY 分组表达式]
7
[HAVING 搜索表达式]
7
[ORDER BY 排序表达式 [ASC |DESC ] ]
7
4.2 使用SELECT 子句选取字段和记录...
7
4.2.1 使用字段列表指定输出字段...
7
* 4.2.2 使用选择谓词限制记录行数【P109】...
7
4.3 使用FROM子句指定数据源...
7
4.3.1 使用内部连接组合两个表中的记录...
7
4.3.2使用左边外部连接组合两个表中的记录...
8
4.3.3使用右边外部连接组合两个表中的记录...
8
4.3.4使用完全外部连接组合两个表中的记录...
8
4.3.5使用交叉连接组合两个表中的记录...
8
4.4 使用WHERE 子句过滤记录【P117】...
8
4.4.2 使用单一查询条件过滤记录...
8
·<比较运算符> 用于比较两个表达式之间的值,并返回 true 、false 、unknown(当一个表达式取NULL 时返回 unknown)...
8
4.4.3 使用AND 和 OR 组合查询条件...
9
4.4.4 使用BETWEEN 和 NOT BETWEEN 过滤记录 (缩小范围)
9
4.4.5 使用IN 和 NOT IN 过滤记录...
9
函数...
9
函数类型:...
9
常用函数:...
10
·CONVERT :【P108】...
10
·SUBSTRING :【P119】...
10
?
?
?
?
======================================================================
?
基本操作
|
·查看数据库的结构 :execute ?sp_helpdb ?DBName
· IF EXISTS (SELECT * FROM sysdatabasesWHERE name=’表名’)? //判断数据库是否存在
·学号 int IDENTITY(2001001,1),? // IDENTITY(2001001,1) 自动编号,种子和增量
·SPACE(1) :内置函数SPACE()用于生成空格。
?
第 2 章 数据库的设计与管理
?
2.4 修改数据结构
2.4.3
实用Alter DATABASE语句修改数据库
?
?
2.5 删除数据库
?
2.5.2
? 使用 DROP DATABASE 语句删除数据库
DROP DATABASE 数据库名 [,…]
DROP DATABASE? DBtest1,Dbtest2
?
2.6 备份和还原数据库
?
2.6.2
使用查询分析器进行备份和还原数据库
1 在查询分析器中备份数据库
步骤:
1)?
用系统存储过程 sp_addumpdevice 创建一个备份设备。
·语法:sp_addumpdevice ‘设备类型’,’逻辑名称’,’物理名称’
·本地硬盘上创建一个备份设备:
? EXECUTE sp_addumpdevice ‘disk’,mydiskbackup,’d:databasebackup/backup1.bak’
·在网络盘上创建一个远程备份设备
? EXECUTE sp_addumpdevice ‘disk’,????????????????????????????????????????????????????? ????????????????????????‘networkdevice’,’//servername/sharename/servername/sharename/path/filename.ext’
?
?
2)?
用BACKUP 语句执行备份操作
·对整个数据库进行备份
? 语句:BACKUP DATABASE 数据库名 TO 设备名称
·只对事物日志备份操作
? 语句:BACKUP LOG 数据库名 TO 设备名称
?
2在查询分析器中还原数据库 【restore 恢复】
·还原整个数据库
? RESTORE DATABASE 数据库名 FROM 设备名称
·只还原事物日志
? RESTORE LOG 数据库名FROM 设备名称
?
2.6.3
直接复制文件的备份和还原
·sp_attach_db ‘数据库名’,’文件名’[,… 16]
解释:
‘数据库名’:
‘文件名’ :必须是唯一的。
文件可以是主文件(.mdf)、非主文件(.ndf)、事物日志文件(.ldf),最多可以指定 16 个文件名。
例子:
EXECUTE sp_attach_db ‘Northwind’,
‘d:/mssql/backup/Northwind.mdf’,
‘d:/mssql/backup/Northwind..ldf’
?
?
2.8 系统数据库介绍
?
2.8.1
主控数据库 master
?
2.8.2
模板数据库 model
?
2.8.3
临时数据库 tempdb
?
第 3 章? 表的创建与管理
3.1 SQL Server 2000 中的数据类型
?
3.2 表的创建
?
3.2.2
用 CREATE TABLE 语句创建表
?
IF EXISTS (SELECT * FROM sysdatabasesWHERE name=’库名’)? //判断数据库是否存在
DROP DATABASE库名
CREATE DATABASE 库名
GO
?
USE 库名
GO
CREATE TABLE 表名
(
? 学号 int IDENTITY(2001001,? // IDENTITY(2001001,1) 自动编号,种子和增量
? 姓名 varchar(6),
? 专业 varchar(6)
)
GO
?
3.3 使用约束
?
3.3.1
NULL 约束
?
2 使用 CREATE TABLE 语句创建NULL 约束
·[CONSTRAINT 约束名] NULL | NOT NULL
CREATE TABLE 表名
(
姓名 varchar(6) null,
)
GO
?
3.3.2
?P
RIMARY KEY 约束 即 主键约束 【primary 第一的、原来的】
CREATE TABLE 表名
(
姓名 varchar(6) null,
constraint PK_stuNo primary key (stuNo)
)
GO
主键约束
later table stuInfo
add constraint PK_stuNo primary key (stuNo)
?
3.3.3
?UNIQUE 约束 即 唯一约束? [unique? 唯一的]
CREATE TABLE 表名
(
姓名 varchar(6) null,
constraint UQ_stuID unique (stuID)
)
GO
later table stuInfo
add constraint UQ_stuID unique (stuID)
?
3.3.4
?FOREIGN KEY 即 外键约束 [foreign 外国的、外交的]
CREATE TABLE 表名
(
姓名 varchar(6) null,
constraint UQ_stuID unique (stuID
)
GO
later table stuMarks
add constraint FK_stuNo
? ??? foreign key (stuNo) references stuInfo(stuNo)
?
3.3.5
?CHECK 约束 即 检查约束 【check ?检查、阻止、制止 】
CREATE TABLE 表名
(
姓名 varchar(6) null,
constraint CK_stuAge check (stuAge between 15 and 40)
GO
later table stuInfo
add constraint CK_stuAge check (stuAge between 15 and 40)
?
3.3.6
? DEFAULT 约束 即 默认约束
CREATE TABLE 表名
(
姓名 varchar(6) null,
constraint DF_stuAddress default ("地址不详") for stuAddress)
GO
later table stuInfo
add constraint DF_stuAddress default ("地址不详") for stuAddress
?
?
?
?
3.4 表的修改【P93】
?
3.4.2
使用 ALTER TABLE 语句修改表【P96】
1 使用ALTER COLUMN 子句修改字段定义
ALTER TABLE 表名
? ALTER COLUMN 字段名 新数据类型[(精度[,小数位数])]? [NULL | NOT NULL]
例子:
ALTER TABLE 通讯录
? ALTER COLUMN? 姓名 char(6)? NOT NULL
GO
?
2 使用ADD子句添加字段
ALTER TABLE? 表名
? ADD {字段定义 | 字段名 AS 计算字段表达式} [,…]
例子1:
ALTER TABLE 通讯录
? ADD 性别 char(2),班级 char(4),通讯地址 varchar(36),邮政编码 char(4)
例子2:
ALTER TABLE 成绩
? ADD 平均分 AS(语文+数学)/2
GO
?
3 使用DROP COLUMN 子句删除字段
ALTER TABLE表名
? DROP COLUMN 字段名 [,…]
例子:
ALTER TABLE 通讯录
? DROP COLUMN 性别,班级
4 使用 ADD CONSTRAINT 字句添加约束
ALTER TABLE 表名
? ADD? CONSTRAINT 约束定义[,…n]
例子:
ALTER TABLE 表名
? ADD
CONSTRAINT FK_SNo
? ?PRIMARY KEY CLUSTERED(学号),
? ?CONSTRAINT? CK_Zip
? ?CHECK (邮政编码 LIKE ‘[0-9] [0-9] [0-9] [0-9] [0-9] [0-9]’)
?
?
5 使用 DROP CONSTRAINT 字句删除约束
ALTER TABLE 表名
? DROP? CONSTRAINT 约束定义[,…n]
例子:
ALTER TABLE 表名
? DROP CONSTRAINT FK_SNo,CK_Zip
?
?
3.5 表的删除 【P98】
3.5.2
使用 DROP TABLE 语句删除表
DROP TABLE 表名[,…n]
?
*第 4 章 使用选择查询检索数据【P102】
4.1 SELECT 语句概述【P102】
4.1.1
SELECT 基本语句的语法格式
SELECT 字段列表
[INFO 新表]
FROM 数据源
[WHERE 搜索条件]
[GROUP BY 分组表达式]
[HAVING 搜索表达式]
[ORDER BY 排序表达式 [ASC |DESC ] ]
?
?
4.2 使用SELECT 子句选取字段和记录
?
4.2.1
使用字段列表指定输出字段
1 选取全部字段
2选取部分字段
3选取特殊字段
4 设置字段别名
5使用计算字段
*
4.2.2
使用选择谓词限制记录行数【P109】
1 使用 ALL 返回全部记录
SELECT ALL 学号 FROM 成绩表
?
2 使用 DISTINCT 过滤重复的记录 【distinct 清楚的、明显的、独特的】
SELECT DISTINCT 学号 FROM 成绩表
?
3 使用TOP 仅显示前面若干行记录
SELECT TOP3 * FROM 成绩表
?
?
4.3 使用FROM子句指定数据源
?
4.3.1
使用内部连接组合两个表中的记录
·内连接: 。
·内连接显示的字段:表1选中的记录 +? 表2中选中的记录。
FORM 表1 [INNER] join 表2 ON <条件表达式>
SELECT? sc.学号,姓名
FORM
成绩表 AS sc? INNER JOIN 学生表 AS st
ON? sc.学号 = st.学号
?
4.3.2
使用左边外部连接组合两个表中的记录
·左连接:左边的表为主表,右边的表为从表。
·左连接显示的字段:所有主表记录 + 从表中选中的记录。
·在查询结果中,主表中不符合条件的记录在相应的字段上填NULL.
FORM 表1 LEFT [OUTER] join 表2 ON <条件表达式>
SELECT? a.学号,姓名
FORM
成绩表 AS a? LEFT OUTER JOIN 学生表 AS b
ON? a.学号 = b.学号
?
4.3.3
使用右边外部连接组合两个表中的记录
·右连接:右边的表为主表,左边的表为从表。
·右连接显示的字段:所有主表记录 + 从表中选中的记录。
·在查询结果中,主表中不符合条件的记录在相应的字段上填NULL.
FORM 表1 RIGHT [OUTER] join 表2 ON <条件表达式>
SELECT? a.学号,姓名
FORM
成绩表 AS a? RIGHT OUTER JOIN 学生表 AS b
ON? a.学号 = b.学号
?
4.3.4
使用完全外部连接组合两个表中的记录
?
FORM 表1 FULL [OUTER] join 表2 ON <条件表达式>
SELECT? a.学号,姓名
FORM
成绩表 AS a? FULL OUTER JOIN 学生表 AS b
ON? a.学号 = b.学号
?
4.3.5
使用交叉连接组合两个表中的记录
·返回两个来源表交叉匹配的结果。
·显示所有字段,记录数变化了,如果没有WHERE 子句,交叉连接将产生所涉及表的笛卡尔积个条记录。
·假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,2),(b,2)}。
FROM 表1 CROSS JOIN 表2
select * from roysched cross join sales
?
4.4 使用WHERE 子句过滤记录【P117】
?
4.4.2
使用单一查询条件过滤记录
·<比较运算符> 用于比较两个表达式之间的值,并返回 true 、false 、unknown(当一个表达式取NULL 时返回 unknown)
?
4.4.3
使用AND 和 OR 组合查询条件
1 使用 AND 缩小搜索范围
例子:
select * from sales where stor_id>7000 and ord_num = 'P2121'
?
2 使用 OR 扩大搜索范围
例子:
select * from sales where stor_id>7000 or ord_num = 'P2121'
?
4.4.4
使用BETWEEN 和 NOT BETWEEN 过滤记录 (缩小范围)
测试表达式 [NOT] BETWEEN 起始值 AND 终止值
USE pubs
SELECT *? FROM jobs where job_id between 1 and 5
?
4.4.5
使用IN 和 NOT IN 过滤记录
·IN 是一个逻辑运算符,用于测试给定的值是否在一个子查询或项目列表中
测试表达式 [NOT] IN (子查询 | 表达式列表)
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
函数
函数类型:
1)???????
聚合函数
2)???????
配置函数
3)???????
游标函数
4)???????
日期和时间函数
5)???????
元数据函数
6)???????
行集函数
7)???????
安全函数
8)???????
字符串函数
9)???????
系统函数
10)????
系统统计函数
11)????
文本和图像函数
?
?
常用函数:
·CONVERT :【P108】
将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。
USE pubs
GO
SELECT 'The price is ' + CAST(price AS varchar(12))
FROM titles
WHERE price > 10.00
GO
USE CONVERT
GO
SELECT 'The price is ' + CONVERT (varchar(12),price? )
FROM titles
WHERE price > 10.00
GO
?
·SUBSTRING :【P119】
语法
SUBSTRING ( expression,start,length )
参数
expression
是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。
?
start
是一个整数,指定子串的开始位置。
?
Length
是一个整数,指定子串的长度(要返回的字符数或字节数)。
返回类型:
如果 expression 是支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型,则返回二进制数据。
例子:
USE pubs
SELECT au_lname,au_fname,SUBSTRING(au_fname,1) as 首字母
FROM authors
ORDER BY au_lname
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!