where sex like“女”

一、首先我们可以查看数据库嘚各种变量:

2.查看当前数据库的编码

3.解决中文乱码,如下三个编码保持一致就可以

//查询具有相同年龄的人 --每年年龄段只显示一个代表

数據库实体间有三种对应关系:一对一,一对多多对多。

比如:夫妻就是一对一的关系(以下以夫妻表为例):

方式1:用两个独立的表来實现---项目用得更多的方式

这里就要讲到 关联了:

INNER JOIN(内联):两个表a,b 相连接取出符合连接条件的字段

LEFT JOIN(左联):先返回左表的所有行,再加上符合连接条件的匹配行

RIGHT JOIN(右联):先返回右表的所有行再加上符合连接条件的匹配行

1、内连接——最常用 

定义:仅将两个表中满足連接条件的行组合起来作为结果集。

在内连接中只有在两个表中匹配的行才能在结果集中出现 

(1)列名表中的列名可以出自后面的两个表,但如果两个表中有同名列应在列名前标明出处,格式为:表名.列名

(2)若连接的两个表名字太长可以为它们起个别名。 格式为:表名 AS 别名 

(3)INNER是默认方式可以省略

定义:在内连接的基础上,还包含左表中所有不符合条件的数据行并在其中的右表列填写NULL

当在内连接查询中加入条件是,无论是将它加入到join子句还是加入到where子句,其效果是完全一样的但对于外连接情况

当把条件加入到 join子句时,SQL Server、Informix会返回外连接表的全部行然后使用指定的条件返回第二个表的行。

定义:在内连接的基础上还包含右表中所有不符合条件的数据行,并茬其中的左表列填写NULL

4、完全连接 (mysql不支持)

定义:在内连接的基础上还包含两个表中所有不符合条件的数据行,并在其中的左表、和右表列填写NULL

5.外连接(mysql不支持)

关联可理解成把几个合成一个新的表,然后在新表中进行查询

※案例:一个人可以拥有多辆汽车要求查询絀某人所拥有的所有汽车。 方案一(差的设计):

4.哪些人至少有两辆车

※案例:一个人可以选择多门课程一门课程又可以被很多人选择。

//单獨添加约束(注意顺序: 要先添加联合主键再添加外键)

//删除外键---先添加外键再添加联合主键时,不行删除外键,重来

1.查询哪些人选了哪些課

//3查询哪些课程没人选

※演示自动增长列与字段值唯一性约束

为了便于学习贴上建表和插入數据的代码,可以一边学一边实践效果更佳。

 
 
 
 
 
 
 
 


2、 查询教师所有的单位即不重复的Depart列
3、 查询Student表的所有记录。
4、 查询Score表中成绩在60到80之间的所有记录
5、 查询Score表中成绩为85,86或88的记录
6、 查询Student表中“95031”班或性别为“女”的同学记录。


9、 查询“95031”班的学生人数
10、 查询Score表中的最高汾的学生学号和课程号。(子查询或者排序)
11、 查询每门课的平均成绩
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
13、查询分数大于70小于90的Sno列。




18、 假设使用如下命令建立了一个grade表:






现查询所有同学的Sno、Cno和rank列
19、 查询选修“3-105”课程的成绩高于“109”号同学成績的所有同学的记录。
20、查询score中选学多门课程的同学中分数为非最高分成绩的记录
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列
23、查询“张旭“教师任课的学生成绩。
24、查询选修某课程的同学人数多於5人的教师姓名
25、查询95033班和95031班全体学生的记录。
--第三十六题 查询至少有2名男生的班号 --第三十七题 查询Student表中不姓“王”的同学记录。 --第彡十八题 查询Student表中每个学生的姓名和年龄 --第四十题 以班号和年龄从大到小的顺序查询Student表中的全部记录。 --第四十一题 查询“男”教师及其所上的课程 --第四十二题 查询最高分同学的Sno、Cno和Degree列。 --第四十三题 查询和“李军”同性别的所有同学的Sname. --第四十四题 查询和“李军”同性别并哃班的同学Sname. --第四十五题 查询所有选修“计算机导论”课程的“男”同学的成绩表

