数据库基本操作(二)--数据查询

//数据查询

create database JXGL;
//创建数据库

use JXGL;//使用数据库

create table S(

Sno char(10) not null unique,

Sname char(20) not null
unique,

Ssex char(2),

Sage int,

Sdept char(20));

create table C(

Cno char(2) not  null
primary key (Cno),

Cname char(20),

Teacher
char(20));

create table Sc(

Sno char(10) not
null,

Cno char(2) not null,

Grade smallint);

insert into S
values(‘200215121‘,‘李勇‘,‘男‘,20,‘CS‘);

insert into S
values(‘200215122‘,‘刘晨‘,‘女‘,19,‘CS‘);

insert into S
values(‘200215123‘,‘王敏‘,‘女‘,18,‘MA‘);

insert into S
values(‘200215124‘,‘张立‘,‘男‘,19,‘IS‘);

insert into C
values(‘2‘,‘数学‘,‘张三‘);

insert into C
values(‘6‘,‘数据处理‘,‘张三‘);

insert into C
values(‘4‘,‘操作系统‘,‘张三‘);

insert into C
values(‘7‘,‘PASCAL‘  ,‘张三‘);

insert into C
values(‘5‘,‘数据结构‘,‘李四‘);

insert into C
values(‘1‘,‘数据库‘  ,‘李四‘);

insert into C
values(‘3‘,‘信息系统‘,‘王五‘);

insert into Sc values
(‘200215121‘,‘1‘,92);

insert into Sc
values(‘200215121‘,‘2‘,85);

insert into Sc
values(‘200215121‘,‘3‘,88);

insert into Sc
values(‘200215122‘,‘2‘,90);

insert into Sc
values(‘200215122‘,‘3‘,80);

insert into Sc
values(‘200215122‘,‘1‘,null);

insert into Sc values
(‘200215124‘,‘1‘,89);

insert into Sc
values(‘200215124‘,‘5‘,90);

insert into Sc
Values(‘200215124‘,‘3‘,92);

/**  

S表示学生,它的各属性依次为
学号、姓名、年龄、性别、系;

SC表示成绩,它的各属性依次为
学号、课程号和分数;

C表示课程,它的各属性依次为
课程号、课程名和任课教师。

  S(Sno,Sname,Sage,Ssex,Sdept)

  SC(Sno,Cno,Grade)

  C(Cno,Cname,Teacher)

*/

//1.查询学生选课表中的全部数据

select * from 
C;

//2.查询CS系学生的姓名,年龄

select Sname,Sage from S
where Sdept=‘CS‘;

//3.查询成绩在70~80分之间的学生的学号,课程号和成绩

select Sno,Cno,grade from Sc
where Grade>=70 and Grade<=80;

//4.查询CS系年龄在18~20之间且性别为"男"的学生的姓名和年龄

select Sname,Sage from S
where Ssex=‘男‘ and Sage between 18 and 20;

alter table S add constraint
Ssex check (Ssex in(‘男‘,‘女‘));

select Sname,Sage from S
where Ssex not like‘女‘  and Sage in(18,19,20 );

//5.查询课程号为"C01"的课程的最高分数
select MAX(Grade) from Sc where Cno=‘Co1‘;

//6.查询CS系学生的最大年龄和最小年龄

select
min(Sage)最小年龄,max(Sage)最大年龄 from S where  Sdept=‘CS‘;

//7.统计每个系的学生人数

select count(*) 人数 from S
where Sdept=‘CS‘;

//8.统计每门课程的选课人数和考试最高分

select Count(*) 选课人数,
max(Grade) 最高分 from Sc,C where Sc.Cno=C.Cno group by C.Cno ;

//9.查询每个学生的选课门数和考试总成绩,并按选课门数的升序显示结果

select count(Sno)
,sum(Grade)from Sc group by Sno order by count(Sno) asc;

//10.查询总成绩超过200分的学生,要求列出学号,总成绩

select Sc.Sno 学号,sum(Grade)
总成绩 from Sc group by Sno having sum(Grade)>=200;

---------------------------------------------------------------------------------

//11.查询选修了"1"的学生的姓名和所在系

select S.Sname,Sdept from
S,Sc where Sc.Sno=S.Sno and Cno=‘1‘;

//12.查询成绩在80分以上的学生的姓名,课程号和成绩,并按成绩的降序排列

select Sname,Sc.Cno,Grade
from S,Sc where Grade>80 and Sc.Sno=S.Sno order by Grade desc;

//13.查询那些课程没有人选修.要求列出课程号和课程名(not in)

select Cno,Cname from C where
Cno not in (select Cno from Sc);

