--导入sql 语句
01.cmd
02.sqlplus 用户名/密码
03.@ sql语句的地址
--01.查询老师的姓名和对应导师的姓名 自连接
select t1.tname as 老师姓名,t2.tname as 导师的姓名
from teacher t1,teacher t2
where t1.mgrno=t2.tno
--02. 查询老师姓名,部门名称和部门编号
select tname,dname,dept.deptno
from teacher,dept
where teacher.deptno=dept.deptno
--03.查询 姓 王 的老师信息 _代表一个字符 %
select * from teacher
where tname like '王%'
select * from teacher
where tname like '王_'
--04.查询陈老师和王老师的薪水和姓名
select tname,sal from teacher
where tname like '陈%' or tname like '王%'
--05.给所有姓王的老师 增加薪水
update teacher set sal=sal+20000
where tname like '王%'
--06.删除所有的teacher表中的数据 ! 表结构还在
delete from teacher
--07.删除表! 包含数据和表结构
drop table dept
--08.回忆外键约束 建立在从表中
alter table teacher add constraint fk_teacher_deptno
foreign key(deptno)
references dept(deptno)
--09.查询女姓老师的编号和姓名
select tno,tname from teacher
where gendar='女'
--10.查询薪水在10K-20k之间的老师编号,姓名 薪水
select tno,tname,sal from teacher
where sal between 10000 and 20000
--11.查询职位是 讲师或者研发的老师姓名 按照薪水的降序排列
select tname,sal,job from teacher
where job in('讲师','研发')
order by sal desc
--12.查询部门所有数据的insert语句
select 'insert into dept values('||deptno||','''||dname||''','''||loc||''');'
from dept
-- 创建stuinfo表
create table stuInfo(
stuNo number(4) not null,
stuName nvarchar2(20) not null,
stuAge number(3) not null
)
-- 新增测试数据
insert into stuInfo values (1,'小黑1',10);
insert into stuInfo values (2,'小黑2',20);
insert into stuInfo values (3,'小黑3',30);
insert into stuInfo values (4,'小黑4',40);
insert into stuInfo values (5,'小黑1',50);
insert into stuInfo values (6,'小黑1',60);
-- 选择无重复的行 名字重复 显示一条
select * from stuInfo for update -- 查询所有
select distinct stuName from stuInfo
--按照姓名进行升序,如果姓名相同按照年龄的降序排列
select distinct stuName,stuAge from stuInfo
order by stuName,stuAge desc
--使用列别名 如果有特殊字符 必须使用双引号
select stuName "姓 名",stuAge as "年龄"
from stuInfo
--利用现有的表创建新表
create table student as select stuName from stuInfo
-- 查看表中行数
select count(*) from stuInfo
select count(1) from stuInfo -- 推荐使用
-- 取出不重复数据的记录
select stuName,stuAge from stuInfo
group by stuName,stuAge
having(count(stuName||stuAge)=1)
-- 删除stuName,stuAge列重复的行,保留一行
-- 01. 查询到重复的记录 保留一条!
select MAX(rowid) from stuInfo
group by stuName,stuAge
having(count(stuName||stuAge)>1)
-- 02.查询不重复的数据
select MAX(rowid) from stuInfo
group by stuName,stuAge
having(count(stuName||stuAge)=1)
-- 03.拼接 01 02
delete from stuInfo
where rowid not in
(
select MAX(rowid) from stuInfo
group by stuName,stuAge
having(count(stuName||stuAge)>1)
union
select MAX(rowid) from stuInfo
group by stuName,stuAge
having(count(stuName||stuAge)=1)
)
-- 事务控制 事务的特性 ACID 事务隔离级别
insert into stuInfo values(100,'小白1',100);
insert into stuInfo values(200,'小白2',200);
savepoint haha; -- 设置回滚点
insert into stuInfo values(300,'小白3',300);
rollback to savepoint haha; --回到 指定的回滚点
select