Oracle 常用SQL 语句

-- 3-1
create tablespace tablespace_test
 datafile 'F:\oracle\testdatafile_1.dbf' size 10m
 AUTOEXTEND OFF;
 
-- 3-2
CREATE TEMPORARY TABLESPACE tablespace_temp
 TEMPFILE 'F:\oracle\testtemp_1.dbf' SIZE 10m
 AUTOEXTEND OFF;
 
-- 3-3
ALTER USER system DEFAULT TABLESPACE tablespace_test;

ALTER USER system TEMPORARY TABLESPACE tablespace_temp;

-- 3-4
ALTER TABLESPACE tablespace_test
 ADD DATAFILE 'F:\oracle\test_datafile1.dbf' size 1m;
 
-- 3-5
ALTER TABLESPACE tablespace_test
 DROP DATAFILE 'F:\oracle\test_datafile1.dbf';
 
ALTER TABLESPACE tablespace_test OFFLINE;
ALTER TABLESPACE tablespace_test ONLINE;

-- 3-6
ALTER TABLESPACE tablespace_test
 RENAME TO new_tablespace;
 
-- 3-7
DROP TABLESPACE new_tablespace
 INCLUDING CONTENTS AND DATAFILES;

-- 1.创建一个名为TS_TESTBASE 的表空间,数据文件大小为5m,并且设置数据文件的最大值为10m
CREATE TABLESPACE ts_testbase
 DATAFILE 'F:\oracle\ts_datafile.dbf' SIZE 5m
 AUTOEXTEND ON MAXSIZE 10m;
 
-- 2.为ts_testbase 表空间添加一个数据文件ts_datafile1.
ALTER TABLESPACE ts_testbase
 ADD DATAFILE 'f:\oracle\ts_datafile1.dbf' SIZE 2m;
 
-- 3.将表空间的状态设置成脱机状态
ALTER TABLESPACE ts_testbase OFFLINE;

-- 4.将数据文件ts_datafile1 移除
ALTER TABLESPACE ts_testbase ONLINE;

ALTER TABLESPACE ts_testbase
 DROP DATAFILE 'f:\oracle\ts_datafile1.dbf';
 
-- 5.将表空间重命名为new_testbase.
ALTER TABLESPACE ts_testbase
 RENAME TO new_testbase;
 
-- 6.删除表空间并将数据文件一并删除
DROP TABLESPACE new_testbase
 INCLUDING CONTENTS AND DATAFILES;

// 4-2
CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20)
);

CREATE TABLE productrating1
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20)
) tablespace users;

select tablespace_name from dba_tables where table_name='productrating1';

//4-3复制表
create table new_productrating as select * from productrating;

//4-4 修改表
alter table productrating modify contents varchar2(100);

//4-5
alter table productrating modify ratingtime default sysdate;

//4-6 添加列
alter table productrating add times number;

//4-7 添加列
alter table productrating add (col1 number, col2 varchar2(10));

//4-8 删除列
alter table productrating drop column times;
//4-9
alter table productrating drop (col1, col2);

//4-10 标记
alter table productrating set unused(col1, col2);

desc productrating;

alter table productrating drop unused columns;

// 4-11重命名
alter table productrating rename column username TO userid;

// 4-12 重命名表
rename productrating to new_productrating1;

alter new_productrating1 rename to productrating;

//4-13 删除表
drop table productrating cascade constraints;

// 4-14 表截断操作
truncate table productrating; 

//4-15 主键约束
drop table productrating cascade constraints;
CREATE TABLE productrating
(
    id VARCHAR(20) primary key,
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20)
);

select constraint_type, constraint_name from dba_constraints where table_name='productrating';
// 4-16
CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20),
    constraint pk_id primary key(id)
);

// 4-17
alter table productrating add constraint pk_id primary key(id);

//4-18
alter table productrating drop constraint pk_id;

// 4-19 非空约束
drop table productrating cascade constraints;
CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20) not null,
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20) not null
);

// 4-20修改非空约束
alter table productrating modify rating not null;
// 4-21
alter table productrating modify rating  null;

// 4-22 唯一约束
drop table productrating cascade constraints;
CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800) unique,
    ratingtime date,
    username VARCHAR(20)
);

select constraint_type, constraint_name from dba_constraints where table_name='productrating' and constraint_type='U';

//4-23 设置唯一约束
alter table productrating add constraint uq_contents unique(contents);

// 4-24 检查约束
drop table productrating cascade constraints;
CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number check(rating>0),
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20)
);
CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20),
    constraint chk_rating check(rating>0)
);

//4-25 添加检查约束
alter table productrating add constraint chk_rating check(rating>0);

// 4-26 删除检查约束
alter table productrating drop constraint chk_rating;

// 4-27 创建users 表
create table users
(
    username varchar2(20) primary key,
    userpwd varchar2(20)
)

drop table productrating cascade constraints;
CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20) references users(username)
);

CREATE TABLE productrating
(
    id VARCHAR(20),
    proname VARCHAR(20),
    rating number,
    contents VARCHAR(800),
    ratingtime date,
    username VARCHAR(20),
    constraint fk_username foreign key(username) references users(username)
);

// 4-28 表级添加外键约束
alter table productrating add constraint fk_username foreign key (username)
references users(username);

// 4-29 删除外键约束
alter table productrating drop constraint fk_username;

// 4-30 修改约束
alter table productrating rename constraint fk_username to fk_uname;

// 4-31 修改约束状态
alter table productrating disable constraint fk_uname;
alter table productrating enable constraint fk_uname;

//4-32 完整代码
CREATE TABLE productrating
(
    id VARCHAR(20) primary key,
    proname VARCHAR(20) not null,
    rating number check(rating>0),
    contents VARCHAR(800) unique,
    ratingtime date,
    username VARCHAR(20) not null,
     constraint fk_username foreign key(username) references users(username)
);

// 实例演练
// 创建学生信息管理系统所需表
create table student
(
    id varchar2(10),
    name  varchar2(20),
    majorid varchar2(10),
    classid varchar2(10),
    sex varchar2(6),
    nation varchar2(10),
    entrancedate varchar2(20),
    idcard varchar2(20),
    tel varchar2(20),
    email varchar2(20),
    remarks varchar2(100)
);

create table majorinfo
(
    majorid varchar2(10),
    majorname varchar2(20)
);

create table classinfo
(
    classid varchar2(10),
    grade varchar2(10),
    classname varchar2(20)
);

create table course
(
    courseid varchar2(10),
    coursename varchar2(20),
    credit number(3,1),
    remarks varchar2(100)
);

