當前位置:首頁 » 編程語言 » 圖書借閱管理系統sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

圖書借閱管理系統sql

發布時間: 2022-06-22 20:02:31

❶ 有關圖書館借閱系統的sql語句

修改列名sp_rename 'mytable.name','新的列名'
但是次功能會破壞資料庫結構請慎用.
exec sp_rename 『table.oldfield』,』newfield』,』column』

Select的基本查詢
1. 選擇所有列
Select *from student
2. 選擇指定的若干列
Select s_avgrade , s_name
From student
3. 構造計算列
Select s_name 姓名,year(getdate())-year(s_birthday) 年齡
From student;
帶DISTINCT的查詢
SELECT DISTINCT s_dept 所在的系
FROM student;
比較上下的區別
select s_dept 所在的系
from student;
帶WHERE子句的條件查詢
select s_no 學號,s_name姓名,s_sex性別,s_avgrade平均成績
from student
where s_avgrade>=90;
帶BETWEEN的范圍查詢
select s_name 姓名,s_sex 性別,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_brithday ("not between") BETWEEN '1986-00-00' and '1987-00-00';(這里的日期從 char 數據類型到 smalldatetime 數據類型的轉換導致 smalldatetime 值越界,全部寫0好像不對,具體一點到是可以運行)
-----------------------------帶IN的范圍查詢
select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_speciality in('電子信息工程','生物工程');(查詢所選定s_speciality的student的信息)

select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_speciality='電子信息工程'or s_speciality='生物工程');

-------------------帶GROUP的分組查詢
1.select s_dept 系別,count(*) 人數
from student
group by s_dept;(統計各個s_dept的人數)

2.select s_dept 系別,count(*) 人數
from student
group by s_dept
having count(*)>=3; (統計各個s_dept的人數,但是只輸出人數大於3的)
帶like的匹配查詢和帶is的空值查詢
--------------------------帶like的匹配查詢
select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_name like 'y%';(只能查開頭為y的名字且為第一個字,如果要具體查出"yd",就應寫"y%d%") )
空值null的查詢
Select *
from student
where s_avgrade=null;——錯誤
Select *
from student
where s_avgrade is null;——正確
------------使用Order排序查詢結果
如果ASC和DESC都沒有選擇,則按依據列進行升序排列,即ASC為默認值
1.select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_sex='男'
order by s_avgrade DESC;
2.select s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,s_avgrade 平均成績,s_brithday 出生年月
from student
where s_sex='男'
order by s_avgrade DESC,s_no;(先按s_avgrade的要求(DESC)排序,之後按s_no(默認的是升序排列),如果後面仍然有要求,依前面類推)

-------------連接查詢
同時涉及兩個或兩個以上數據表的查詢稱為連接查詢
1.等值連接和自然連接查詢
select student.s_no 學號,s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,c_name 課程名稱,c_grade 課程成績
from student,sc
where student.s_no =sc.s_no;
---------------------------------
2.自連接查詢(創建同義詞student2)
Sql server 2000貌似還沒有創建同義詞的功能,Sql server 2005才有,不知道這說法對不對!!!
select student2.s_no 學號,student2.s_name 姓名,student2.s_sex 性別,student2.s_speciality 專業,student2.s_avgrade 平均成績
from student,student2
where student,s_name='yx'
and student.s_speciality=student2.s_speciality
-----------------------------------
3.外連接查詢
select s_name 姓名,s_sex 性別,s_speciality 專業,s_dept 系別,
sc.c_name 課程姓名, sc.c_grade 課程成績
from student left join sc on (student.s_no=sc.s_no);
以上是左外連接
把最後一句改為
from sc right join student on (student.s_no=sc.s_no);
-------------嵌套查詢
使用謂詞IN的嵌套查詢
查出an和yo所在專業的所有學生
方法一.
第1步select student.s_speciality
from student
where student.s_name='an'or student.s_name='yo'
第2步 將第一步得到的結果放到下面
select *
from student
where student.s_speciality in ('電子信息工程','生物工程');
方法二.
select *
from student
where student.s_speciality in (
select student.s_speciality
from student
where student.s_name='an' or student.s_name='yo');
-----使用比較運算符的嵌套查詢
查詢所有成績比yo低的學生
select s_no 學號,s_name 姓名,s_speciality 專業,s_avgrade平均成績
from student
where s_avgrade<(
select s_avgrade
from student
where s_name='yo');
-----------------使用謂詞EXISTS的嵌套查詢
select s_no 學號,s_name 姓名,s_speciality 專業
from student
where exists(
select *
from sc
where student.s_no=s_no and c_name='演算法設計與分析');
-----------------查詢的集合運算
對任意兩個SELECT語句進行集合運算
Union--並
Intersect--交
Except--差
select s_no 學號,s_name 姓名,s_speciality 專業,s_avgrade 平均成績
from student
where s_speciality='計算機軟體與理論'
Union------換成intersect和except都會出問題,網上查了一下說是Sql Server 2000 不支持。
select s_no 學號,s_name 姓名,s_speciality 專業,s_avgrade 平均成績
from student
where s_avgrade>=85;
------------------SQL的數據操縱功能
將學號為『50』,姓名『lo』,性別『男』,出生日期『1987-1-1』,專業為『計算機應用技術』,
平均成績『92.5』,系別『計算機系』的學生記錄插入student
insert into student(s_no,s_name,s_sex,s_brithday,s_speciality,s_avgrade,s_dept)
values('50','lo','男','1987-1-1','計算機應用技術',92.5,'計算機系')

