SQL高级

创建学生表

--删除学生表 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); 

    原文作者:SQL
    原文地址: https://blog.csdn.net/winter_cq/article/details/80446436
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