標籤:
今天到某公司筆試,資料庫考的比較多,但是說老實話,考的也比較基礎。現在趁回憶得起來,將資料庫知識簡單整理如下:
一、建表指令
比如建立一個學生表student,它由學號Sno,姓名Sname,性別Ssex,年齡Sage,所在系Sdept五個屬性群組成。其中學號不可為空,值是唯一的,並且姓名取值也唯一。
CREATE TABLE Student
(Sno CHAR(10) NOT NULL UNIQUE,
Sname CHAR(20) UNIQUE,
Ssex char(2),
Sage INT,
Sdept char(15)
)
二、增加列、刪除列、修改列
1、增加列Stel
Alter table Student ADD Stel Char(12)
2、刪除列Stel
Alter Table Student DROP COLUMN Stel
3、修改列Sdept
ALTER Table Student ALTER COLUMN Sdept CHAR(8) Sno CHAR(8)
三、建立與刪除索引
1、在表Student中建立按年齡Sage升序建立索引
建立索引:Create INDEX S_INDEX ON Student(Sage)
2、刪除索引
DROP INDEX Student S_INDEX
四、串連查詢。
在對錶進行串連時,最常用的串連條件是等值串連,也就是使兩個表中對應列相等所進行的串連,通常一個列是所在表的主鍵,另一個列是所在表的主鍵或外鍵,只有這樣的等值串連才有意義。
比如說有兩張表分別為courses表(cno,cname,credit)和enrolls表(sno,cno,grade)。
查詢所有學生所選的課程名稱:
Select sno, enrolls.cno, cname, grade from enrolls, courses WHERE enrolls.cno = courses.cno
五、單表查詢時,去掉重複行
比如查詢Student表中所有系的名稱,去掉重複行
Select distinct department From student
六、常用條件運算式運算子IN,NOT IN;between,and,not like.
在上面的Student表和enrolls表中,查詢成績在80分以上的的學號和姓名。
Select sno, sname From Student WHERE sno IN (select sno FROM enrolls Where grade > 80)
上面的SQL語句也是巢狀查詢。
七、有個需用到having字句的,具體題目忘了。
Having子句,篩選出只滿足指定條件的組。注意的是,該子句只能同GROUP BY子句配合使用,篩選出合格分組資訊。
類似題目如下:查詢Student表中每個系有三個以上的學生的所在系。
Select department From Student Group BY department Having COUNT(*) >= 3。
八、插入資料
1、單行插入,比如在上面的Student表中插入學生王強的資訊。
Insert into Student(Sno,Sname,Ssex,Sage,Sdept)
Values(‘2005012’,’王強’,’男’,18,’電腦’)
2、多行插入,比如每個學生都要修作業系統c2這門課,將選課資訊加入表enrolls中。
INSERT INTTO enrolls(sno,cno)
SELECT Sno, ‘c2’ FROM Student
九、修改資料
比如給enrolls這個表中選修了作業系統這門課的學生的成績修改為60分。
UPDATE enrolls
SET grade = 60
WHER cno IN
(SELECT cno FROM courses WHERE cname = ‘作業系統’)
十、刪除資料
比如刪除Student表中年齡在20歲以上的學生
Delete from Student where Sage > 20
刪除整張表的資料 delete from Student
十一、預存程序(兩個參數,根據輸入的參數查詢好資料後返回給輸出的參數)
比如建立一個預存程序procGetDepName,它帶有1個輸入參數@sno,還帶有1個輸出參數@DepartmentName,功能:根據輸入的學號,找到該生所在的院系,輸出院系名稱。
create procedure procGetDepName
@sno nvarchar(10),
@DepartmentName nvarchar(20) output
as
begin
select @DepartmentName = DepartmentName
from Department d, Student s
where d.DepartmentID = s.DepartmentID and
s.sno = @sno
end
十二、資料庫常用資料類型和作用。
第一大類:整數資料
bit:bit資料類型代表0,1或NULL,就是表示true,false.佔用1byte.
int:以4個位元組來儲存正負數。可儲存範圍為:-2^31至2^31-1。
smallint:以2個位元組來儲存正負數。儲存範圍為:-2^15至2^15-1。
tinyint: 是最小的整數類型,僅用1位元組,範圍:0至此^8-1。
第二大類:精確數值資料
numeric:表示的數字可以達到38位,儲存資料時所用的位元組數目會隨著使用權用位元的多少變化。
decimal:和numeric差不多。
第三大類:近似浮點數值資料
float:用8個位元組來儲存資料.最多可為53位。範圍為:-1.79E+308至1.79E+308。
real:位元為24,用4個位元組,數字範圍:-3.04E+38至3.04E+38。
第四大類:日期時間資料
datatime:表示時間範圍可以表示從1753/1/1至9999/12/31,時間可以表示到3.33/1000秒.使用8個位元組。
smalldatetime:表示時間範圍可以表示從1900/1/1至2079/12/31,使用4個位元組。
第五大類:字串資料
char:長度是設定的,不可變的。最短為1位元組,最長為8000個位元組.不足的長度會用空白補上。
varchar:長度是可變的。最短為1位元組,最長為8000個位元組,尾部的空白會去掉。
text:長寬也是設定的,最長可以存放2G的資料。
第六大類:Unincode字串資料
nchar:長度是設定的,最短為1位元組,最長為4000個位元組。不足的長度會用空白補上,儲存一個字元需要2個位元組。
nvarchar:長度是設定的,可變的。最短為1位元組,最長為4000個位元組.尾部的空白會去掉。儲存一個字元需要2個位元組。
ntext:長度是設定的,最短為1位元組,最長為2G.尾部的空白會去掉,儲存一個字元需要2個位元組。
第七大類:貨幣資料類型
money:記錄金額範圍為:-92233720368577.5808至92233720368577.5807.需要8 個位元組。
smallmoney:記錄金額範圍為:-214748.3648至214748.36487.需要4個位元組。
第八大類:標記資料
timestamp:該資料類型在每一個表中是唯一的!當表中的一個記錄更改時,該記錄的timestamp欄位會自動更新.
uniqueidentifier:用於識別資料庫裡面許多個表的唯一一個記錄.
第九大類:二進位碼字串資料
binary:固定長度的二進位碼字串欄位,最短為1,最長為8000。
varbinary:與binary差異為資料尾部是00時,varbinary會將其去掉。
image:為可變長度的二進位碼字串,最長2G。
asp.net 資料庫面試題(基礎)