將查詢到的數據輸入到另一個數據表中
1.當然首先要自己creat一個表,例如student1
2.insert into student1(s_no,s_name,s_speciality,s_avgrade,s_dept)
(select s_no,s_name,s_speciality,s_avgrade,s_dept
from student);
---SQLserver 2000 可以在企業管理器上視圖建表
也可以在SQL查詢分析器上寫create建表
-------------------使用Update語句更新數據
將所有學生的平均成績減5分
update student
set s_avgrade=s_avgrade-5;
將所有女生的成績加上原來分數的1%
update student
set s_avgrade=s_avgrade+s_avgrade*1%
where s_sex='女';
如果表student中平均成績s_avgrade是表sc中的課程成績c_grade的平均值。
1.---創建一個用於存放中間結果的數據表tmp_table
create table tmp_table(
s_no char (8)
s_avgrade numberic(3,1)
);
2.---通過按學號分組的方法求各個學生的平均成績,並將其學號和平均成績存放到表tmp_table
insert into tmp_table(s_no,s_avgrade)
(select s_no,AVG(c_grade)
from sc
group by s_no);
3.---用表tmp_table中各個學生的平均成績(tmp_table.s_avgrade)
更新student中的平均成績(student.s_avgrade).對於沒有選修的學生,其成績為空值NULL.
Update student
Set s_avgrade=(select s_avgrade from tmp_table where s_no=student.s_no);
DROP table tmp_table;
-----使用DELETE語句刪除數據
刪除表student中的所有數據
DELETE
from student;
刪除表中沒有選修任何課程的學生
delete
from student
where s_no not in (
select s_no
from sc);
------------SQL的數據控制功能
1.授予許可權
SQL語句中操作全限是由GRANT語句來完成的。
把對表student的修改,查詢許可權給user1,user2
grant update,select
on student
to user1,user2;
把表sc中c_no和c_name的插入許可權授權給user1,並同時給他授予許可權的轉授權。
grant insert(c_no,c_name)
on sc
to user1
with grant option;
把對表sc和表student的全部操作權授給user1和user2
grant all privileges[給予所有的許可權]
on student,sc
to user1,user2;
把對表student的查詢許可權授權給所有資料庫用戶
grant select
on student
to public;
對象 對象類型 操作許可權
------------------------
基本表,列 TABLE select,insert,update,delete,alter,index,all privileges
視圖 TABLE select,insert,update,delete,all privileges
資料庫 Database create table
-----------------------
2.收回許可權
revoke update,select
on student
to user1,user2;
收回user1,user2對student查看和修改許可權
------
revoke insert(c_no,c_name)
on sc
from user1;
收回user1對sc表c_no,c_name的插入許可權和許可權的授予權
------
revoke select
on student
from public;
收回所有用戶對student查詢許可權