create table gradeinfo
(
    studentid varchar2(10),
    courseid varchar2(10),
    grade number(4,1),
    semester varchar2(16),
    remarks varchar2(100)
);

// 专业班级表
alter table majorinfo add constraint pk_id primary  key(majorid);
alter table majorinfo modify majorname not null;

// 班级信息表
alter table classinfo add constraint pk_classid primary key(classid);
alter table classinfo add constraint uq_grade unique(grade);
alter table classinfo add constraint uq_classname unique(classname);

//课程信息表
alter table course add constraint pk_courseid primary key(courseid);
alter table course add constraint uq_coursename unique(coursename);

// 学生信息表
alter table student add constraint pk_stuid primary key(id);
alter table student add constraint fk_classid foreign key(classid) references classinfo(classid);
alter table student add constraint fk_majorid foreign key(majorid) references majorinfo(majorid);
alter table student modify name not null;


// 学生成绩表
alter table gradeinfo add constraint pk_gradeid primary key(studentid, courseid);
alter table gradeinfo add constraint chk_grade check(grade>0);


// 习题 3.操作题
create table foodinfo
(
    no varchar2(10),
    name varchar2(50),
    price number(7,2),
    typeid varchar2(10)
);

create table typeinfo
(
    typeid varchar2(10) primary key,
    typename varchar2(100)
);

alter table foodinfo add constraint fk_typeid foreign key(typeid) references typeinfo(typeid);


// 第五章 操作表中的数据
create table movieinfo
(
    id varchar2(20) primary key,
    name varchar2(50) not null,
    actors varchar2(20),
    contents varchar2(800) not null,
    typename varchar2(20),
    releasetime varchar2(20) not null,
    country varchar2(20)
);

//5-1 全部列添加数据
insert into movieinfo values('2015001','有一个地方只有我们知道','吴亦凡、王丽坤','小白领金天正在经历人生中最失败的时刻……','爱情','2015.2','中国');
insert into movieinfo(id,name,actors,contents,typename,releasetime,country) 
    values('2015002','饥饿游戏3','詹妮弗.劳伦斯','凯特尼斯.伊弗蒂恩,燃烧的女孩虽然她的家被毁了,可她却活了下来,……','科幻','2015.2','美国');

//5-2 向指定列添加值
insert into movieinfo(id,name,releasetime,contents) 
    values('2015003','星际穿越','2015.2','讲述一队探险家利用他们针对虫洞的新发现,超越了人类对于太空旅行的极限,从而开始在广袤的宇宙中进行星际航行的故事。');
insert into movieinfo(id,name,releasetime,contents) 
    values('2015004','超能陆战队','2015.2','改编自漫威于1998年出版的同名漫画');
    
//5-3 null值的使用
insert into movieinfo values('2015005','熊出没之雪岭熊风',null,'在狗熊岭百年不遇的大雪中,熊二偶遇了小时候曾有过一面之缘的神秘小伙伴,……','动画','2015.1','中国');
insert into movieinfo values('2015006','奔跑吧兄弟','王宝强','跑男团的几位兄弟姐妹散落在全国各地,他们有的人是厨师,有的人是富二代,有的人沉迷于网络游戏,有的人干起了电视购物……','喜剧','2015.1',null);

//5-4 & 号的插入
set define off;
insert into movieinfo values('2015007','天降雄狮','成龙','&无','动作','2015.2','中国');

set define on;
insert into movieinfo values('2015008','冲上云霄','古天乐',chr(38)||'无','剧情','2015.2','中国');

//5-5 单引号插入
insert into movieinfo values('2015009','澳门风云2','周润发','''无''','动作','2015.2','中国');
insert into movieinfo values('2015010','澳门风云','周润发',chr(39)||'无'||chr(39),'动作','2015.2','中国');

//5-6 复制表中的数据
create table test
(
    name varchar2(50) not null,
    country varchar2(20)
);

insert into test select name, country from movieinfo;

//5-7 修改表中的数据
update movieinfo set name='*'||name;
select * from movieinfo;

//5-8 按条件修改表中的数据
update movieinfo set name='*'||name where typename='动画';

//5-9 
update movieinfo set name='动作'||name, releasetime='2015.2' where typename='动作';
select name,releasetime from movieinfo;

//5-10 删除表中的数据
create table new_movieinfo
as 
select * from movieinfo;

select * from new_movieinfo;

delete from new_movieinfo;

//5-11 按条件删除数据
delete from movieinfo where releasetime='2015.1';


-- 向班级信息表添加的数据
insert into classinfo values('1501','2014级','计算机1班');
insert into classinfo values('1502','2013级','会计1班');
insert into classinfo values('1503','2015级','自动化1班');

--向专业信息表添加的数据
insert into majorinfo values('0001','计算机');
insert into majorinfo values('0002','会计');
insert into majorinfo values('0003','自动化');

--向课程信息表添加的数据
insert into course values('1001','计算机基础',0.5,'无');
insert into course values('1002','会计',1,'无');
insert into course values('1003','自动化',1,'无');

--向学生信息表添加的数据
insert into student values('15001','张小林','0001','1501','男','汉','2015.9','无','13112345678','无','无');
insert into student values('14001','王铭','0002','1502','男','回','2014.9','无','13212345678','无','无');
insert into student values('13001','吴琪','0001','1503','女','汉','2013.9','无','13312345678','无','无');

--向成绩表信息表中添加的数据
insert into gradeinfo values('150001','1001',86,'2015第1学期','无');
insert into gradeinfo values('140001','1002',90,'2014第2学期','无');
insert into gradeinfo values('130001','1001',92,'2014第1学期','无');

--复制表
create table test1
as 
select * from course;

create table test1_new
(
    courseid varchar2(10),
    coursename varchar2(20),
    credit number(3,1),
    remarks varchar2(100)
);

insert into test1_new select * from course;

--修改学分
update course set credit =credit+0.5 where coursename='计算机基础';

--修改学生电话
update student set tel='13812345678' where id='15001';

--按条件删除
delete from classinfo where classid='1501';

select * from student;


--第5章 习题 操作题
select * from movieinfo;
--1插入两条数据
insert into movieinfo values('2015011','无双','郭富城','以代号“画家”(周润发饰)为首的犯罪团伙,掌握了制造伪钞技术,难辨真伪……','爱情','2018.10','中国');
insert into movieinfo values('2015012','霸王别姬','张国荣','京剧表现形式……','剧情','1990.10','中国');
--2复制表
create table movieinfo_test
as 
select * from movieinfo;

--3修改上演日期
update movieinfo_test set releasetime='2015.2';

--4修改类型
update movieinfo_test set name=name||'动画',contents='无' where typename='动画'; 