/*

//14.要求用子查询

(1).查询选修了课程"2"的学生的姓名和所在系。

(2).查询IS系成绩在80分以上的学生的学号,姓名。

*/

select Sname,Sdept from S
where Sno in (select  Sno from Sc where Cno=‘2‘);

select Sno,Sname from S where
Sdept =‘IS‘ and Sno in (select Sno from Sc where Grade>=80);

//15.求数学系学生的学号和姓名

select Sno,Sname from S
where Sdept =‘MA‘;

//16.求选修了课程的学生学号

select distinct Sno from Sc
where Cno in (select Cno from C);

//17.求选修了数学课的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列

select S.Sno,Grade from
S,Sc,C where Cname=‘数学‘ and C.Cno=Sc.Cno and S.Sno=Sc.Sno order by Grade
desc,S.Sno asc;

//18.求选修数学课其且成绩在80-90之间的学生学号和成绩,并将成绩乘以系数0.8输出。

select S.Sno,Grade,Grade*0.8
from S,Sc,c where Cname=‘数学‘ and Grade between 80 and 90 and C.Cno=Sc.Cno and
Sc.Sno=S.Sno;

//19.求CS系或IS系并且姓刘的学生的信息。

select * from S where Sdept
in(‘CS‘,‘IS‘) and Sname like ‘刘%‘;

//20.求缺少了成绩的学生的学号和课程号(is
null)。

select S.Sno,Cno from S,Sc
where Grade is null and Sc.Sno=S.sno;

//21 .查询每个学生的情况以及他(她)所选修的课程。

select
S.Sno,Sname,Ssex,Sage,Sdept,Cname,Grade from S,C,Sc where S.Sno=Sc.Sno and
C.Cno=Sc.Cno;

//22.求学生的学号、姓名、选修的课程名及成绩

select
S.Sno,Sname,C.Cno,Grade from S,Sc,C where S.Sno=Sc.Sno and
Sc.Cno=C.Cno;

//23.求选修数学课且成绩为90分以上的学生学号、姓名、及成绩。

select S.Sno,Sname,Grade
from S,Sc,C where Grade>=90 and Cname=‘数学‘ and S.Sno=Sc.Sno and Sc.Cno=C.cno;

//24.查询选修课程包含王一老师所授课程的学生学号

select S.Sno from S,C,Sc
where Teacher like ‘王%‘ and S.Sno=Sc.Sno and Sc.Cno=C.Cno;

//25.查询王一老师所授课程的课程号和课程名。

select C.Cno,Cname from C
where Teacher like ‘王%‘;

//26.查询学号为‘200215121‘学生所学课程的课程名与任课教师。

select Cname,Teacher from
S,C,Sc where S.Sno=‘200215121‘ and S.Sno=Sc.Sno and Sc.Cno=C.Cno;

//27.查询至少选修王一老师所授课程中一门课程的女学生姓名(=any)。

select Sname from S,Sc,C
where Teacher like ‘王%‘ and Ssex=‘女‘and  S.Sno=Sc.Sno and Sc.Cno=
C.Cno;

select Sname from S,Sc where
Ssex=‘女‘ and S.Sno=Sc.Sno and Sc.Cno=any( select Cno from C where Teacher like
‘王%‘);

//28.查询姓张同学没有选修的课程的课程号(not
int)。

select Cno from C
where Cno not in (Select Cno from Sc,S where Sc.Sno=S.Sno and Sname like ‘张%‘);

//29.查询至少选修两门课程的学生学号。

select Sno from Sc 
group by Sno having Count(cno)>2;

//30.查询全部学生都选项修的课程的课程号与课程名。

select C.Cno,Cname from Sc,C
where (select distinct count(Sno) from Sc group by Sno)=any(select count(Cno)
from Sc )and Sc.Cno=C.Cno ;(这条语句错误) select Cno,Cname from C where Cno in (Select
Sc.Cno from Sc,c where Sc.Sno=C.Cno group by Sc.Cno having count(*)=(select
count(*) from S));