❷ sql題目,關於圖書信息管理系統

在此圖書館管理系統中,使用到了一個重要的連接,即與資料庫Accesss相連。資料庫中存有圖書館中所信息,包括讀者信息、管理員資料、借閱與退還記錄。所有與管理有關的數據皆在其中,是保證系統能夠正常實現各種功能的一架橋。

1、 資料庫需求分析

⒈Admi表,即管理員表,記錄了用戶名和密碼。

⒉Admirz表,即管理日誌表,記錄了書號、書名、圖書證號、借/還、操作日期、已付款額。

⒊book表,即圖書表,記錄了書號、書名、作者、出版社、入庫時間、是否借出、價格。

⒋borrowbook表,即借閱表,記錄了圖書證號、書號、借閱日期、應還日期。

⒌person表,即讀者表,記錄了圖書證號、姓名、性別、系別、班級。

2 、資料庫表的設計

⒈Admi表

表中記錄了可以使管理員進入該系統的用戶名及密碼,如表1所示。

表5借閱表

❸ SQL 圖書管理系統的查詢語句

1. 求總藏書量、藏書總金額,總庫存冊數、最高價、最低價。
select count(圖書編號) as 總藏書量,
sum(定價) as 藏書總金額,
sum(實際數量) as 總庫存冊數,
max(定價) as 最高價,
min(定價) as 最低價
from 圖書卡片
go
2. 列出藏書在10本以上的書(書名、作者、出版社、年份)。
select 圖書名稱,作者姓名,出版社,出版日期
from 圖書卡片
group by 圖書編號 having(coung(1)>10)
order by 圖書名稱
go
3. 哪些出版社的藏書種類數超過100種。
select 出版社 as '藏書種類數超過100種的出版社'
from 圖書卡片
group by 出版社 having(count(類別)>100)
order by 出版社
go
4. 目前實際已借出多少冊書?
select sum(借出數量) as '借出數量'
from 圖書卡片
go
5. 年份最久遠的書。
select top 1 with ties 圖書名稱 from 圖書卡片
order by 出版日期
go
6. 「資料庫系統原理教程,王珊編,清華大學出版社,1998年出版」還有幾本?
select count(1) from 圖書卡片
where concaints(摘要,'"資料庫系統原理教程,王珊編,清華大學出版社,1998年出版"')
go
7. 哪一年的圖書最多?
select top 1 with ties convert(substring(出版日期,1,4)) as 年份,count(1) as '圖書數量'
from 圖書卡片
group by 出版日期
order by 圖書數量 desc
go
8. 哪本借書證未歸還的圖書最多?
select top 1 with ties A.讀者編號,count(1) as '借書數量'
from 圖書卡片 A,借閱 B
where A.圖書編號=B.圖書編號
group by A.讀者編號
order by 借書數量 desc
go
9、平均每本借書證的借書冊數。
select avg(借閱數量) as '平均每本借書證的借書冊數'
from 借閱
go

10.哪個系的同學平均借書冊數最多?
select top 1 with ties A.工作單位,avg(借閱數量) as '平均借閱數量'
from 讀者 A,借閱 B
where A.讀者編號=B.讀者編號
group by A.工作單位
order by 平均借閱數量' desc
go

11. 最近兩年都未被借過的書。
select 圖書名稱
from 圖書卡片
where 圖書編號 in(select 圖書編號 from 借閱 where datediff(year,借閱日期,getdate())>2)
go
12. 列出那些借了圖書逾期未歸還的借書證號和圖書名。
select A.讀者編號 as '借書證號',B.圖書名稱
from 讀者 as A inner join 圖書卡片 as B on A.圖書編號=B.圖書編號
where A.應歸還日期<getdate() and A.實際歸還日期 is null
go
13.今年未借過書的借書證。
select 讀者編號
from 讀者
where 讀者編號 not in(select 讀者編號
from 讀者
where datediff(year,借閱日期,getdate())=0)
go