--5删除
delete from movieinfo_test where  typename='动作';


// 第六章
// 数值函数
--6-1绝对值函数
select abs(123),abs(-123),abs(0) from dual;

--6-2取余函数
select mod(10,3),mod(-10,3),mod(10,0) from dual;

--6-3取整函数
select ceil(56.56),ceil(85.28),floor(85.28),ceil(78),floor(78) from dual;

--6-4四舍五入函数
select round(45.789,2),round(789.5),round(1245,-1) from dual;

--6-5幂函数
select power(-3,3),power(10.2,2),power(5,2.5) from dual;

--6-6求平方根函数
select sqrt('125'),sqrt('25'),sqrt(0),sqrt(100.5) from dual;

--6.7三角函数
select sin(0.5),cos(0.83),tan(-0.67) from dual;

// 字符函数
--6-8求子符长度
select length('abc d'),length(123.45),length('aa c d') from dual;

--6-9截取字符串
select substr('123abcABC',1,3),substr('123abcABC',4,3),substr('123abcABC',4) FROM DUAL;

--6-10字符大小写切换
select upper('abcABC'),upper('aaa123'),lower('ABDEcc') from dual;

--6-11首字母大写函数
select initcap('anny'),initcap('BANK') from dual;

--6-12字符串连接函数
select concat('abc','ABC'),'abc'||'ABC',concat('1234','abc'),'1234'||'abc' from dual;

--6-13字符串查找函数
select instr('Have a good time','good'),instr('very well','good') from dual;

--6-14替换函数
select replace('anny@163.com','@','#'),replace('abc11aabc123ab','ab','AA') from dual;

--6-15获取系统时间
select sysdate from dual;

--6-16为日期加上指定的月份
select add_months(sysdate,6), add_months(sysdate,-3) from dual;

--6-17返回指定日期所在月的最后一天
select last_day(sysdate),last_day('01-2月2015') from dual;

--6-18返回指定日期后的周几
select next_day(sysdate,'星期五'),next_day('19-2月-2015','星期二') from dual;

--6-19计算月份差的函数
select months_between(sysdate,'01-9月-2014') from dual;

--6-20从日期中提取指定的数据
select extract(year from sysdate),extract(month from sysdate),extract(day from sysdate) from dual;


//转换函数
--6-21数值型转换成字符串
select to_char(14.53,'$99.99'),to_char(155.53,'9,999.9s') from dual;
select to_char(14.53,'$99.99'),to_char(155.51,'S9,999.9') from dual;

select to_char(-155.57,'9,999.9mi') from dual;

select to_char(-155.53,'9,999.9s'),to_char(-155.53,'s9,999.9'),to_char(155.53,'s9,999.9'),to_char(155.53,'9,999.9s') from dual;

--6.22将日期型转化成字符串
select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS DAY') from dual;

--6-23将字符型数据转换成日期型
select to_date('2014-06-01','YYYY-MM-DD') from dual;

SELECT to_char(to_date('2017-05-23','YYYY-MM-DD'),'YYYY-MM-DD') FROM DUAL;
SELECT to_char(to_date('2017-05-23','YYYY-MM-DD'),'YYYY"年"MM"月"DD"日"') FROM DUAL;

--6-24将字符型转换成数值型
select to_number('$14.53','$99.99'),to_number('1,555.5+','9,999.9s') from dual;

--6-25cast转换函数
select cast('12.35' as number(4,2)), cast(123 as varchar2(3)),cast(sysdate as varchar2(20)),cast('16-5月-2015' as date) from dual;

// 聚合函数
--6.26求平均值函数
select avg(grade) from gradeinfo;

--6-27求最小值、最大值
select max(grade),min(grade) from gradeinfo;

--6-28求记录数与求和
select count(*),sum(grade) from gradeinfo;

--6-29其他函数
select user from dual;
select USERENV('LANGUAGE') "Language" FROM DUAL
select nullif('aaa','bbb') from dual;

select coalesce('aa','','cc',null) from dual;

select vsize('aaa') from dual;

//自定义函数
--6-29创建函数
create function fun
(price number)
return number
is
begin
return price*0.6;
end;
/

select fun(60) from dual;

--6-30删除函数
drop function fun;

select to_date('17-10月-2018')-to_date('01-1月-2015') from dual;

select * from user_procedures;

//第六章 操作题
--1
select substr('abcdefg123456',7,4) FROM DUAL;
--2
select to_char('123456.6','999,999.9s') from dual;
--3
//自定义函数
--6-29创建函数
create function fun_test
(str1 varchar2,str2 varchar2)
return varchar2
is
begin
return str1||str2;
end;
/

select fun_test('abc','123') from dual;


// 第七章
drop table courses cascade constraints;
create table courses
(
    courseid varchar2(10) primary key,
    coursename varchar2(20),
    price number(5,1),
    teacher varchar2(20),
    contents varchar2(200),
    typeid varchar2(10),
    remarks varchar2(200)
);
drop table stuinfo cascade constraints;
create table stuinfo
(
    stuid varchar2(10) primary key,
    name varchar2(20),
    password varchar2(10),
    email varchar2(20),
    tel varchar2(20)
);

create table teachers
(
    teacherid varchar2(10) primary key,
    teachername varchar2(20),
    contents varchar2(200),
    remarks varchar2(200)
);
drop table typeinfo cascade constraints;
create table typeinfo
(
    typeid varchar2(10) primary key,
    typename varchar2(20)
);

create table shopping
(
    id varchar2(10) primary key,
    courseid varchar2(10),
    stuid varchar2(10),
    shoppingtime date default sysdate
);
alter table courses add constraint fk_typeid foreign key(typeid) references typeinfo(typeid);
alter table shopping add constraint fk_courseid foreign key(courseid) references courses(courseid);
alter table shopping add constraint fk_stuid foreign key(stuid) references stuinfo(stuid);

-- 向课程表中添加数据
insert into courses values(1,'Oracle基础',100,'1001','基础语法的使用','1001','略');
insert into courses values(2,'Java开发',300,'1001','Java基础语法','1002','略');
insert into courses values(3,'Android开发',200,'1002','开发手机游戏','1003','略');

--向学员表中添加数据
insert into stuinfo values(1,'张小小','123456','aa@126.com','12345678');
insert into stuinfo values(2,'李明','123456','bb@126.com','12345678');
insert into stuinfo values(3,'刘想','123456','cc@126.com','12345678');
commit;

select * from stuinfo where password='49CQeU';

--向讲师表中添加数据
insert into teachers values(1001,'张老师','某大学毕业','略');
insert into teachers values(1002,'李老师','某大学毕业','略');
insert into teachers values(1003,'王老师','某大学毕业','略');
select * from teachers;

