面试题: 数据库 真实面试题已看1 操作语句 存储过程 挺好 sql语句练习 有用
今天到某公司筆試,數據庫考的比較多,但是說老實話,考的也比較基礎。現在趁回憶得起來,將數據庫知識簡單整理如下:
?一、建表指令
?
比如創建一個學生表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
?
?
?
?
三、建立與刪除索引
?
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??age??From??student
?
?
?
六、常用條件表達式運算符IN,NOT IN;between,and,not like.
?
在上面的Student表和enrolls表中,查詢成績在80分以上的的學號和姓名。 ? 成績在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,’計算機’)
? insert ?多個value ?這樣執行效率要 小于 values()
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。
十三、C的內容
主要考C的內存分配,for循環的局部性等基礎知識,主要是林銳那本高質量C/C++里面后面的習題。
十四、C++
基本不會,因為應聘的是C++,也因為這個,被筆試給鄙視掉了
轉載于:https://www.cnblogs.com/shan1393/p/9117775.html
總結
以上是生活随笔為你收集整理的面试题: 数据库 真实面试题已看1 操作语句 存储过程 挺好 sql语句练习 有用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用中文传话游戏理解 RNN
- 下一篇: ES6 数值