最近数据库老师布置了一个大作业,想了想,还是在这里记录一下学习的过程。此文权当是写给自己看的,能力有限。诸位若有任何指教,但说无妨。
首先,对于数据库,需要了解最核心的四个概念“增删改查”。其次,再是约束、函数、视图、触发器、存储过程、事务等之类的。
既然,标题是,创建一个完整的数据库,那么,接下来,我会记录的比较详细。分几次完成此文,亦是必然的。
另外,这段时间偏爱图灵的书籍,于是乎,决定做一个图书管理系统的数据库。
**以下操作均是假设不存在相同名字的文件。**
+++++++++++++++++++++++++++++我是华丽丽的分割线+++++++++++++++++++++++++++++
数据库的操作
1.创建
create database library
on primary ( --默认就是primary文件组,可以省略
/*--数据文件的具体描述--*/
name = library, --主数据文件的逻辑名称
filename = 'D:\Code\SQL\library\library.mdf', --主数据文件的物理名称
size = 8, --主数据文件的初始化大小,单位默认MB
maxsize = 20, --主数据文件增长的最大值,若不写这句,即为不限制文件增长
filegrowth = 2 --主数据文件的增长方式及大小,可以按MB,也可以按百分比
)
log on (
/*--日志文件的具体描述,各参数含义同上--*/
name = librarylog,
filename = 'D:\Code\SQL\library\library.ldf',
size = 6,
maxsize = 15,
filegrowth = 2
)
关于设置数据库自动增长注意要点,参阅另一篇博文,传送门
2.删除
drop database library
另外,系统数据库(master、model、msdb、tempdb)是无法删除的。
3.修改
修改中有很多操作,不一一举例。几乎均是以alter database db_name来进行。例如,修改数据库名称也可以sp_renamedb oldname, newname来操作的:
sp_renamedb library, lib
若用alter database语句,则要求当前数据库只有一个用户连接,否则该语句将失败。
alter database library
modify name = lib
再附上一个添加数据库文件的操作:
alter database library
add file (
name = libmaster,
filename = 'D:\Code\SQL\library\library.ndf', --次要数据文件
size = 5,
maxsize = 10,
filegrowth = 1
)
部分语句的语法格式如下:
ADD FILE:将一个或多个定义的文件添加到名为文件组或默认文件组
REMOVE FILE: 删除逻辑文件名的文件夹。只有在文件为空时才能删除,磁盘文件也将一同被删除
MODIFY FILE :对文件进行修改,必须在文件中指定NAME,以标示要修改的文件。一次只能更改FILENAME,SIZE,FILEGROWTH和MAXSIZE这些属性中的一种。如果指定了SIZE,那么新大小必须比文件当前大小要大
ADD LOG FILE :将定义的日志文件添加到指定的数据库
ADD/REMOVE FILEGROUP :添加或删除文件组。只有在文件组为空时才能删除,该文件组中的所有文件也将一并删除
+++++++++++++++++++++++++++++我是华丽丽的分割线+++++++++++++++++++++++++++++
表的操作
1.创建
create table books (
书号 char(8) not null constraint PK_BID primary key,
书名 varchar(50),
作者 varchar(50),
ISBN varchar(30),
出版社 varchar(20),
出版日期 varchar(10),
定价 decimal(6, 2),
馆藏地 char(3) not null,
是否借出 char(2) constraint CK_BOOL check(是否借出 in('是', '否')),
constraint FK_PLACE foreign key(馆藏地) references reading_room(编号)
)
这里创建表的时候创建了主键约束、外键约束、检查约束。后面还会专门记录约束的学习,这里不深入探讨。
2.删除
drop books
3.修改
在修改SQL Server表结构时,常用到Alter语句,把一些常用的alter语句列举如下:
1:向表中添加字段
Alter table [表名] add [列名] 类型
2: 删除字段
Alter table [表名] drop column [列名]
3: 修改表中字段类型 (可以修改列的类型,是否为空)
Alter table [表名] alter column [列名] 类型
4:添加主键
Alter table [表名] add constraint [ 约束名] primary key( [列名])
5:添加唯一约束
Alter table [表名] add constraint [ 约束名] unique([列名])
6:添加表中某列的默认值
Alter table [表名] add constraint [约束名] default(默认值) for [列名]
7:添加约束
Alter table [表名] add constraint [约束名] check (内容)
8:添加外键约束
Alter table [表名] add constraint [约束名] foreign key(列名) referencese 另一表名(列名)
9:删除约束
Alter table [表名] drop constraint [约束名]
10:重命名表
exec sp_rename '[原表名]','[新表名]'
11:重命名列名
exec sp_rename '[表名].[列名]','[表名].[新列名]'
例如,添加外键
alter table books
add constraint FK_BID
foreign key (书号)
references borrow(书号)
4.约束
+++++++++++++++++++++++++++++我是华丽丽的分割线+++++++++++++++++++++++++++++
数据操作
1.添加
使用insert语句添加数据
添加单个记录
insert into table_name or view_name (所有的字段)
values (expression) --expression可以是一个常量、变量或表达式。表达式不能包含select或execute语句
例如,添加一个阅览室记录:
insert into reading_room (编号, 名称, 藏书量)
values ('001', 报刊阅览室, 4000) --001如果不加单引号,则系统会自动删除前面的两个0
2.删除
使用delete语句删除指定数据
直接上例子吧
delete from reading_room where 编号='001'
如果不指定where子句,则删除表中所有数据
3.修改
使用update语句修改指定数据
不喜欢写太多语法的东西,直接上例子:)
--将应还日期这一列更新为借阅日期加上60天
update borrow
set 应还日期 = DATEADD(DAY, 60, 借阅日期)
就是用
update 表名
set 列名
[where (search_condition)] –用了转义,也没打出尖括号…姑且用圆括号吧
+++++++++++++++++++++++++++++我是华丽丽的分割线+++++++++++++++++++++++++++++
查询
这一块儿的内容实在是太多了,直接传送门吧。233333
http://www.w3school.com.cn/sql/sql_select.asp
不过我还是要总结下重要的地方
1.with子句。博客里转载了两篇非常不错的。
2.into子句
3.where子句
4.group by子句。一定要有聚合函数
5.having子句。通常在group by子句中使用,若无group by,则用法和where类似,且能够在子句中能够使用聚合函数
6.order by子句
7.compute子句。有by与没有by的区别,大致就是有没有分组...
8.distinct关键字
关键字
10.union的各种用法
11.子查询与嵌套查询
12. 连接查询。即join
+++++++++++++++++++++++++++++我是华丽丽的分割线+++++++++++++++++++++++++++++
视图
先说一下概念,视图就是将查询的结果以虚拟表的形式存储在数据中。
就我理解的而言,视图的作用是给客户端的用户进行查看,避免他们修改表本身的结构。
另外,视图的本质,其实就是查询语句。
1.创建
语法结构如下:
create view view_name
[with encryption] --对视图进行加密,但是对查询不加密
as
select_statement
[with check option] --强制针对视图执行的所有数据修改语句都必须符合在select_statement中设置的条件
例如:
create view v_books
with encryption
as
select 书名, 定价 from books where 定价 > 10
with check option
2.修改
就是把create改为alter……..
只是要注意:当想要修改新的视图时,想使用where语句,必须保证作为条件的字段在原视图中存在。
例如:
alter view v_books
as
select 书名, 定价 from books where 定价 > 30 --定价字段必须在原视图中存在
另外,可以使用update语句对视图中的数据进行更新。
update v_books
set 书名 = '如果在公司里不小心把数据给删除了会怎么样?'
where 定价 = 10
3.删除
一般来说,删除操作都比较容易,使用的时候务必谨慎~想想携程的数据。23333
drop view v_books
如果,要删除视图中部分数据的话,使用delete语句
delete v_books
where 定价 > 10