SQL(Structured Query Language)结构化查询语言。
本课程以SQL Server 2005为应用背景。
学习建议:一定要习惯使用帮助!
SQL Server 的安装、启动和身份验证。
- 1、安装。
- 2、SQL Server 服务的启动:开始→程序→Microsoft SQL Server 2005→配置工具→SQL Server Configuration Manager
- 3、启动:开始→程序→Microsoft SQL Server 2005→SQL Server Management Studio
- 4、两种身份验证:Windows身份验证和SQL Server身份验证。
SQL Server 系统数据库
- 1、master 数据库:主要记录了SQL Server的所有系统信息。
- 2、tmpdb 数据库:为临时表和其他临时存储需求提供存储空间。
- 3、model 数据库:建立所有用户数据库的模板。
- 4、msdb 数据库:数据库在SQL Server代理程序调度报警和作业时使用。
数据库的创建与使用
create database test
on (name = testdata, filename = 'e:\lxd\td.mdf')
log on (name = testlog, filename = 'e:\lxd\tdlog.ldf')
参数name:数据库文件逻辑名,它必须在全部数据库逻辑名中唯一。
参数filename:存储数据和日志的物理文件名及路径。
注意:数据文件后缀mdf,日志文件后缀ldf。
附加某些参数的Create Database命令
create database new_db
on primary
( name = new_db,
filename = 'd:\new_db.mdf',
size = 5mb,
maxsize = 50mb,
filegrowth = 10% )
该命令自动建立日志文件。
使用某数据库命令:use new_db
数据库的修改与维护
1、修改数据库数据文件的初始大小
alter database new_db
modify file
( name = new_db,
size = 15mb )
注意:数据库逻辑名必须与最初数据库定义时的逻辑名一致。
2、修改数据库名
exec sp_renamedb 'new_db', 'old_db'
调用存储过程,第一个参数为原数据库名,第二个参数为新数据库名。
3、删除数据库
drop database old_db
4、查看系统中有哪些数据库
exec sp_helpdb
5、查看new_db数据库定义信息
exec sp_helpdb new_db
数据库的分离、附加与备份、还原
1、分离数据库
exec sp_detach_db new_db
2、附加数据库
create database new_db on
( filename = 'd:\new_db.mdf' ),
( filename = 'd:\new_db_log.ldf' )
for attach
注意:一旦将数据库分离,则该数据库将不能对外提供服务。
3、备份数据库
backup database new_db
to disk = 'e:\lxd\test.bak'
4、还原数据库
restore database new_db
from disk = 'e:\lxd\test.bak'
关系模式的设计
常用数据类型
常用数据 类型 |
含义 |
char(n) |
长度为n的定长字符串 |
varchar(n) |
最大长度为n的变长字符串 |
bigint |
大整型(8字节) |
int |
整型(4字节) |
smallint |
短整型(2字节) |
tinyint |
微整型(1字节) |
decimal(p,s) numeric(p,s) |
定点数,由p位十进制数位(小数位占s位)构成的数。1<=p<=38,默认为19;0<=s<=p,默认为0。 |
money |
8字节整数,精确到万分之一。 |
smallmoney |
4字节整数,精确到万分之一。 |
float[(n)] |
浮点数,尾数位数为n,1<=n<=53,默认为53。 |
real |
等同于float(24) |
datetime |
时间日期型。格式化为YYY-MM-DD HH:MM:SS。精确到3.33毫秒。 |
smalldatetime |
同datetime,精确到1分钟。 |
text |
存储大容量长度可变字符串 |
基本表的定义
查看表的基本定义信息:
exec sp_help student
基本表数据的录入
基本表的常用维护操作
1、表重命名
exec sp_rename 'Student', 'stu'
2、列重命名
exec sp_rename 'Student.Sname', 'name', 'column'
3、添加新列
alter table Student add Sentrance datetime
注意:新增列的数据为空。
4、更改列数据类型
alter table Student alter column Sage int
注意:若表中已有数据,数据类型不相容时不能进行列数据类型的更改。
5、删除列
alter table Student drop column Sentrance
6、删除表
drop table Student
注意:若该表与其它表关联(如外键的参照等),则删除失败。
7、对表的常用维护操作还包括对表中约束的增删改问题,以后专门介绍。
数据查询
选择表中的若干列
1、查询全体学生的学号与姓名
select sno, sname
from student
2、查询学生表的全部属性数据
select *
from student
3、查询学校有哪些系
select sdept
from student
问题:查询结果取消重复行吗?
结论:保留重复的元组。
4、取消查询结果中的重复元组
select distinct sdept
from student
问题:该语句该如何理解?
select distinct sdept, ssex
from student
结论:distinct关键词修饰后面的整个属性组。
注意:SQL Server不区分大小写。
属性列可以是表达式
问题:什么是表达式?
常量和变量是表达式;常量、变量、运算符、括号及函数的有效组 合是表达式。
1、查询全体学生的姓名与出生年份
select sname, 2012-sage
from student
2、查询结果是什么?
select sname, 'Year of Birth', 2011-sage, lower(sdept)
from student
3、问题:你知道SQL Server中都提供了哪些函数吗?查帮助啊!
属性列的别名
利用属性别名可改变查询结果的列标题名称,当然还可用于方便或清晰 表示查询命令的作用。
例如:
select sname NAME, 2011-sage BIRTHDAY
from student
select 'Year of Birth' as birth, lower(sdept) as dept
from student
as 可省略
返回查询结果的前n行数据
利用 top n 可以得到查询结果的前n行记录的数。