数据库高级查询

1.连接查询,对结果集列的扩展
select * from info

①select * from info,nation #形成笛卡尔积(学名)

简单查询
②select * from info,nation where info.nation=nation.code

info.nation=nation.code:

属于等于也属于

.:后面的数据属于前面的数据。

=:起到连接的作用。

③select info.code,info.name,sex,nation.name,birthday from info,nation where info.nation=nation.code

也就是说,将第二张表的某以代号列连接到第一张表中显示。

④select * from info join nation on info.nation=nation.code

第四种属于最简便的方式。

join:连接作用

on:在...之间



2.联合查询,对结果集行的扩展
①select code,name from info
union:联合
②select code,name from nation

选择code列,将name列内容为nation显示。



3.子查询

父查询:外层查询
子查询:里层查询

子查询的结果做为父查询的条件

(1)无关子查询
子查询在执行的时候和父查询没有关系,子查询可以单独执行

1.查询民族为‘汉族’的所有人员信息
父查询:select * from info where nation=()
子查询:select code from nation where name=‘汉族‘

就是将子查询的查询代码放到父查询的()里再进行查询。

select * from info where nation=(select code from nation where name=‘汉族‘)


2.查询系列名为‘宝马5系’的所有汽车信息
select * from car where brand=(select brand_code from brand where brand_name=‘宝马5系‘)

(2)相关子查询
子查询在执行的时候和父查询有关系,子查询不可以单独执行

1.查询汽车表中油耗小于该系列平均油耗的所有汽车信息

父查询:select * from car where oil<(该系列平均油耗)
子查询:select avg(oil) from car where brand=该系列

select * from car as a where oil<(select avg(oil) from car as b where b.brand=a.brand)

 为了区分“该系列”,将两个系列各取一个名字好进行区分。as a;as b

avg:平均

时间: 2024-10-28 20:36:45

数据库高级查询的相关文章

15-07-17 数据库--高级查询

高级查询 --连接查询 select * from 表1,表2 -- 形成笛卡尔积 select * from 表1,表2 where 表1.主键=表2.外键 --主外键位置可以互换 --join on 内连接 select * from 表1 join 外键 on 表1.主键 = 表2.外键 --查哪位学生的哪一门课考了多少分 select student.sname,course.cname,score.degree from student join score on score.sno=

MySQL数据库 高级查询(二)

高级查询(二)  EXISTS 子查询 语法: SELECT ..... FROM  表名 WHERE EXISTS (子查询); EXISTS 关键字后面的参数是一个任意的子查询,如果该子查询有返回值,则EXISTS 子查询的结果为true,此时再执行外层查询语句.如果没有返回行,则EXISTS 子查询 的结果为false,此时外层语句不再执行查询.  NOT EXISTS 子查询 EXISTS 子查询和NOT EXISTS 子查询的结果只取决于是否有返回记录,不取决于这些记录的内容,所以EX

MySQL数据库 高级查询(一)

常用函数 常用聚合函数: AVG() 返回某字段的平均值 COUNT() 返回某字段的行数 MAX() 返回某字段的最大值 MIN( ) 返回某字段的最小值 SUM( ) 返回某字段的和 函数名 作用 常用的字符串函数 函数名 作用 举例 CONCAT(str1,str2,...,strn) 连接字符串str1,str2,...,strn为一个完整字符串 SELECT CONCAT('My','S','QL'); 返回:MySQL INSERT(str,pos,len,newstr) 将字符串s

2014.9.9数据库高级查询

1 select * from Nation 2 select * from Info 1 --连接(列的扩展) 2 --把两个表连起来显示(第一种方法) 3 select Info.Code,Info.Name,Info.Sex,Nation.Name as nation,Info.Birthday 4 from Info,Nation 5 where Nation.Code=Info.Nation --笛卡尔积 --把列名换成汉字 [as]空格+列名 执行结果: 1 --把两个表连接起来(第

数据库-高级查询

快捷查询 快捷查询方式是一种多字段相同查询条件的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如: Db::table('think_user') ->where('name|title','like','thinkphp%') ->where('create_time&update_time','>',0) ->find(); 生成的查询SQL是: SELECT * FROM `think

MySQL 数据库 高级查询

1.连接查询select * from Info,Nation #笛卡尔积select * from Info,Nation where Info.Nation=Nation.Code join on 连接select * from Info join Nation #join连接select * from Info join Nation on Info.Nation=Nation.Code 2.联合查询select Code,Name from Infounionselect Code,Na

数据库高级查询的使用 201409005

一.连接查询 将多个表格列出来,不是SQL国际标准方法,但适用于每个表,是表格中列的扩展,表格横着铺开. 1.连接查询的方法: 1)形成笛卡尔积 select * from Info select * from nation 笛卡尔积: select info.code,info.name,info.sex,nation.name as nation,info.birthday from INFO,nation --显示info表中的code,name,sex列,并且将nation表中的name

Java数据库 高级查询

插入数据记录 1.插入单行数据 语法: INSERT INTO 表名 [(字段名列表)]  VALUES (值列表); 2.插入多行数据 语法:INSERT INTO 新表 (字段名列表) VALUES (值列表1), (值列表2), ......, (值列表n); 注意:在是INSERT语句插入记录时,如果不包含字段名称,VALUES后值列表中各字段的顺序必须和表定义中各字段的顺序相同,如果表结构变了(如执行了添加数据操作) 则值列表也要变化,否则会出现错误.如果指定了插入的字段名,就会避免这

数据库——基础(数据库操作,表格操作)——增加高级查询

笔记 LAMP:Linx(操作系统) A(阿帕奇)——网页的应用程序 M(Mysql):体积小,应用简单 P(PHP) 第一步:搭建网页环境——A\M\P WAMP:用WAMP搭建环境 DW:更好的显示 数据库的基本操作: 数据库——表结构——字段(列) 每一行数据成为一条数据(记录) 特点:关系型数据库,有严格的规范 1.必须有主键:能够唯一标识一条数据的字段 2 T-SQL:通用的数据库操作语句 自增长列code(主键列) ;连接键表 最后一个字段不加 ,#注释 创建表:create tab