14. 今年那種書出借最多?
select top 1 with ties A.類別,count(1) as '借出數量'
from 圖書卡片 A,借閱 B
where datediff(year,B.借閱日期,getdate())=0
group by A.類別
order by 借出數量' desc
go

❹ SQL資料庫圖書館管理系統求代碼!急用!

use
資料庫名稱(db)
go
--讀者表
create
table
zhe
(
id
int
identity(1,1),
numid
varchar(20)
primary
key,
--主鍵
dname
varchar(20),
post
varchar(20),
dept
varchar(20)
)
--圖書表
create
table
books
(
id
int
identity(1,1)
primary
key,
bnum
varchar(20)
foreign
key
references
zhe(numid),
--外鍵
bname
varchar(20),
bauthor
varchar(20),
bpress
varchar(50),
bprice
decimal,
btype
varchar(10)
)
--借閱記錄
create
table
lendrecord
(
id
int
identity(1,1),
lbnum
varchar(20)
foreign
key
references
zhe(numid),
--外鍵
ldate
datetime,
yhdate
datetime,
redate
datetime
)

❺ 圖書管理系統借書還書怎麼做 SQL

有一圖書資料基本表,表中有一個欄位設計為是否已經在圖書管,
借出有一個數據記錄表 記錄借出數據,插入數據時更新該書的是否在圖書館的標志為不為圖書館
還書有一個數據記錄表,記錄還書的數據,插入數據時更新該書的是否在圖書館的標志為在圖書館

❻ 圖書管理系統作業之SQL

1 use SISO
create table BORROW
(
CNO int NOT NULL,
BNO int NOT NULL,
RDATE datetime
) GO

ALTER TABLE BORROW
ADD CONSTRAINT PK_CNO PRIMARY KEY(CNO) ALTER TABLE BORROW
ADD CONSTRAINT UQ_CNO UNIQUE KEY(CNO)
GO

2 select CNO as 借書卡號,count(*) as 所借圖書冊數
from BORROW
group by CNO
having count(*)>5

3 select NAME,CLASS from CARD a,BOOKS b,BORROW c
where a.CNO=c.CNO and b.BNO=c.BNO and b.BNAME=『水滸』

4 select CNO,BNO,RDATE from BORROW
where RDATE<getdate() and RETRUN=0

5 select BNO,BNAME,AUTHOR from BOOKS
where BNAME like 『%網路%』

6 select top 1 BNAME,AUTHOR from BOOKS
order by PRICE desc

7 select CNO from BORROW
where BNO in
(select BNO FROM BOOKS
WHERE BNAME LIKE 『%計算方法%』and BNAME NOT LIKE『%計算方法習題集%』)
order by CNO DESC

8 UPDATE BORROW
SET RDATE=RDATE+7
WHERE CLASS IN
(SELECT CLASS FROM CARD
WHERE CLASS=『C01』)

9 delete BNO FROM BOOKS
WHERE BNO NOT IN
(SELECT BNO FROM BORROW)

10 SELCET BNAME,AUTHOR,PRICE
FROM BOOKS
WHERE BNAME=『%__%』

10 creste clustered index IND_Books_BName on Books(BName)

12 Create view v_new as
select NAME FROM CARD
WHERE CLASS=『C01'
SELECT BNAME FROM BOOKS
WHERE BNO IN
(SELECT BNO FROM BORROW
WHERE CNO IN
(SELECT CNO FROM CARD
WHERE CLASS=『C01』))
GO

13 select CNO from Borrow
where BNO in (select BNO,count(*) from Books where BName in(『計算方法',『組合數學'))
having count(*)=2
order by CNO

13 SELECT CNO FROM BORROW
WHERE BNO IN
(SELECT BNO FROM BOOKS
WHERE BNAME=『計算方法』 and BNAME=『組合數學』)
order by CNO

14 alter table BOOKS
add constraint PK_BNO primary key(BNO)

15.a alter table CARD
alter column NAME varchar(10)

b alter table CARD
add 系名 varchar(20)

❼ 如何用DELPHI 調用SQL存儲過程(以圖書借閱系統為例)

用Dataset
控制項,設置CommandText屬性為執行存儲過程的SQL語句,然後執行打開就行了