select cno,cname from c where
cno in(select sc.cno from sc,c where sc.cno=c.cno group by sc.cno having
count(*)=(select count(*) from s);

希望可以和大家多交流交流!!

数据库基本操作(二)--数据查询,码迷,mamicode.com

时间: 2024-12-28 00:30:43

数据库基本操作(二)--数据查询的相关文章

ORACLE和SYBASE数据库中实现数据查询条数限制的SQL语句实现

一.概述 对于某些需要通过数据库与大量数据打交道的软件来说,处理性能相当的重要.为了保证软件能够将所有数据处理完而不至于崩溃,分批处理的思想应运而生.分批处理的具体做法是编写SQL语句,每次返回规定条数的数据给软件处理,待这一批数据处理完之后,再接着处理下一批. 本文通过对具体的数据库表(tb_employeeinfo)的操作过程,展示了ORACLE和SYBASE数据库中分批处理SQL语句的编写方法. 二.ORACLE数据库中的处理 首先,建立tb_employeeinfo表,其定义如下: be

数据库 简单的数据查询

简单的数据查询 1.查询的基本结构: select[distinct] */列名 from table 表名 [where condition] [order by] 2.投影的操作:指定查询结果中能够显示的列 语法:select 列名列表 from 表名; (1):选择多列查询,列名之间用“,”隔开 (2):单列时,只单个. (3):若选择所有列,则用*代替. 3.表名前缀:本列无多大意义,但在复杂的多表查询的情况下,很有用. 语法:select 列名表名 from 表名; 4.列别名(as)

用python操作mysql数据库(之数据查询结果返回字典类型)

#!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb #建立连接 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd='1qaz#EDC',db='test_db') cur = conn.cursor(MySQLdb.cursors.DictCursor) #建立游标时,加上"MySQLdb.cursors.DictCursor",让数据查询结果返回字

数据库系列学习(二)-数据表的创建和管理

1.数据类型 A:整数类型 bit,int,smallint,tinyint [与操作系统位数有关] B:数值类型 decimal,numeric,money,smallmoney,float,real [可存小数] C:字符相关类型 char,varchar,text,nchar,nvarchar,ntext D:日期时间类型 datetime(精确到0.01秒),smalldatetime(精确到分钟),timestamp E:二进制类型 image [经图片,视频转为二进制,保存到数据库]

oracle数据库使用之数据查询入门

1.在查询过程中使用算术表达式对数据进行运算 student表结构例如以下: 最后一项salary表示每一个人的月薪,我如今想查询每一个人的年薪: 2.使用nvl函数处理null值.向表中插入一条数据,该数据的salary项为null: 不使用nvl函数: 使用nvl函数: 3.将查询结果的字符串连接起来: 这里我们使用oracle安装好之后scott用户自带的emp表: 4.查找1982年1月23日后入职的员工,下面几种方式都能够.注意日期的不同写法: 5.查询工资大于等于2000而且小于等于

10-30C#数据库基础--(备份和还原、分离和附加数据库)、语句查询操作

一.数据库是一个大容量的存储数据的仓库,为了保证数据完整性,防止一些数据的意外丢失等情况,需要对数据进行备份和还原. 备份数据不影响数据库的正常运行. 1.备份.还原数据库 首先对数据库进行备份,操作步骤如下: 1)把鼠标放在在选择想要备份的数据库,右击“任务”--“备份”: 2)单击“确定”,弹出“备份数据库”的窗口,在备份类型下面,选择“仅复制备份”,选择“备份过期时间”,添加“目标备份到的位置”,单击“确定”. 3)弹出对话框:提示备份已成功执行. 还原: 备份完成后,删除该数据,利用还原

mysql数据库 (二) mysql数据库的基本操作

上一次安装好mysql数据库以后并没有登录操作,这次来简单介绍下mysql的基本操作 一.访问mysql数据库(经过安装后的初始化过程,mysql数据库的默认管理员用户名为:"root",密码为空:注意此root并非是linux系统管理员的root账号) 1.登录mysql 未设置密码时,mysql后加"-u"指定用户就可以了 如果root设置了密码,还需要在用户名后面加"-p"选项指定密码 2.执行mysql操作语句 注意:每一条mysql语句

PHP对于数据库的基本操作——更新数据

PHP对于数据库的基本操作--更新数据 主要的语句:$update = mysql_query("update user set password='abc' where username='123'"); 这句话的意思是,更新user表,设置passWord字段的值为abc,筛选条件为username为123的数据.就是修改user表里面username为123字段里面的password,将password的值为abc. 前面的随笔里面忘了说  where 这个了,这个我理解为筛选,

web day15 数据库概述,MySQL,SQL语句,数据查询语法DQL

数据库管理系统(DBMS)的概述 1. 什么是DBMS:数据的仓库 > 方便查询 > 可存储的数据量大 > 保证数据的完整.一致 > 安全可靠 2. DBMS的发展:今天主流数据库为关系型数据库管理系统(RDBMS 使用表格存储数据) 3. 常见DBMS:Orcale.MySQL.SQL Server.DB2.Sybase 4. DBMS = 管理程序 + 多个数据库(DB) 5. DB = 多个table(不只是table,但这里先不介绍其他组成部分) 6. table的结构(即