1樓:
問題一:要求不清晰,借書和還書這個要求不明確問題二:
select b.books_name,c.user_namefrom lease a, books b, user cwhere a.
books_id=b.books_id and a.user_id=c.
user_id
and loan_date between '2006-07-02' and '2007-07-05'
問題三:
select b.books_name,c.user_namefrom lease a, books b, user cwhere a.
books_id=b.books_id and a.user_id=c.
user_id
and year(loan_date) = '2006'
2樓:
資料庫是sql server?db2,mysql。。。。。。。。
3樓:雲中漫步
恩,對阿。日期在不同的資料庫都不一樣,最麻煩了在哪個資料庫?
4樓:匿名使用者
我也想幫,但我會努力的,我也在找答案.從你的題中我學到好多東西,雖然你沒有寫任何**,但我學到了.謝謝
5樓:
問題說清楚,是什麼資料庫mssql2000?mssql2005,借或還具體點。
6樓:歪鼻木熊
試著寫一寫, 給你做參考, 具體的還要你自己來寫了.
*************************====
問題一:
借書1.把圖書id和使用者id作為引數(當然還可以加入其他引數,比如借書扣多少錢等)
2.判斷**是否存在,是否已被借出
3.借出後,歸還日期置為null表示尚未歸還
--------------------------
create procedure loanbook
@ibooksid int,
@iuserid int
asset nocount on
/*如果圖書不存在或者已被借出,返回0*/
if not exists(select * from books where books_id=@ibooksid and books_if=0)
return (0)
/*開始借書操作,成功後返回1(判斷租借表中是否已有記錄,有則更新該記錄,無則新增)*/
/*如果需要,這裡還可以加入其他語句,比如扣錢等,所扣的錢數也可作為引數傳入,自己視情況調整*/
update books set books_if=1 where books_id=@ibooksid
if exists(select * from lease where books_id=@ibooksid and user_id=@iuserid)
begin
update lease set loan_date=getdate(),return_date=null where books_id=@ibooksid and user_id=@iuserid
endelse
begin
insert into lease (books_id,user_id,loan_date,return_date) values (@ibooksid,@iuserid,getdate(),null)
endreturn(1)
go-----------------------
還書由於提供的租借表只有圖書id和使用者id可作關鍵字,故仍以這兩個作為引數,其實最好是另設個lease_id, 這樣同一個人多次借同一本書時,都可以完全記錄下來,目前這種結構只能儲存最新的狀態.
-----------------------------
create procedure returnbook
@ibooksid int,
@iuserid int
asset nocount on
/*如果租借表中不存在使用者對該書的租借記錄或已歸還,返回0*/
if not exists(select * from lease where books_id=@ibooksid and user_id=@iuserid and return_date is null)
return (0)
/*開始還書操作*/
update books set books_if=0 where books_id=@ibooksid
update lease set return_date=getdate where books_id=@ibooksid and user_id=@iuserid
return (1)
go-----------------------------
問題二:
/*注意這裡的日期上限用了2007-7-6,就是7月6日零點之前,這樣才能包括2007-7-5
select b.books_name,c.user_name from lease a,books b,user c where b.
books_id=a.books_id and c.user_id=a.
user_id and loan_date>='2006-7-2' and loan_date<'2007-7-6'
問題三:
select b.books_name,c.user_name from lease a,books b,user c where b.
books_id=a.books_id and c.user_id=a.
user_id and year(loan_date)='2006'
高分求助,sql 注入,高手請進
7樓:低糖深紅晶片兒
sql注入就是利用抄sql的語言特徵來使sql條件無bai效而已。
舉個du例子:
你登入檢驗的
zhisql**是:
select * form user_db where id='你輸入的id' and pas ='你輸入的密碼';
你知道一
dao個人的id但是不知道他的密碼,可是你很想用他的密碼來登入,怎麼辦呢?你可以輸入他的id,比如是0001。之後你再密碼那一欄填寫: aa' or 'a'='a
這樣你得到的sql語句就是這樣的了:
select * form user_db where id='0001' and pas ='aa' or 'a'='a';
雖然你寫的密碼是不符合標準的,但是條件多了一個「或者'a'='a'」,這個條件是永真的(意思就是說這個條件永遠成立),那麼你之前寫了一萬個條件只要有這麼一個條件就全白搭。這樣你就進去了。這就是最簡單的sql注入。
防止它也相當簡單,就是在對庫操作的時候禁止使用者輸入 and,or.....等等sql關鍵字就好……網上查sql防注入一大堆。
8樓:匿名使用者
那樣我感覺也不行,關鍵是你的程式中用到了sql 語句的拼接,如果都用儲存過程速度快,而且不專會出現這樣的問屬題。
但是有時候又要用到拼接,就要做一些判斷了。比如過濾一些攻擊性的字元。
比如:exec.
當然我們在做querystring的時候我們傳遞數字就行,我們在另一頁面進行驗證。呵呵。
高分求解一道sql題目 高手賜教 急啊 急啊
9樓:匿名使用者
1 select sno
from s,c,sc
where not exits
(select sno from s,c,scwhere s.sno=sc.sno and c.cno=sc.cnoand cteacher='李明')
我鬱悶啦~
高分求經驗,做服裝生意的高手請進
一般來說專賣店的利潤高點,但是投資也大自然風險也高些。外貿店有點單一,針對銷售的的物件偏少。我覺的品牌加盟店好的,投資少。風險小。只要地段合適穩賺。至於是什麼品牌你自己選了?相信你也是做這行業的人。觀察下同城的同行的大多是什麼店。要開就開不一樣的。不要做店了,搞批發好點。經營創意高手請進,高分求經營...
高分 玩3D遊戲電腦配置高手請進
你就說打算花多錢,你要不在乎錢我給你配個10萬的 完全可以達到你的要求,魔獸開3個號應該都沒問題,可用amd9650更好,主機板用微星的790gx,記憶體用宇瞻ddr800 cpu cpu amd athlon64 x2 7750 黑盒 445 主機板 技嘉 ga ma78gm s2h rev.1....
幫我做一道程式設計題高手請進,採納追加50分
include include class compare int ran void print private char str 5 compare compare char a,char b,char c,char d,char e int compare ran else break if s...