--向课程类型表中添加数据
insert into typeinfo values(1001,'数据库');
insert into typeinfo values(1002,'编程语言');
insert into typeinfo values(1003,'办公自动化');

--向购买课程表中添加数据
insert into shopping values(1,2,1,default);
insert into shopping values(2,1,2,default);
insert into shopping values(3,3,1,default);

select * from typeinfo;

--7-1 查询所有数据
select * from typeinfo;

--7-2 查询表中指定的列
select coursename, price from courses;

--7-3给列设置别名
select coursename as 课程名称, price as 课程价格 from courses;

--7-4 去除表中重复记录
insert into courses values(4,'Oracle基础',200,'1001','基础语法的使用','1001','略');

select distinct coursename from courses;

--7-5 对查询结果进行排序
select coursename as 课程名称, price as 课程价格 from courses order by 课程价格 desc;

--7-6
select coursename as 课程名称, price as 课程价格 from courses order by 课程价格 desc, 课程名称 asc;

--7.7 在查询中使用表达式
select coursename as 课程名称, price*0.8 as 打折后课程价格 from courses;

--7-8
select coursename||':'||contents as 课程介绍, price*0.8 as 打折后课程价格 from courses;

--7-9 case when
select coursename as 课程名称, case
    when price>=200 then price*0.8
    when price>=100 then price*0.9
    end as 价格 from courses;
    
--7-10 
select coursename as 课程名称, case typeid
    when '1001' then '数据库'
    when '1002' then '编程语言'
    when '1003' then '办公自动化'
    end as 课程类型 from courses;
    
--7-11 查询带null 值的列
select coursename, price from courses where coursename is NUll;
select coursename, price from courses where coursename is not NUll;

--7-12 使用rownum 查询指定数目的行
select coursename, price from courses  where rownum<=2  order by price asc;

select coursename, (select price from courses order by price asc) as price from courses;


select coursename,price from 
(select coursename,price from courses order by price) 
where rownum<=2;


select coursename, price from courses where rownum>=3;

--7-13 范围查询
select coursename, price from courses where price between 100 and 200;

--7-14
select coursename, price from courses where coursename in('Oracle基础','Android开发');

--7-15 模糊查询
select coursename, price from courses where coursename like '%Oracle%';

--7-16
select coursename, price from courses where coursename like '%基础';
select coursename, price from courses where coursename like '_racle基础';

--7-17 在分组查询中使用聚合函数
select coursename, count(*) from courses group by coursename;

--7-18 统计每类课程的平均价格
select typeid, avg(price) from courses group by typeid;

--7-19 带条件的分组查询
select typeid, avg(price) from courses group by typeid having avg(price) >200;

--7-20 
select typeid, avg(price) from courses where price>=200 group by typeid;

--7-21 对分组查询的结果排序
select typeid,avg(price) from courses group by typeid order by avg(price) desc;

--7-22 笛卡尔积
select * from courses, typeinfo;

--7-23 内连接查询
select courses.coursename,typeinfo.typename from courses,typeinfo where courses.typeid=typeinfo.typeid;

select courses.coursename,typeinfo.typename from courses inner join typeinfo on courses.typeid=typeinfo.typeid;

--7-24 
select courses.coursename,typeinfo.typename from courses inner join typeinfo on courses.typeid in typeinfo.typeid;

--7-25 外链接查询
select courses.coursename,typeinfo.typename from courses right outer join typeinfo on courses.typeid=typeinfo.typeid;


--7-26 交叉连接查询
select * from courses cross join typeinfo;

--7-27 子查询
select coursename, price from courses where price>(select avg(price) from courses);

--7-28
select coursename, price from courses
    where teacher in (select teacherid from teachers where teachername='张老师' or teachername='王老师');
    
--7-29 From 子句中的子查询
select coursename, price from courses a, (select typeid, avg(price) as avgprice from courses group by typeid) b 
    where a.typeid=b.typeid and a.price>avgprice;
    
--7-30
select * from (select rownum rn, coursename, price from courses) a where a.rn in(2,3);

--7.7 实例演练
select student.name, majorinfo.majorname from student, majorinfo where student.majorid=majorinfo.majorid and student.name='张%';

select student.name, majorinfo.majorname, course.coursename, gradeinfo.grade from student, majorinfo, gradeinfo, course where
    student.majorid=majorinfo.majorid and course.courseid=gradeinfo.courseid and gradeinfo.studentid=student.id;
    
select course.coursename,avg(gradeinfo.grade) as 平均分, max(gradeinfo.grade) as 最高分 from gradeinfo,course
    where course.courseid=gradeinfo.courseid
    group by course.coursename;
    
select student.name, gradeinfo.grade from student, gradeinfo where student.id = gradeinfo.studentid 
    and gradeinfo.grade>(select avg(grade) from gradeinfo);
    
ALTER USER scott ACCOUNT UNLOCK;

alter user scott identified by 123456;

-- 9-8 习题
--3 操作题
select courses.coursename, teachers.teachername, typeinfo.typename, courses.price from courses, teachers, typeinfo where
    courses.typeid=typeinfo.typeid and courses.teacher=teachers.teacherid;
    
select teachers.teachername, courses.price from courses, teachers where 
    courses.teacher=teachers.teacherid and courses.typeid=(select typeid from typeinfo where typeinfo.typename='数据库');
    
select * from courses;
select teachers.teachername, count(teacher) from courses, teachers where 
    courses.teacher=teachers.teacherid group by teachers.teachername;


-- 第八章 视图与索引
create table types
(
    typeid varchar2(10) primary key,
    typename varchar2(50) not null
);

create table questions
(
    id varchar2(10) primary key,
    question varchar2(300) not null,
    typeid varchar2(10) references types(typeid),
    answer varchar2(800) not null,
    points number not null,
    remarks varchar2(100)
);

-- 题目类型表
insert into types values('1001', '自我认知');
insert into types values('1002', '组织管理');
insert into types values('1003', '综合分析');
insert into types values('1004', '解决问题');
insert into types values('1005', '联想题');

-- 面试试题表
insert into questions values('201401','请简单做一个自我介绍。','1001','略',15,'无');
insert into questions values('201402','有你负责组织一个学生春游活动,怎么组织?','1002','需要明确时间,地点,人物等等',15,'无');
insert into questions values('201403','对于目前大学生就业难的问题,你怎么看?','1003','需要明确具体的措施',15,'无');
commit;
select * from questions;

-- 8-1 创建单表试图
create view v_question1
as 
select question, answer from questions;

select * from v_question1;

