背景:
匯整一下自己學(xué)習(xí)數(shù)據(jù)庫過程中常見的題目及語句。
一.實例分析題
?
?二.簡單SQL查詢:
1):統(tǒng)計每個部門員工的數(shù)目
select dept,count(*) from employee group by dept;
2):統(tǒng)計每個部門員工的數(shù)目大于一個的記錄
select dept,count(*) from employee group by dept having count(*)>1;
3):統(tǒng)計工資超過1200的員工所在部門的名稱
select e.first_name,salary,d.name
from s_emp e, s_dept d
where e.dept_id = d.id
and salary > 1200;
4):查詢哪個部門沒有員工
select e.empno, d.deptno
from emp e, dept d
where e.deptno(+) = d.deptno
and e.deptno is null;
三.復(fù)雜SQL查詢
有3個表(15分鐘):(SQL)
Student 學(xué)生表 (學(xué)號,姓名,性別,年齡,組織部門)
Course 課程表 (編號,課程名稱)
Sc 選課表 (學(xué)號,課程編號,成績)
表結(jié)構(gòu)如下:
?
1) 寫一個SQL語句,查詢選修了’JAVA’的學(xué)生學(xué)號和姓名(3分鐘)
答:SQL語句如下:
select stu.sno, stu.sname
from student stu, course c, sc
where stu.sno = sc.sno and sc.cno = c.cno and c.cname=’JAVA’;
2) 寫一個SQL語句,查詢’a’同學(xué)選修了的課程名字(3分鐘)
答:SQL語句如下:
select stu.sname, c.cname
from student stu, course c, sc
where stu.sno = sc.sno and sc.cno = c.cno and stu.sname = ’a’;
3) 寫一個SQL語句,查詢選修了5門課程的學(xué)生學(xué)號和姓名(9分鐘)
答:SQL語句如下:
select stu.sno, stu.sname from student stu
where (select count(*) from sc where sno=stu.sno) = 5;
三. 在SQL中刪除重復(fù)記錄的方法:(用到rowid (oracle偽列))
??? 1)通過建立臨時表來實現(xiàn)
??????? SQL>create table temp_emp as (select distinct * from employee)?
??????? SQL>truncate table employee; (清空employee表的數(shù)據(jù))
??????? SQL>rename temp_emp to employee; (再將表重命名)
??? 2)通過使用rowid來實現(xiàn)。
??????? SQL>delete from employee where rowid not in (
??????? select max(t1.rowid) from employee t1 group by
??????? t1.emp_id,t1.emp_name,t1.salary);
??????? --這里用min(rowid)也可以。
四. TOP N問題:查出一張表的前2條數(shù)據(jù)(用到rownum (oracle偽列))
四. TOP N問題:查出一張表的前2條數(shù)據(jù)(用到rownum (oracle偽列))
??? 答:--rownum只能使用<=或<的關(guān)系比較運算符
??? select * from s_emp where rownum <= 2;
??? --查詢公司工資最高的3個人
??? /*select * from emp
??? where rownum <= 3
??? order by sal desc;*/ 錯誤的
??? select * from (select * from emp order by sal desc) where rownum <= 3;
五.分頁查詢:
? ? --查詢第1-5條記錄
? ? select * from (select rownum num, s_emp.* from s_emp)
? ? where num >=1 and num <= 5;
??? --按工資排序,五條一頁,查找第二頁
?? select salary,first_name
???????? from( select s.*, rownum rm
from (select *
????????????????? from s_emp
????????????????? order by salary d
????????? ) s
?????? )
??? where rm between 6 and 10
四、簡述題:
1.怎樣創(chuàng)建一個視圖,視圖的好處, 視圖可以控制權(quán)限嗎?
答案:
Create view <視圖名> as <select 語句>
視圖名在數(shù)據(jù)庫中必須是唯一的,不能與其他表或視圖同名
指定創(chuàng)建視圖的語句,可以查詢多個基礎(chǔ)表或源視圖
1.增強保障數(shù)據(jù)安全性
2.組裝數(shù)據(jù) 數(shù)據(jù)整合
3.封裝複雜查詢 數(shù)據(jù)的透明性
4.提供建模模型
5.提高響應(yīng)速度
視圖只是一個虛表 用戶有只讀權(quán)限 沒有控制權(quán)限
2.怎樣創(chuàng)建一個一個索引,索引使用的原則,有什么優(yōu)點和缺點?
Create index idx_表名_列名 on 表名(列名)
原則 :1.小數(shù)據(jù)量的表不宜使用索引
2.頻繁使用插入,修改,刪除等DML操作的數(shù)據(jù)表不宜使用索引
優(yōu)點:利用索引提供數(shù)據(jù)庫性能
缺點:添加刪除修改數(shù)據(jù)對索引的影響都是不可避免地形成了對存儲空間的浪費
3. 怎樣將一個舊數(shù)據(jù)庫數(shù)據(jù)移到一個新的數(shù)據(jù)庫
創(chuàng)建一個臨時數(shù)據(jù)庫
先把舊的數(shù)據(jù)庫遷移過去,再SQL導(dǎo)入數(shù)據(jù) insert into ?select from 然後再把舊的數(shù)據(jù)庫刪除就好了
4. 怎樣創(chuàng)建一個存儲過程,有什么好處?
5. 說說你了解的oracle中的經(jīng)常使用到得函數(shù)
字符函數(shù):
Upper()函數(shù) |
Lower()函數(shù) |
Initcap()函數(shù) |
Substr()函數(shù) |
Length()函數(shù) |
Concat()函數(shù) |
Instr()函數(shù) |
Trim()函數(shù) |
Itrim()函數(shù) |
Rtrim()函數(shù) |
Translate()函數(shù) |
轉(zhuǎn)換函數(shù) TO_CHAR |
數(shù)字函數(shù):
Abs()函數(shù) |
|
Round()函數(shù) |
|
Ceil()函數(shù) |
|
Floor()函數(shù) |
|
Mod()函數(shù) |
|
Sign()函數(shù) |
|
Sqrt()函數(shù) |
|
Power()函數(shù) |
|
Trunc()函數(shù) |
|
轉(zhuǎn)換函數(shù) TO_NUMBER |
?日期函數(shù):
Sysdate()函數(shù) |
Add_months()函數(shù) |
Last_day()函數(shù) |
Next_day()函數(shù) |
Months_between()函數(shù) |
Extract()函數(shù) |
轉(zhuǎn)換函數(shù) TO_DATE |
其它函數(shù):
Decode()函數(shù) |
Nvl()函數(shù) |
Cast()函數(shù) |
?聚合函數(shù)/組函數(shù):
AVG()函數(shù) |
SUM()函數(shù) |
MAX()函數(shù) |
MIN()函數(shù) |
COUNT()函數(shù) |
6. Oracle中字符串用什么符號鏈接?
Oracle 字符串連接使用“||”進行字符串拼接
單引號表示日期或字符串
雙引號表示別名
7.簡要說一下什么是內(nèi)連接、左連接、右連接,并寫出連接的sql。
答案:文章來源:http://www.zghlxwxcb.cn/news/detail-420209.html
(1)文章來源地址http://www.zghlxwxcb.cn/news/detail-420209.html
到了這里,關(guān)于數(shù)據(jù)庫學(xué)習(xí)-常用的SQL語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!