这里的数据库就使用 SQL server 2008。
需求分析中有介绍到,数据库的物理结构。。在使用中要用到六张表(reader,readertype,users,book,booktype,borrowbook),首先创建一个数据库(db_bookborrow),然后再在数据库中 将这六张表建出来(具体怎么建表‘自己用的图形界面’这里不做介绍,下面有语句创建方法)。每一张表的详细内容见需求分析,这里要注意的是 readetype和booktype 的主键设置为自增长型。
建完表好需要熟悉一下 查询增添修改 SQL 语句,程序中将会用到。下面是程序中可能用到的一些 SQL 语句。
1.创建和删除数据库的方法(使用图形化界面创建数据库、使用语句创建数据库)[使用语句创建数据库可以避免数据库版本不同带来的麻烦,另外添加数据更为方便。]
--创建数据库
create database db_bookborrow;
--删除数据库
drop database db_bookborrow;
2.创建和删除数据表的方法(使用图形化界面创建、使用语句创建)
创建数据表的格式(红色表示关键字,不能改动;蓝色表示可根据不同情况改为不同内容;中括号里的内容表示可选。)
create table 表名 (
字段名1 字段类型 [ primary key],
字段名2 字段类型,
.......
);
--创建数据表
create table reader
(
readeridchar(8) primary key,
type int,
namechar(20),
age int,
sexchar(4) ,
phonechar(11),
deptvarchar(20),
regdate date
);
create table readertype
(
id int,
typenamevarchar(20),
maxborrownumint,
limit int
);
--删除数据表
drop table reader;
【注意当前所操作的数据库!】
3.主键和自增长的概念及作用,两者的写法。
主键是某一条(行)记录的唯一索引,根据主键可以唯一地确定某条记录。
自增长可以自动为主键提供不重复的值。需要两个参数:初始值和步长。【注意:只能对int类型的主键设置为自增长!】
--主键(primary key)和自增长(identity)
create table users
(
id int primary key identity(1,1),
namevarchar(20),
passwordvarchar(20)
);
4.增删改查操作(CRUD)
增加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)。
--增加操作(insert)
insert into readertype values(1,'学生',3,10) --char或varchar类型的内容要用单引号括起来
insert into readertype values(2,'教师',6,30)
insert into reader values('12345678',1,'张三',23,'男','13612345678','软件','2018-1-15')
insert into reader values('11111111',2,'李四',33,'女','13611111111','软件','2016-1-10')
insert into users values('admin',111) --自增长字段不需赋值
--更新操作(update)
update reader set age=18 where readerid='12345678'
update reader set age=19,phone=’13722222222’ wherereaderid='12345678'
--查询操作(select)
select * from readertype --查询所有读者类型
select readerid,name from reader --查询所有读者的编号和姓名
select * from reader where readerid=’12345678’ --查询编号为12345678的读者的所有信息
--删除操作(delete)
delete from reader where readerid=’12345678’
5.部分复杂查询
6.1 判空
select *from borrowbook where returndatetime is NULL
select * fromborrowbook where returndatetime is not NULL
6.2 组合where条件(and、or、not)
select * from users where name='admin' and password=111
6.3 模糊查询(like关键字)
select * from reader where name like '张%' --%代表零到多个字符
select * from reader where name not like '张%'
select * from reader where name like '张_' --一个下划线代表一个字符
select * from reader where name like '%张%' --名字中包含张
6.关联查询(多表查询)
--查询读者编号、读者姓名和读者类型名(信息来自两张表)
select readerid,name,typename
from reader join readertype onreader.type=readertype.id
[可继续加where子句]
7.联合主键(借阅信息表)
某人和某书联合到一起才能唯一确定一条信息,这时可以使用联合主键。
create table borrow(
readerid char(8),
isbn char(10),
borrowdate datatime,
primary key(readerid,isbn)
);