-- 8-2 创建多表试图
create view v_question2
as 
select questions.question, types.typename 
from questions, types
where questions.typeid=types.typeid
with read only;

select * from v_question2;

-- 8-3 
create view v_question3
as
select question from v_question1;

select * from v_question3;

--8-4 删除试图
drop view v_question1;

select * from v_question3;

-- 8-5 使用dml 语句操作试图
create view v_question4
as 
select * from questions where typeid='1001';

-- 添加
insert into v_question4 values('201404','请说出你的三个缺点。','1001','略',15,'无');

select question,answer from questions;
-- 8-6更新
update v_question4 set answer='提出的缺点能否通过努力克服'
    where id='201404';
    
-- 8-7 删除
delete from v_question4 where id='201404';

-- 8-8 修改
update v_question2 set question='自我认知'|| question where typename='自我认知';

-- 管理索引
-- 8-9 创建索引
create index ix_question
on questions(question);

--8-10 唯一索引
create unique index ix_typename 
on types (typename);
alter index in_typename rename to ix_typename;

--8-11 
create bitmap index ix_typeid
on questions(typeid);

--8-12
create index ix_question_answer
on questions (question,answer);


-- 8-13 更名
alter index ix_question rename to ix_question_new;

-- 8-14 改成压缩索引
alter index ix_question_answer rebuild compress;

--8-15 重新生成索引
alter index ix_typename rebuild;

--8-16 是索引 ix_typename 不可见
alter index ix_typename invisible;

-- 8-17 删除索引
drop index ix_typename;

-- 实例演练
create view v_student
as
select student.name, majorinfo.majorname, classinfo.classname, student.entrancedate,student.tel
from student, classinfo, majorinfo
where student.majorid=majorinfo.majorid and student.classid=classinfo.classid;

select name,majorname,classname from v_student;

create index ix_stuname
on student(name);

create bitmap index ix_stumajor
on student(majorid);

create bitmap index ix_stuclass
on student(classid);

select index_name,index_type from dba_indexes where table_name='STUDENT';

-- 操作题
create view v_course
as 
select questions.question, types.typename,  questions.points
from questions, types
where questions.typeid=types.typeid;

select * from v_course;

create index ix_course
on questions (question,points);

-- 改成压缩索引
alter index ix_course rebuild compress;

 

-- 第九章 序列与同义词
-- 9-1 创建序列
create sequence seq_test
increment by 1
start with 1
maxvalue 100
minvalue 1;

-- 9-2 创建递减序列
create SEQUENCE seq_test1
  INCREMENT BY -1 
  start with 100
  MAXVALUE 100
  minvalue 1
  cycle;
  
-- 使用序列
select seq_test.currval from dual;

select seq_test.nextval from dual;

-- 9-4 创建表
create  table sales
(
    id varchar2(10) primary key,
    name varchar2(100),
    price number(6,1),
    area number(6,1),
    buildingno varchar2(5),
    remarks varchar2(100)
);

insert into sales values(seq_test.nextval, '2室1厅','8000','80','A1','无');
insert into sales values(seq_test.nextval, '2室1厅','8500','100','A2','无');

select id,name from sales;

--9-5 修改
update sales set remarks=seq_test.nextval where name='2室1厅';

select id,name, remarks from sales;

-- 管理序列
-- 9-6 修改
alter sequence seq_test
maxvalue 50;

alter sequence seq_test
maxvalue 3;

--9-7 选好产生序列
alter sequence seq_test
cycle
cache 10;

-- 9-8 删除序列
drop sequence seq_test;

-- 同义词
-- 9-9 创建同义词
create SYNONYM house for sales;

select table_name, synonym_name from dba_synonyms where owner='SYSTEM';

-- 9-10 
create public synonym house1 for system.sales;

-- 使用同义词
-- 9-11 添加数据
insert into house values('10', '1室1厅', '8500', '65', 'A3', '无');

conn scott/123456;
insert into house values('11', '1室2厅', '8500', '65', 'A3', '无');

grant insert on system.sales to scott;

insert into system.house values('11', '1室2厅', '8500', '65', 'A3', '无');

-- 9-12 
insert into house1 values('13', '1室2厅', '8500', '65', 'A3', '无');


-- 删除同义词
-- 9-13
drop synonym house;

--9-14 删除公用同义词
drop public synonym house1;

-- 实例演练
create sequence seq_majorid
increment by 1
start with 1
maxvalue 9999999999
minvalue 1;

select * from majorinfo;
insert into majorinfo values(seq_majorid.nextval,'计算机');
insert into majorinfo values(seq_majorid.nextval,'会计');
insert into majorinfo values(seq_majorid.nextval,'自动化');

select * from stuinfo;

select * from student;

create synonym stuinfo1
for system.student;

select id , name from stuinfo1;

-- 习题 3操作题
--1
create sequence seq_testadd
increment by 1
start with 1
maxvalue 100
minvalue 1;

-- 9-2 创建递减序列
create SEQUENCE seq_testdown
  INCREMENT BY -1 
  start with 100
  MAXVALUE 100
  minvalue 1
  cycle;

--2
select seq_testadd.nextval from dual;
select seq_testadd.currval from dual;

select seq_testdown.nextval from dual;
select seq_testdown.currval from dual;

--3
create public synonym sales
    for system.sales;
    
select * from sales;

drop public synonym sales; 


-- 第十章 PL/SQL基本语法
--10-1 定义常量
declare
    class_num constant number(4):=50;
    class_name constant varchar2(20):='计算机一班';
begin

end;

-- 10-2 变量定义
age number(3):=20;
name varchar2(20):='张三';


-- 10-3 变量输出
set serverout on;
declare
    age number(3):=20;
    name varchar2(20):='张三';
begin
    DBMS_OUTPUT.PUT_LINE('年龄='||age);
    DBMS_OUTPUT.PUT_LINE('姓名='||name);
END;
/

-- 流程控制语句
-- 10-4 if
declare
    name varchar2(20):='张三';
begin
    if name='张三' then
        dbms_output.put_line('正确!');
    end if;
end;
/

--10-5 if else
declare
    name varchar2(20):='张三';
begin
    if name='张三' then
        dbms_output.put_line('正确!');
    else
        dbms_output.put_line('错误!');
    end if;
end;
/

-- if elsif else
declare
    score number(4,1):=76;
begin
    if score>=85 then
        dbms_output.put_line('优秀!');
    elsif score>=75 then
        dbms_output.put_line('良好!');
    elsif score>=60 then
        dbms_output.put_line('及格!');
    end if;
end;
/  
    
-- 10-7
declare
    proid varchar2(5):='001';
    result varchar2(10);