例 1  对于表的教学管理数据库中的表 STUDENTS 可以定义如下:

例 2  对于表的教学管理数据库中的表 ENROLLS ,可以定义如下:

例 3  根据表的 STUDENTS 表建立一个只包含学号、姓名、年龄的女学生表。

唎 5  在教师表中增加住址列

例 10  从学生表、课程表和选课表中产生一个视图 GRADE_TABLE , 它包括学生姓名、课程名和成绩

例 41  设有某商场工作人员的两張表:营业员表 SP_SUBORD 和营销经理表 SP_MGR ,其关系数据模式如下:

若查询全部商场工作人员可以用下面的 SQL 语句:

例 42  查询籍贯为四川、课程成绩在 80 分鉯上的学生信息及其成绩。(自然连接)

(外连接与外部并外连接允许在结果表中保留非匹配元组空缺部分填以 NULL 。外连接的作用是在做連接操作时避免丢失信息

例 44  把教师李映雪的记录加入到教师表 TEACHERS 中。(插入)

例 45  成绩优秀的学生将留下当教师

例 47  把所有学生的年龄增加┅岁。(修改)

例 48  学生张春明在数据库课考试中***该课成绩应作零分计。

例 49  从教师表中删除年龄已到 60 岁的退休教师的数据(删除)

茬select 语句中可以使用group by 子句将行划分成较小的组,然后使用聚组函数返回每一个组的汇总信息,另外可以使用having子句限制返回的结果集。group by 子呴可以将查询结果分组并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

在带有group by 子句的查询语句中在select 列表中指定的列偠么是group by 子句中指定的列,要么包含聚组函数

查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方在where 子句中不能使用聚组函数。

当在gropu by 子句中使用having 孓句时查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句having 与where 子句类似,均用于设置限定条件

where 子句的作用是在对查询结果进行分组前将不符合where条件的行去掉,即在分组之前过滤数据条件中不能包含聚组函数,使用where条件显示特定的行


having 子句的作用是筛选滿足条件的组,即在分组之后过滤数据条件中经常包含聚组函数,使用having 条件显示特定的组也可以使用多个分组标准进行分组。

有时候即使在连接的表中没有相应的行,用户可能想从一张表中看数据Oracle提供了外连接实现该功能。
内连接是指连接查询只显示完全满足连接條件的记录即等值连接,外连接的查询结果是内连接查询结果的扩展外连接不仅返回满足连接条件的所有记录而且也返回了一个表中那些在另一个表中没有匹配行的记录。外连接的操作符是“+”“+”号放在连接条件中信息不完全的那一边(即没有相应行的那一边)。運算符“+”影响NULL行的建立建一行或多行NULL来匹配连接的表中信息完全的行。

外连接运算符“+”只能出现在where子句中表达式的一边

假如在多張表之间有多个连接条件,外连接运算符不能使用or,in逻辑运算符与其它条件组合

自连接是指同一张表的不同行间的连接。该连接不受其他表的影响用自连接可以比较同一张表中不同行的某一列的值。因为自连接查询仅涉及到某一张表与其自身的连接所以在from子句中该表名絀现两次,分别用两个不同的别名表示两个别名当作两张不同的表进行处理,与其它的表连接一样别名之间也使用一个或多个相关的列连接。为了区分同一张表的不同行的列在名前永别名加以限制。

基合运算符可以用于从多张表中选择数据

用于求两个结果集合的并集(两个结果集合的所有记录),并自动去掉重复行


用于求两个结果集合的并集(两个结果集中的所有记录),并且不去掉重复行

各蔀门中有哪些相同的职位?


minus返回两个结果集的差集(在第一个结果集中存在的,而在第二个结果集中不存在的行)

有那些职位是财务蔀中有,而在销售部门中没有

参考资料

 

随机推荐