SQL> --切換用戶
SQL> connect practice/123
已連接。
SQL> --查詢學生表信息
SQL> select * from stuInfo;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
0 王五 15 5.9876E+15 5
2 王五 15 5.9876E+15 5
3 王五 15 5.9876E+15 5
4 王五 15 5.9876E+15 5
5 王五 15 5.9876E+15 5
6 王五 15 5.9876E+15 5
7 王五 15 5.9876E+15 5
8 王五 15 5.9876E+15 5
9 王五 15 5.9876E+15 5
10 王五 15 5.9876E+15 5
11 王五 15 5.9876E+15 5
12 王五 15 5.9876E+15 5
13 王五 15 5.9876E+15 5
14 王五 15 5.9876E+15 5
已選擇14行。
SQL> --使用ronum從學生表中提取10條記錄並顯示序號
SQL> select stuInfo.* ,rownum from stuInfo where rownum<11;
STUNO STUNAME STUAGE STUID STUSEAAT ROWNUM
------ -------------------- ---------- ---------- ---------- ----------
0 王五 15 5.9876E+15 5 1
2 王五 15 5.9876E+15 5 2
3 王五 15 5.9876E+15 5 3
4 王五 15 5.9876E+15 5 4
5 王五 15 5.9876E+15 5 5
6 王五 15 5.9876E+15 5 6
7 王五 15 5.9876E+15 5 7
8 王五 15 5.9876E+15 5 8
9 王五 15 5.9876E+15 5 9
10 王五 15 5.9876E+15 5 10
已選擇10行。
SQL> --往學生表中插入一行記錄
SQL> insert into stuInfo values('15','李四',12,15665544444,6);
已創建 1 行。
SQL> --顯示無重復的行
SQL> select distinct stuname from stuInfo;
STUNAME
--------------------
王五
李四
SQL> --按照姓名升序排列,如果姓名相同則按照學號降序排列
SQL> select stuInfo.* from stuInfo order by stuname asc,stuno desc;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
15 李四 12 1.5666E+10 6
9 王五 15 5.9876E+15 5
8 王五 15 5.9876E+15 5
7 王五 15 5.9876E+15 5
6 王五 15 5.9876E+15 5
5 王五 15 5.9876E+15 5
4 王五 15 5.9876E+15 5
3 王五 15 5.9876E+15 5
2 王五 15 5.9876E+15 5
14 王五 15 5.9876E+15 5
13 王五 15 5.9876E+15 5
12 王五 15 5.9876E+15 5
11 王五 15 5.9876E+15 5
10 王五 15 5.9876E+15 5
0 王五 15 5.9876E+15 5
已選擇15行。
SQL> --按照學號降序排列
SQL> select stuInfo.* from stuInfo order by stuno desc;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
9 王五 15 5.9876E+15 5
8 王五 15 5.9876E+15 5
7 王五 15 5.9876E+15 5
6 王五 15 5.9876E+15 5
5 王五 15 5.9876E+15 5
4 王五 15 5.9876E+15 5
3 王五 15 5.9876E+15 5
2 王五 15 5.9876E+15 5
15 李四 12 1.5666E+10 6
14 王五 15 5.9876E+15 5
13 王五 15 5.9876E+15 5
12 王五 15 5.9876E+15 5
11 王五 15 5.9876E+15 5
10 王五 15 5.9876E+15 5
0 王五 15 5.9876E+15 5
已選擇15行。
SQL> --查詢學號,使用別名
SQL> select stuno as 姓名 from stuInfo;
姓名
------
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
已選擇15行。
SQL> select stuno as "學 號" from stuInfo;
學 號
------
0
2
3
4
5
6
7
8
9
10
11
12
13
14
15
已選擇15行。
SQL> --創建一個新的表
SQL> create table stuInfo2
2 as
3 select stuInfo.* from stuInfo;
表已創建。
SQL> --查詢創建的新表
SQL> select stuInfo2.* from stuInfo2;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
0 王五 15 5.9876E+15 5
2 王五 15 5.9876E+15 5
3 王五 15 5.9876E+15 5
4 王五 15 5.9876E+15 5
5 王五 15 5.9876E+15 5
6 王五 15 5.9876E+15 5
7 王五 15 5.9876E+15 5
8 王五 15 5.9876E+15 5
9 王五 15 5.9876E+15 5
10 王五 15 5.9876E+15 5
11 王五 15 5.9876E+15 5
12 王五 15 5.9876E+15 5
13 王五 15 5.9876E+15 5
14 王五 15 5.9876E+15 5
15 李四 12 1.5666E+10 6
已選擇15行。
SQL> --刪除表stuInfo3
SQL> drop table stuInfo3;
表已刪除。
SQL> --創建只有表結構的表
SQL> create table stuInfo3
2 as
3 select stuInfo.* from stuInfo
4 where 1=2;
表已創建。
SQL> --查看
SQL> select stuInfo3.* from stuInfo3;
未選定行
SQL> --查看stuInfo表中的數據
SQL> select stuInfo.* from stuInfo;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
0 王五 15 5.9876E+15 5
2 王五 15 5.9876E+15 5
3 王五 15 5.9876E+15 5
4 王五 15 5.9876E+15 5
5 王五 15 5.9876E+15 5
6 王五 15 5.9876E+15 5
7 王五 15 5.9876E+15 5
8 王五 15 5.9876E+15 5
9 王五 15 5.9876E+15 5
10 王五 15 5.9876E+15 5
11 王五 15 5.9876E+15 5
12 王五 15 5.9876E+15 5
13 王五 15 5.9876E+15 5
14 王五 15 5.9876E+15 5
15 李四 12 1.5666E+10 6
已選擇15行。
SQL> --修改一行記錄
SQL> update stuInfo set stuname='哈哈' where stuno=13;
已更新 1 行。
SQL> --查詢
SQL> select stuInfo.* from stuInfo;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
0 王五 15 5.9876E+15 5
2 王五 15 5.9876E+15 5
3 王五 15 5.9876E+15 5
4 王五 15 5.9876E+15 5
5 王五 15 5.9876E+15 5
6 王五 15 5.9876E+15 5
7 王五 15 5.9876E+15 5
8 王五 15 5.9876E+15 5
9 王五 15 5.9876E+15 5
10 王五 15 5.9876E+15 5
11 王五 15 5.9876E+15 5
12 王五 15 5.9876E+15 5
13 哈哈 15 5.9876E+15 5
14 王五 15 5.9876E+15 5
15 李四 12 1.5666E+10 6
已選擇15行。
SQL> --查詢stuname列不存在重復數據的記錄
SQL> select stuname from stuInfo group by stuname having(count(stuname)<2);
STUNAME
--------------------
李四
哈哈
SQL> --刪除名字重復的記錄保留學號最大的那個
SQL> delete stuInfo where stuno not in(select max(stuno) from stuInfo group by stuname);
已刪除12行。
SQL> --查看數據
SQL> select stuInfo.* from stuInfo;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
9 王五 15 5.9876E+15 5
13 哈哈 15 5.9876E+15 5
15 李四 12 1.5666E+10 6
SQL> --插入測試數據
SQL> insert into stuInfo values('1','66',10,5566554666,5);
已創建 1 行。
SQL> select stuInfo.* from stuInfo;
STUNO STUNAME STUAGE STUID STUSEAAT
------ -------------------- ---------- ---------- ----------
9 王五 15 5.9876E+15 5
13 哈哈 15 5.9876E+15 5
15 李四 12 1.5666E+10 6
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
1 66 10 5566554666 5
已選擇13行。
SQL> --查看自然順序的第五條記錄
SQL> select * from (select stuInfo.* ,rownum as rn from stuInfo )where rn=5;
STUNO STUNAME STUAGE STUID STUSEAAT RN
------ -------------------- ---------- ---------- ---------- ----------
1 66 10 5566554666 5 5
SQL> --嵌套分頁,查詢第5到第八條的數據
SQL> --兩層嵌套分頁
SQL> select * from (select stuInfo.*,rownum as rn from stuInfo where rownum<=8) where rn >=5;
STUNO STUNAME STUAGE STUID STUSEAAT RN
------ -------------------- ---------- ---------- ---------- ----------
1 66 10 5566554666 5 5
1 66 10 5566554666 5 6
1 66 10 5566554666 5 7
1 66 10 5566554666 5 8
SQL> --三層嵌套
SQL> select * from (select stu.* ,rownum as rn from (select stuInfo.* from stuInfo) stu where rownum<=8) where rn>=5;
STUNO STUNAME STUAGE STUID STUSEAAT RN
------ -------------------- ---------- ---------- ---------- ----------
1 66 10 5566554666 5 5
1 66 10 5566554666 5 6
1 66 10 5566554666 5 7
1 66 10 5566554666 5 8
SQL> spool off