begin
    case proid
        when '001' then result:='图书类';
        when '002' then result:='电器类';
    else
        result:='其他类';
    end case;
    DBMS_OUTPUT.PUT_LINE(result);
end;
/

-- 循环语句
--  10-8 loop
declare
    i number(2):=0;
begin
loop
    i:=i+1;
    DBMS_OUTPUT.PUT_LINE(i);
    if i>=5 then
        exit;
    end if;
end loop;
end;
/

-- 10-9 loop-exit-when-end loop
declare
    i number(2):=0;
begin
loop
    i:=i+1;
    DBMS_OUTPUT.PUT_LINE(i);
    exit when i=5;
end loop;
end;
/

-- 10-10 while-loop-end loop
declare
    i number(2):=0;
begin
    while i<5
    loop
        i:=i+1;
        DBMS_OUTPUT.PUT_LINE(i);
    end loop;
end;
/

-- 10-11 for-in-loop-end loop
declare
    i number(2):=0;
begin
   for i in 1..5
   loop
     DBMS_OUTPUT.PUT_LINE(i);
    end loop;
end;
/

-- 异常处理
-- 10-13
declare 
    age number(2):=-1;
    exception_age exception;
begin
    if age<0 then
        raise exception_age;
    end if;
exception
    when exception_age then
    dbms_output.put_line('年龄小于0岁,请重新输入!');
end;
/

-- 事务
-- 10-14 
create table userinfo
(
    userid varchar2(10) primary key,
    username varchar2(20),
    userpwd varchar2(20)
);

insert into userinfo values('001','张三','abc');
select * from userinfo;
savepoint sp_1;
insert into userinfo values('002','李四','abc');
rollback to sp_1;

-- 游标
-- 10-15 
declare
cursor cursor_test is select username, userpwd from userinfo where userid='001';
v_username varchar2(20);
v_password varchar2(20);
begin
    open cursor_test;
    fetch cursor_test into v_username,v_password;
    dbms_output.put_line('用户名:'||v_username);
    dbms_output.put_line('密码:'||v_password);
close cursor_test;
end;
/

-- 10-16
declare
cursor cursor_test1 
is select * from userinfo where userid='001';
cur_record userinfo%rowtype;
begin
    open cursor_test1;
    fetch cursor_test1 into cur_record;
    dbms_output.put_line('用户名:'||cur_record.username);
    dbms_output.put_line('密码:'||cur_record.userpwd);
close cursor_test1;
end;
/

--10-17
declare
cursor cursor_test2 
is select * from userinfo;
cur_record userinfo%rowtype;
begin
    open cursor_test2;
    loop
        fetch cursor_test2 into cur_record;
        exit when cursor_test2%notfound;
        dbms_output.put_line('用户名:'||cur_record.username);
        dbms_output.put_line('密码:'||cur_record.userpwd);
    end loop;
close cursor_test2;
end;
/

-- 10-18 隐式游标
declare
v_username varchar2(20);
begin
    select username into v_username
    from userinfo
    where userid='001';
    dbms_output.put_line('用户名:'||v_username);
end;
/

-- 习题
-- 3.操作题
-- 1
set serverout on;
declare
    i number(2):=1;
    n number(4):=1;
begin
    while i<=5
    loop
        n:=n*i;
        i:=i+1;
    end loop;
    DBMS_OUTPUT.PUT_LINE('5!='||n);
end;
/

-- 2
create table bookinfo(
    bookid varchar2(10) primary key,
    bookname varchar2(20),
    bookprice number(6,2),
    bookpublish varchar2(20),
    bookauthor varchar2(20)
);
drop table bookinfo;
insert into bookinfo values('10010','Oracle基础',25,'清华出版社','张华');
insert into bookinfo values('10020','java基础',28,'清华出版社','夏江华');
insert into bookinfo values('10030','计算机基础',30,'清华出版社','刘琦');

select * from bookinfo;


declare
cursor cursor_t1 is select * from bookinfo;
c_bookrecord bookinfo%rowtype;
begin
open cursor_t1;
loop
fetch cursor_t1 into c_bookrecord;
exit when cursor_t1%notfound;
    dbms_output.put_line('图书名称:'||c_bookrecord.bookname||', 图书价格:'||c_bookrecord.bookprice);
end loop;
close cursor_t1;
end;
/

-- 3
declare
c_bookname varchar2(20);
c_bookprice number(6,2);
begin
    select bookname,bookprice into c_bookname, c_bookprice from bookinfo where bookid='10010';
    dbms_output.put_line('图书名称:'||c_bookname||', 图书价格:'||c_bookprice);
end;
/


-- 第十一章
-- 创建无参的存储过程
-- 11-1 
select * from typeinfo;
create procedure pro_test1
as
cursor cursor_test
is select * from userinfo;
cur_record userinfo%rowtype;
begin
open cursor_test;
loop
fetch cursor_test into cur_record;
exit when cursor_test%notfound;
    dbms_output.put_line('用户编号:'||cur_record.userid);
    dbms_output.put_line('用户名:'||cur_record.username);
    dbms_output.put_line('密码:'||cur_record.userpwd);
end loop;
close cursor_test;
end;
/

exec pro_test1;

-- 11-2 创建有参的存储过程
create procedure pro_test2(p_name in varchar2)
as
cursor cursor_test
is select * from userinfo where username=p_name;
cur_record userinfo%rowtype;
begin
open cursor_test;
loop
fetch cursor_test into cur_record;
exit when cursor_test%notfound;
    dbms_output.put_line('密码:'||cur_record.userpwd);
end loop;
end;
/

exec pro_test2('张三');

-- 11-3
create procedure pro_test3(p_name in varchar2, p_pwd out varchar2)
as
cursor cursor_test
is select * from userinfo where username=p_name;
cur_record userinfo%rowtype;
begin
open cursor_test;
loop
fetch cursor_test into cur_record;
exit when cursor_test%notfound;
p_pwd:=cur_record.userpwd;
end loop;
close cursor_test;
end;
/

declare 
p_pwd1 varchar2(20);
begin
pro_test3('张三',p_pwd1);
dbms_output.put_line('密码为:'||p_pwd1);
end;
/

exec pro_test3('张三','aa');
begin pro_test3('张三','aa') end;

-- 11-4
create procedure pro_test4(p_namepwd in out varchar2)
as 
cursor cursor_test
is select * from userinfo where username=p_namepwd;
cur_record userinfo%rowtype;
begin
open cursor_test;
loop
fetch cursor_test into cur_record;
exit when cursor_test%notfound;
p_namepwd:=cur_record.userpwd;
end loop;
close cursor_test;
end;
/

