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