sql高手請進高分請你做3道簡單的題目

時間 2021-10-14 19:03:23

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...