declare 
p_namepwd varchar2(20):='张三';
begin
pro_test4(p_namepwd);
dbms_output.put_line('密码为:'||p_namepwd);
end;
/

-- 11-5 重新编译存储过程
alter procedure pro_test1 compile;

-- 11-6
drop procedure pro_test1;

-- 触发器
select * from userinfo;

create table v_userinfo
as
select * from userinfo;

delete from userinfo1;

-- 11-7
create trigger tri_test1
after delete
on userinfo
for each row
begin
    insert into userinfo1 values(:old.userid,:old.username,:old.userpwd);
end;
/

delete from userinfo where userid='001';

-- 11-8 
create view v_userinfo1
as 
select * from userinfo;

create or replace trigger tri_test2
instead of delete
on v_userinfo1
begin
    dbms_output.put_line('不能删除该记录');
end;
/

delete from v_userinfo1;
select * from v_userinfo1;

-- 11-9
create trigger tri_test3
before drop on system.schema
begin
    dbms_output.put_line('删除的对象名为:'||ORA_DICT_OBJ_NAME);
end;
/

drop table userinfo1;

-- 管理触发器
-- 11-10 更改触发器状态
alter trigger tri_test3 disable;

-- 11-11 重新编译触发器
alter trigger tri_test3 compile;

-- 11-12 删除触发器
drop trigger tri_test3;


-- 实例演练
set serverout on;

select * from student;

create procedure pro_majorbyid(stuid in varchar2)
as
cursor cursor_test
is select maj.majorname from student stu, majorinfo maj
where stu.majorid = maj.majorid and stu.id = stuid;
v_majorname varchar2(20);
begin
open cursor_test;
loop
fetch cursor_test into v_majorname;
exit when cursor_test%notfound;
    dbms_output.put_line('学生专业是:'||v_majorname);
end loop;
close cursor_test;
end;
/

exec pro_majorbyid('15001');

-- 创建触发器
create table student_test
    (id varchar2(10),
    name varchar2(20),
    majorid varchar2(10),
    classid varchar2(10),
    sex varchar2(6),
    nation varchar2(10),
    entrancedate varchar2(20),
    idcard varchar2(20),
    tel varchar2(20),
    email varchar2(20),
    remarks varchar2(100)
);

select * from student_test;
drop table student_test;
create table student_test
as 
select * from student where 1>2;

create trigger tri_student
after delete
on student
for each row
begin
    insert into student_test values(:old.id, :old.name, :old.majorid,:old.classid, :old.sex, :old.nation, :old.entrancedate, :old.idcard,:old.tel, :old.email, :old.remarks);
end;
/

insert into student values('13001', '张三', '0002','1502', '男', '汉', '2015.9', '无','15112345678', '无', '无');

drop trigger tri_student;
select * from student;

delete from student where id='14001';

-- 习题
-- 操作题
create procedure procedure_test01(p_name in varchar2, p_pwd in varchar2)
as
begin
    if p_name='tom' and p_pwd='123' then
        dbms_output.put_line('用户名密码正确!');
    else
        dbms_output.put_line('用户名或密码不正确!');
    end if;
end;
/

drop procedure procedure_test01;

exec procedure_test01('tom', '123');

--2
select * from userinfo;

create table test_userinfo1
as 
select * from userinfo;

insert into userinfo values('001','张三','bcd');
insert into userinfo values('003','张丰','bcd');
insert into userinfo values('004','张华','bcd');

select * from test_userinfo;

drop trigger tri_userinfo1;

create trigger tri_userinfo1
after delete
on test_userinfo1
for each row
begin
    insert into test_userinfo values(:old.userid,:old.username,:old.userpwd);
end;
/

delete from test_userinfo1 where userid='004';

--3
create or replace trigger trigger_test2
instead of delete or update
on v_userinfo1
begin
    dbms_output.put_line('不能删除或更新该记录');
end;
/

delete from v_userinfo1;

select * from v_userinfo1;

update v_userinfo1 set username='*'||username;


-- 第十二章 用户与权限
-- 12-1 
create user user_test1 identified by 123456
default tablespace users;

-- 12-2 
create user user_test2 identified by 123456
quota 10m on users
account lock;

-- 12-3
alter user user_test1 identified by 654321;

-- 12-4
alter user user_test2 default tablespace system account unlock;

-- 12-5 删除用户
drop user user_test2 cascade;

-- 
select * from system_privilege_map;

-- 12-6 授予创建表权限
grant create table to user_test1;

grant create session to user_test1;


-- 12-7
grant create view, drop any view to user_test1
with admin option;

-- 12-8
select * from userinfo;
grant update on userinfo to user_test1
with grant option;

-- 12-9
grant select, update, delete, insert on userinfo to user_test1;

-- 12-10
revoke create table 
from user_test1;

-- 12-11
revoke create view from user_test1, user_test2;

-- 12-12
revoke update on userinfo
from user_test1;

-- 12-13 查看用户系统权限
select * from dba_sys_privs where grantee='user_test1';

-- 12-14 查看用户的对象权限
select grantee, table_name, privilege from dba_tab_privs where grantee='user_test1';

-- 角色
select * from dba_roles;

select privilege from dba_sys_privs where grantee='connect';

-- 12-15 创建角色
create role test_role1
not identified;

-- 12-16 创建角色并设置密码
create role test_role2
identified by 123456;

-- 12-17
grant create table, create sequence to test_role1;

-- 12-18 授予connect 角色权限
grant connect to test_role2;

-- 12-19 撤销权限
revoke create table from test_role1;
commit;
select * from dba_sys_privs where grantee='test_role1';

-- 12-20 撤销
revoke connect from test_role2;

-- 12-21 使test_role2 角色失效
set role all except test_role2;

-- 12-22 
set role test_role2 identified by 123456;

set role test_role2;

-- 12-23 给用户授予角色
grant test_role1 to user_test1;

grant select_catalog_role to scott;

grant exp_full_database to scott;

-- 12-24  撤销角色
revoke test_role1 from user_test1;

-- 管理角色
-- 12-25
alter role test_role1 
identified by 654321;

-- 12-26
drop role test_role1;

-- 习题
-- 3 操作题
-- 1
conn sys/123456 as sysdba;
create user test_user3 identified by 123456;

-- 2
grant create table, drop any table to test_user3;
grant select, update on userinfo to test_user3;

-- 3
revoke update on userinfo from test_user3;

-- 4
select * from dba_sys_privs where grantee='test_user3';
select grantee, table_name, privilege from dba_tab_privs where grantee='test_user3';

-- 5 修改角色密码
create role user3_role 
identified by 123456;

