最近数据库老师布置了一个大作业,想了想,还是在这里记录一下学习的过程。此文权当是写给自己看的,能力有限。诸位若有任何指教,但说无妨。

首先,对于数据库,需要了解最核心的四个概念“增删改查”。其次,再是约束、函数、视图、触发器、存储过程、事务等之类的。

既然,标题是,创建一个完整的数据库,那么,接下来,我会记录的比较详细。分几次完成此文,亦是必然的。

另外,这段时间偏爱图灵的书籍,于是乎,决定做一个图书管理系统的数据库。

**以下操作均是假设不存在相同名字的文件。**



+++++++++++++++++++++++++++++我是华丽丽的分割线+++++++++++++++++++++++++++++


数据库的操作

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



+++++++++++++++++++++++++++++我是华丽丽的分割线+++++++++++++++++++++++++++++

视图

先说一下概念,视图就是将查询的结果以虚拟表的形式存储在数据中。

就我理解的而言,视图的作用是给客户端的用户进行查看,避免他们修改表本身的结构。

kong 部署使用mysql作为数据库_表名

另外,视图的本质,其实就是查询语句。

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