创建学生表
--删除学生表 drop table student; --创建学生表 create table student( stu_id number(4) constraint pk_student_stu_id primary key,--设置主键 stu_name char(10) constraint unique_stu_name unique,--设置唯一约束,名字不能为空 stu_email varchar2(50) constraint chk_stu_email check(stu_email like '%@%')--检查约束,邮箱必须要有@符号 );
创建学分表
--删除表 drop table score; --创建学分表 create table score( sc_id number(3), sc_stu_id number(4) not null, sc_course_id number(3) not null, sc_score number(4,1), constraint pk_sc_id primary key(sc_id),--设置主键 constraint fk_sc_stu_id foreign key(sc_stu_id) references student(stu_id) --设置外键 );
插入学生数据
--插入学生信息 insert into student values(1,'张三','zhangsan@.com'); insert into student values(2,'李四','lisi@.com'); insert into student values(3,'王五','wamgwu@.com'); insert into student values(4,'赵六','zhaoliu@.com'); insert into student values(5,'田七','tianqi@.com');
更新id为3的学生信息
--更新表信息 update student set stu_name='wangwu' where stu_id=3;
插入学生分数信息
--插入分数信息 insert into score values(1,1,1,90); insert into score values(4,1,2,85); insert into score values(3,2,1,75); insert into score values(2,1,2,85);
修改表字段
--修改表字段 alter table student modify stu_email varchar2(100); --添加字段 alter table student add stu_address varchar2(200); --删除字段 alter table student drop column stu_address; --修改表名 alter table students rename to student; select * from student; --删除表 drop table students;--执行不成功,表的主键作为score表的外键
内连接查询
--内连接查询 select * from student s inner join score sc on s.stu_id = sc.sc_stu_id where sc.sc_score>60; --一般的连接查询 select * from student s,score sc where s.stu_id=sc.sc_stu_id;
左外连接
select * from score sc left join student s on s.stu_id=sc.sc_stu_id;
右外连接
--右外连接 select * from score sc right join student s on s.stu_id=sc.sc_stu_id; select * from student s right join score sc on s.stu_id=sc.sc_stu_id;
全外连接
--全外连接 select * from student s full join score sc on s.stu_id=sc.sc_stu_id;
子查询
--子查询 select * from student s,(select * from score) sc where s.stu_id=sc.sc_stu_id; --用in内部查询结果少,外部结果多 select * from student s where s.stu_id not in(select sc.sc_id from score sc where sc.sc_id=s.stu_id); --用exists内部部结果多,外部结果少 select * from student s where not exists(select sc.sc_id from score sc where sc.sc_id=s.stu_id);