-- 赋予权限
grant create table, drop any table to user3_role;

-- 6
grant user3_role to test_user3;

-- 7
drop role user3_role;
drop user test_user3;

--  第十三章 备份与恢复
-- 数据库备份
archive log list;

alter system set log_archive_start= true scope=spfile;

shutdown immediate;

startup mount;

alter database archivelog;

alter database noarchivelog; 

alter database open;

alter tablespace users begin backup;

alter tablespace users end backup;

exp system/123456

exp system/123456 file=d:\test1.dmp tables=userinfo

exp system/123456 file=d:\testspace.dmp tablespaces=users

exp scott/oracle file=d:\dept.dmp tables=dept;

-- 使用EXPDP 工具导出数据
create directory directory_test as 'd:\directory';

-- 赋予权限
grant read, write on directory directory_test to scott;

expdp scott/123456 dumpfile=userinfo.dmp directory=directory_test tables=userinfo;

alter system archive log current;

-- 关闭服务器
shutdown immediate;

-- 开启服务器
startup;

alter database datafile 4 offline drop;

alter database open;

recover datafile 4

alter database datafile 4 online;

imp system/123456

-- 导出userinfo 表
imp system/123456 file=d:\test.dmp tables=userinfo;

-- 使用IMPDP 导入数据
impdp scott/123456 directory =directory_test dumpfile =userinfo.dmp tables=userinfo;

-- 习题
-- 操作题
-- 1
exp scott/123456 file=d:\dept.dmp tables=dept;
exp scott/123456@localhost:1522/oracle file=d:\dept.dmp tables=dept;

-- 2
imp scott/123456 file=d:\dept.dmp tables=dept;

-- 3
connect system/123456;
create tablespace test
 datafile 'F:\oracle\test.dbf' size 10m
 AUTOEXTEND OFF;
 
exp system/123456 file=d:\testspace.dmp tablespaces=test-- 导出表空间
imp system/123456 file=d:\testspace.dmp tablespaces=test; -- 导入表空间


-- 第十四章 使用java 语言开发学生选课系统
create table sys_students
(
    stuid varchar(10) primary key,
    stuname varchar2(12),
    stupwd varchar2(20),
    stusex varchar2(4),
    stuinstitute varchar2(20)
);

create table sys_admin
(
    admid int primary key,
    admname varchar2(12),
    admpwd varchar2(20)
);

drop table sys_showlog;

create table sys_showlog
(
    logid int primary key,
    stuid varchar(10),
    username varchar2(12),
    doing varchar2(20),
    msg varchar2(100),
    logdate varchar2(30)
);
insert into sys_showlog values('1','106','dfsdfs','登录系统','游齐登录系统成功!','2018-12-02')
insert into sys_showlog values('1','106','null','登录系统','游齐登录系统成功!','2018-12-02 16:18:40')

desc sys_students;

create table sys_courses
(
    couid varchar2(10) primary key,
    couname varchar2(20),
    teacher varchar2(12),
    credit number(3,1),
    couexp varchar2(50)
);

update sys_courses set couname='C语言',
    teacher='张无忌',
    credit=1,
    couexp='C语言'
    where couid='012';
    
commit;

insert into sys_courses values('012','C语言程序设计','张素',2,'C语言程序设计')
commit;

create table sys_stucou
(
    stuid varchar2(10),
    couid varchar2(10),
    primary key(stuid,couid)
);

create table cou
(
    id int primary key,
    cName varchar2(20),
    tName varchar2(12),
    descript varchar2(50),
    score number(5,2)
);

execute MGMT_USER.MAKE_EM_USER('scott');

select * from sys_students;

select * from stuinfo;

select stuId from sys_stucou where stuid='101' and couid='001'

select * from SYS_COURSES where COUID in(select couid from sys_stucou where stuid='101') and couname like '%基础%'


select couid from sys_stucou where stuid='101'

delete from sys_stucou where stuid='101' and couid='001'
commit;

update sys_students set stupwd='11111' where stuid='101';
insert into sys_showlog values('2','101','null','登录系统','游青洪登录系统成功!',null)

select l.logid,s.stuid,l.doing,l.msg,l.logdate from sys_showlog l,sys_students s 
    where s.stuid=l.stuid and l.stuid='101' order by l.logid DESC;

select l.logid,s.stuid,l.doing,l.msg,l.logdate  
from sys_showlog l,sys_students s  where s.stuid=l.stuid 
and l.stuid='102' order by l.logid DESC

select l.logid,s.stuname,l.doing,l.msg,l.logdate 
from sys_showlog l,sys_students s 
where s.stuid=l.stuid and s.stuid!=1 order by l.logid DESC


select l.logid,s.stuname,l.doing,l.msg,l.logdate  
from sys_showlog l,sys_students s  where s.stuid=l.stuid 
and s.stuid!='1' order by l.logid DESC
    
select l.logid,s.admname,l.doing,l.msg,l.logdate  
from sys_showlog l,sys_admin s 
where s.admid=l.stuid and l.stuid='1' order by l.logid DESC;

select s.stuid,s.stuname,c.couname,c.teacher,c.couexp from 
sys_stucou sc, sys_students s,sys_courses c where 
s.stuid = sc.stuid and c.couid=sc.couid;

select s.stuid,s.stuname, c.couname,c.teacher,c.couexp  
from sys_stucou sc, sys_students s,sys_courses c  
where s.stuid = sc.stuid and c.couid=sc.couid;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。该系统主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者,包含项目源码、数据库脚本、项目说明等,有论文参考,可以直接作为毕设使用。 后台框架采用SpringBoot,数据库使用MySQL,开发环境为JDK、IDEA、Tomcat。项目经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。 该系统的功能主要包括商品管理、订单管理、用户管理等模块。在商品管理模块中,可以添加、修改、删除商品信息;在订单管理模块中,可以查看订单详情、处理订单状态;在用户管理模块中,可以注册、登录、修改个人信息等。此外,系统还提供了数据统计功能,可以对销售数据进行统计和分析。 技术实现方面,前端采用Vue框架进行开发,后端使用SpringBoot框架搭建服务端应用。数据库采用MySQL进行数据存储和管理。整个系统通过前后端分离的方式实现,提高了系统的可维护性和可扩展性。同时,系统还采用了一些流行的技术和工具,如MyBatis、JPA等进行数据访问和操作,以及Maven进行项目管理和构建。 总之,本系统是一个基于SpringBoot开发的华府便利店信息管理系统,使用了Vue和MySQL作为前端框架和数据库。系统经过严格调试,确保可以运行。如果基础还行,可以在代码基础之上进行改动以实现更多功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值