学生——课程数据库
* 学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
* 课程表:Course(Cno,Cname,Cpno,Ccredit)
* 学生选课表:Sc(Cno,Cno,Crade)
学生表:Student
课程表:Course
学生选课表:Sc
一:其本表的定义、删除、修改
create table Student1(
Sno char(9) primary key,
Sname char(20) unique,
Ssex char(2),
Sage smallint,
Sdept char(20)
)
create table Course1 (
Cno char(4) primary key,
Cname char(40),
Cpno char(4),
Ccredit smallint
)
create table Sc1(
Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno,Cno),
foreign key(Sno)references Student(Sno),
foreign key(Cno) references Course(Cno)
)
alter table Student Add S-entrance DATE;
alter table Student alter column Sage int;
-- 若选择restrict:则该表的删除是有限制条件的。欲删除的基本表不能被其他表的--- 约束所引用(如CHECK,FOREIGN等约束),不能有视图,不能有触发器--------- (trigger),不能有存储过程或函数等。
-- 如果存在这些依赖该表的对象,则此表不能删除。
-- 若选择cascade:则该表的删除没有限制条件。在删除其本表的同时,相关的依---- 赖对象,
-- 例如视图,都将被一起删除。
*/
drop table Student cascade;
drop table Student restrict;
二:数据查询:
-- 表单查询
-- 1:查询指定列
select Sno,Sname from Student;
-- 2:查询全部列
select * from Student;
-- 等价于
select Sno,Sname,Ssex,Sage,Sdept from Student;
-- 3:查询经过计算的值
select Sname,2012-Sage from Student;
-- 二。选择表中的若干元组
-- 1:消除取值重复的行
-- select distinct Sno from Sc;
-- 2:查询满足条件的元组
-- 2.1比较大小
-- select Sname from student where Sdept='CS';
-- select Sname,Sage from student where Sage<20;
select distinct Sno from sc where Grade<60;
-- 2.2 确定范围
select Sname,Sdept,Sage from student where Sage between 20 and 23;
select Sname,Ssex from student where Sdept in('CS','MA','IS');
-- 2.3 字符匹配
select * from student where Sno like '200215121';
select * from student where Sname like '刘%';
select * from student where Sname like '欧阳__';
-- 2.4 涉及空值的查询
select Sno,Cno from Sc where Grade is null;
select Sno,Cno from Sc where Grade is not null;
-- 2.5 多重条件查询
select Sname from student where Sdept='CS' and Sage<20;
select Sname from student where Sdept='CS' or Sdept='MA' or Sdept='IS'
-- 三,order by 子句
select Sno,Grade from Sc where Cno='3' order by Grade desc;
select * from student order by Sdept,Sage desc;
-- 四,聚集函数
select count(*) from student;
select count(distinct Sno) from sc;
select avg(Grade) from sc where Cno='1';
select max(Grade) from sc where Cno='1';
select sum(Ccredit) from sc,course where Sno='200215121' and sc.Cno=course.Cno;
-- 五,group by 子句
-- 求各个课程号及相应的选课人数
select Cno,count(Sno) from sc group by Cno;
-- 查询选修了3门以上课程的学生学号
select Sno from sc group by Sno having count(*)>3;
-- 连接查询
-- 一。等值与非等值连接查询
-- 查询每个学生及其选修课程的情况。
select student.*,sc.* from student,sc where student.Sno=sc.Sno;
-- 外连接
-- 在通常的连接操作中,只有满足连接条件的元组才能作为结果输出。上例中的结果
-- 中没有其他两个学生的信息,原因在于他们没有选课 。
-- 有时想以student表为主体列出每个学生的基本情况及其选课情况。若某个学生没有选课,
-- 仍把舍弃的student元组保存在结果关系中,而在sc表的属性上填空值(null),这时就需要
-- 使用外连接。
select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from student left join sc on(Student.Sno=sc.Sno) where student.Sage<20;
select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from student right join sc on(Student.Sno=sc.Sno) where student.Sage<20;
-- 四、复合条件连接
select student.Sno,Sname from student,sc where student.Sno=sc.Sno and sc.Cno='2' and sc.Grade<90;
-- 2.4.3 嵌套查询
-- 查询与‘刘晨’在同一系学习的学生。
select Sno,Sname,Sdept from student where Sdept in(select Sdept from student where Sname='刘晨');
-- 带有比较动算符的子查询
select Sno,Cno from sc x where Grade>=(select avg(Grade) from sc y where y.Sno=x.Sno);
-- 四’带有exists谓词的子查询
-- 查询所有选修了1号课程的学生姓名
select Sname from student where exists (select * from sc where Sno=student.Sno and Cno='1');
-- 查询选修了全部课程的学生姓名
select Sname from student where not exists(select * from course where not exists (select * from sc where Sno=student.Sno and Cno=course.Cno));
-- 集合查询
-- 集合操作主要包括并操作UNION、交操作INTERSECT和差操作EXCEPT。
select * from student where Sdept='CS' union select * from student where Sage<=19;
三:数据更新
-- 3.5 数据更新
-- 1:数据更新
-- insert into student values('200215128','陈冬','男','IS',18);
-- 2:修改数据
-- update student set Sage=23 where Sno='200215121';
-- 3:删除数据
delete from student where Sno='200215128';
- 大小: 4 KB
- 大小: 4.3 KB
- 大小: 2.4 KB
分享到:
相关推荐
Oracle SQL是数据库管理员和开发人员在Oracle数据库系统中进行数据查询和管理的重要工具。这篇笔记主要涵盖了Oracle SQL的...这两份“Oracle SQL笔记”文档应包含了上述各个方面的详细解释和实例,值得仔细阅读和学习。
标题“20170909学习sql笔记”表明这是一个关于SQL学习的资料,可能包含了一天的学习记录或者一个教程的集合。SQL,全称Structured Query Language,是用于管理和处理关系数据库的标准语言。这个标题暗示我们将探讨...
sql笔记.md
【Oracle SQL笔记详解】 Oracle SQL是用于访问和操作Oracle数据库的强大工具,涵盖了各种查询、更新和管理数据的方法。以下是对笔记中提及的一些关键知识点的详细解释: 1. **登录Oracle数据库**:通常以超级管理...
### Oracle SQL 笔记知识点详解 #### 一、SQLPlus 命令及环境变量 Oracle_sid - **SQLPlus 命令位置**:在 Oracle 安装目录下的 `bin` 文件夹中,可以通过 SQLPlus 来执行 SQL 命令。 - **Oracle_sid 环境变量**:...
除了这些基础操作,SQL笔记可能还会涉及更复杂的查询技术,比如联接(JOIN)、子查询、视图(VIEW)的创建和使用,以及事务处理(TRANSACTION)等。联接允许你从多个表中合并数据,子查询可以在主查询内部执行查询,...
这篇超有用的SQL笔记涵盖了多个关键知识点,包括数据检索、数据操作以及SQL查询的高级技巧。以下是对这些知识点的详细解释: 1. **限制查询结果数量**: - `SELECT TOP n * FROM 表名` 是SQL Server中获取前n行...
根据提供的文件信息,我们可以整理出以下关于SQL Server 2005的相关知识点: ### SQL Server 2005概述 SQL Server 2005是一款由微软公司开发的关系型数据库管理系统,是SQL Server系列中的一个重要版本。它在SQL ...
总的来说,“清华滕永昌SQL笔记”提供了关于SQL和Oracle数据库系统的基础知识和实际操作示例,对于学习和理解SQL以及Oracle系统的使用非常有帮助。通过掌握这些内容,用户可以有效地进行数据查询、管理、分析和控制...
### Head First SQL 笔记概览 #### 第一章 创建与管理数据库 - **创建数据库** 使用 `CREATE DATABASE` 语句可以创建一个新的数据库。语法格式如下: ```sql CREATE DATABASE database_name; ``` - **使用...
hivesql笔记.sql
总结来说,本篇SQL笔记详细介绍了在MySQL数据库中使用SQL进行数据操作的各个方面,包括数据库和表的创建、数据的插入、查询语句的构造以及数据的修改和删除。通过对这些基本知识点的理解和掌握,我们可以更有效地...
SQL笔记-副本.sql
总的来说,这份“详细的sql笔记”涵盖了数据库的基础知识,特别是Oracle数据库的使用和函数应用,以及正则表达式的实践。这些内容对于数据库管理员、开发人员或数据分析人员来说都是非常宝贵的学习资源,能够帮助...
【SQL笔记与实例】是一份特别为初学者设计的学习资源,旨在帮助新手快速掌握SQL(Structured Query Language)的基础知识和实际应用。SQL是用于管理和处理关系数据库的强大工具,广泛应用于数据存储、分析和报告。 ...
sql 笔记.md
T-SQL,全称Transact-SQL,是微软SQL Server数据库管理系统中使用的SQL扩展,它在标准SQL的基础上...这份"很好的T-SQL笔记"应该会涵盖这些内容,并可能包含更多的实用技巧和案例,对于学习和提升T-SQL技能非常有价值。