SQL查询1
oracle sql 查询满足条件的1条记录
oracle sql 查询满足条件的1条记录全文共四篇示例,供读者参考第一篇示例:在数据库操作中,查询是一种非常常见的操作。
Oracle SQL是一种用于管理Oracle数据库的查询语言,它可以帮助用户高效地从数据库中检索数据。
在实际的数据库管理中,经常会遇到需要查询满足特定条件的记录的情况。
本文将介绍如何使用Oracle SQL查询满足条件的1条记录,并提供一些示例方便大家理解。
让我们来了解一下Oracle SQL的基本语法。
在Oracle SQL中,查询通常以SELECT语句开始,用于指定要检索的列。
其基本语法格式如下:SELECT 列名1, 列名2, ...FROM 表名WHERE 条件;上面的语句中,列名表示想要检索的列,表名表示要检索的数据表,条件表示要满足的筛选条件。
在我们想要查询满足条件的1条记录时,可以在条件中使用一些特殊语法,例如ROWNUM来限制返回的记录数量。
假设我们有一个名为employee的员工表,存储了员工的信息,包括员工编号(emp_id)、员工姓名(emp_name)、部门(department)、薪资(salary)等列。
现在我们想要查询薪资最高的员工的信息,可以使用以下SQL语句:SELECT emp_id, emp_name, department, salaryFROM employeeWHERE salary = (SELECT MAX(salary) FROM employee);上面的查询语句中,我们首先计算了employee表中薪资的最大值,然后在主查询中筛选出薪资等于最大值的员工记录。
这样我们就可以得到薪资最高的员工信息。
除了使用子查询来实现这种查询方式之外,我们还可以使用ROWNUM来控制返回的记录数量。
下面是一个使用ROWNUM的例子:在上面的查询语句中,我们首先按照薪资降序排序,然后使用ROWNUM来限制返回的记录数量不超过1条,这样就可以得到薪资最高的员工信息。
[tp3.2.1]sql查询语句(一)
[tp3.2.1]sql查询语句(⼀)基本查询⽅式字符串条件查询,索引数组条件查询对象条件查询SQL语句⼤⼩写是⼀样的,但是,执⾏的时候有⼀个⼩写到⼤写的转换,所以最好写⼤写$condition=new \stdClass();//对象形式查询stdClass是php内置类,可以理解为⼀个空类,这⾥要把条件作为字段保存到其中,⽽反斜杠\ 是将命名空间设置为根⽬录,否则会导致当前⽬录找不到此类。
表达式查询⼤于⼩于等于⾃定义表达式格式:$map['字段名']=array('表达式','查询条件');<?php// 本类由系统⾃动⽣成,仅供测试⽤途namespace Home\Controller;use Think\Model;use Think\Controller;class IndexController extends Controller {public function index() {// echo '<meta content-type=text/html;charset=utf-8/>';echo '<pre>';// $user=new Model('User');// var_dump( $user->select());$user = M ( 'User' );// var_dump($user->where('id=5 AND user="樱桃⼩丸⼦"')->select());// $condition['id']=5;// $condition['user']="樱桃⼩丸⼦";// var_dump($user->where($condition)->select());// //上⾯两条条件是AND的关系// $condition['_logic']="OR";// var_dump($user->where($condition)->select());$condition = new \stdClass (); // 对象形式查询// 前⾯的反斜杠表⽰按系统提供的查找std类$condition->id = 5;$condition->user = '樱桃⼩丸⼦';$condition->_logic = 'OR';var_dump ( $user->where ( $condition )->select () );}public function query() {$user = M ( 'User' );echo '<pre>';// $map['id']=array('eq',5);//这⾥到map1是随便起到,没有规定// $map['id']=array('neq',5);//id不等于5// $map['id']=array('gt',5);//id⼤于5// $map['id']=array('egt',5);//⼤于等于// $map['id']=array('lt',5);//⼩于// $map['id']=array('elt',5);//⼩于// 模糊查询,有三种// $map['user']=array('LIKE','%⼩%');//第⼀种,单⼀条件// $map['user']=array('notLIKE','%⼩%');//第⼆种, ⼤⼩写都⽆所谓 // 注意,这⾥not like没有空格的// 多条件模糊查询// $map['user']=array('like',array('%⼩%','%蜡%'),'and');// between - 区间查找,从m到n// $map['id']=array('between','5,7');//找出5到7之间的(5 6 7)// $map['id']=array('between',array('5','7'));//这是另⼀种形式// not between - 注意中间四是有⼀个空格的// $map['id']=array('not between','5,7');// in// $map['id']=array('in','5,6,8');// $map['id']=array('in',array('5','7','8'));// not in// $map['id']=array('not in','5,6,8');// $map['id']=array('not in',array('5','7','8'));// ⾃定义查询 - exp$map['id']=array('exp','=5');$map['id']=array('exp','>10');// 构建⼀个复杂点的$map ['id'] = array ('exp','=5');$map ['user'] = array ('exp','="樱桃⼩丸⼦"');$map ['_logic'] = 'or';var_dump ( $user->where ( $map )->select () );}}。
SQL数据查询1
含义
Like IN Exists
字符串匹配操作符 检查一个字段值是否属于一组值之中 检查某一个字段值是否有值,实际上它是is null 的 反义词
(3)特殊运算符
运算符号
%
含义
通配符,表示零或多个字符 通配符,表示任何一个字符 指定范围或集合中的任何单个字符 不属于指定范围或集合的任何单个字符
[] [^]
大于或等于
不等于
(2)逻辑运算符 运算符 OR 含义 或(或者),当两个条件中任何一个条件 是TRUE时取值为TRUE。 与(并且),只有当两个条件都是TRUE 时取值为TRUE 。 非(否),对指定的布尔表达式求反。
AND NOT
(3)特殊运算符
运算符号
Between Is null 定义一个区间范围 测试字段值是否为空值
4. 使用[ distinct ]短语去掉重复的记录
缺省为保留重复元组,也可用关键字all显式指明。若要去掉重复 元组,可用关键字distinct 。 格式要点:
select distinct <字段名>
from <表名>
例如:
关于中文Officexp安装的说明
姓名
select distinct from 学生成绩表
案例1: 列出学生成绩表中女生数据库成绩前10名。 select top 10 数据库 ‘数据库前10名名单’ from 学生成绩表 where 性别=„女’ order by 数据库 desc 案例2: 列出学生成绩表中男生的数据库成绩后10%名。 select top 10 percent 数据库 ‘数据库前10名名 单’
5. 用[ where ] 子句过滤记录:条件查询
sql查询排名第一的数据的sql写法1
sql查询排名第一的数据的sql写法1 SQL查询排名第一的数据的SQL写法在数据库管理系统中,排名是一个常见的需求,特别是需要从数据集中获取排名第一的记录。
在本文中,我们将介绍一些常见的SQL写法来查询排名第一的数据。
1. 使用TOP关键字在许多数据库管理系统中,如SQL Server、MySQL以及Oracle等,都支持使用TOP关键字来获取查询结果的前几条记录。
我们可以利用这个关键字来查询排名第一的数据。
```sqlSELECT TOP 1 * FROM table_name ORDER BY column_name DESC;```上述SQL查询语句中,我们使用了TOP 1来指定只返回结果的第一条记录。
ORDER BY关键字用于指定排序的列名以及排序的顺序,通过设定DESC来进行降序排列,以保证排名第一的数据被选择。
2. 使用LIMIT关键字在一些数据库管理系统中,如MySQL、PostgreSQL等,可以使用LIMIT关键字来获取查询结果的前几条记录。
类似于TOP关键字,我们可以利用LIMIT关键字来查询排名第一的数据。
```sqlSELECT * FROM table_name ORDER BY column_name DESCLIMIT 1;```在以上的SQL查询语句中,我们使用了LIMIT 1来限制只返回结果的第一条记录。
ORDER BY关键字用于指定排序的列名以及排序的顺序,通过设定DESC来进行降序排列,以确保排名第一的数据被选中。
3. 使用ROW_NUMBER函数在一些数据库管理系统中,如SQL Server、Oracle等,我们可以使用ROW_NUMBER函数来为查询结果中的每一行分配一个序号。
通过结合ROW_NUMBER函数和子查询,我们可以很容易地查询出排名第一的数据。
```sqlSELECT *FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY column_name DESC) AS row_numFROM table_name) AS subWHERE row_num = 1;```在以上的SQL查询语句中,我们首先使用ROW_NUMBER()函数为每一行分配一个序号,然后通过子查询将其作为临时表,最后在外部查询中过滤出序号为1的记录,即排名第一的数据。
数据库语言SQL——数据查询1
( 4)基于LIKE的查询 LIKE用于测试一个字符串是否与给定的模式匹配。 所谓模式是一种特殊的字符串,其中可以包含普通字符 ,也可以包含特殊意义的字符,通常叫通配符。 LIKE运算符的一般形式为:列名 LIKE <模式串>
模式串中可包含如下四种通配符: (1)_:匹配任意一个字符。如 '_u_'表示第二个字符为u, 第一、第三个字符为任意字符的字符串。 (2)%:匹配多个字符。如‘S%’表示以S开头的字符串。 (3)[ ]:匹配[ ]中的任意一个字符,如[SDJ ] 。 (4)[^ ]:不匹配[ ]中的任意一个字符,如[^SDJ ]。
( 6 )基于多个条件的查询 可以使用AND、OR逻辑谓词来连接多个条件,构成一个 复杂的查询条件。 使用格式为:<条件1> AND<条件2> AND…<条件n> 或 <条件1> OR<条件2> OR…<条件n>
【例】查询计算机系年龄在18岁以上的学生学号、姓名 解: SELECT 学号,姓名 FROM 学生信息表 WHERE 系别=‘计算机’ AND 年龄>18
对查询结果排序
● 使用ORDER
BY子句
可以按一个或多个属性列排序 升序:ASC;
降序:DESC;
默认值为升序
注: DESC 是descend 降序意思 ; ASC 是ascend 升序的意思
对查询结果排序(续)按一个属性列 排序
查询选修了3号课程的学生的学号及其成
绩,查询结果按分数降序排列。 SELECT 学号,成绩 FROM 选修信息表 WHERE 课程号= ' 3 ' ORDER BY 成绩 DESC
结构化查询语言—SQL (1)
7
4、 条件查询
在SELECT语句中,查询条件用WHERE子句来描述。主要有以下几种情况: (1)比较大小 用于比较的运算符包括:=,>,<,>=,<=,#,!=或<>。 【例5】 从XSB表中检索出高考分数多于600的学号、姓名和高考分数。 SELECT 学号,姓名,高考分数 FROM xsb WHERE 高考分数>600; (2)确定范围 BETWEEN…AND…和NOT BETWEEN…AND…分别用来描述宇段值在或不在指定 范围的条件。其中,AND的左端给出查询范围的下限,AND的右端给出的是查询范 围的上限。 【例 6】在 XSB表中查询高考分数在 550~600 之间的学生的学号、姓名、专业和高考 分数。 SELECT 学号,姓名,专业, 高考分数 FROM xsb WHERE 高考分数 BETWEEN 550 AND 600;
上一页
下一页
返 回
8
(3)确定集合 这里所说的集合是相同类型的常量所组成的集合。谓词IN用来描述字 段的值属于指定的集合,NOT IN则描述字段值不属于指定的集合。 【例7】从XSB表查询工业工程或市场营销专业的同学的学号,姓名,性别, 专业。 SELECT 学号,姓名,性别,专业 FROM XSB WHERE 专业 IN('工业工程','市场营销'); (4)字符匹配 LIKE 是字符匹配运算符,进行匹配运算时可以使用通配符“%”和 下划线“_”,其中,“%”表示0个或多个任意字符,“_”表示1个任意字 符。例如,第2个字符为B的字符串可以表示为“_B%”。 【例8】从XSB表查询所有姓“王”的同学的全部信息。 SELECT * FROM XSB WHERE 姓名 LIKE '王%';
SQL总结(一)基本查询
SQL总结(⼀)基本查询SQL总结(⼀)基本查询SQL查询的事情很简单,但是常常因为很简单的事情⽽出错。
遇到⼀些⽐较复杂的查询我们更是忘记了SQL查询的基本语法。
本⽂希望通过简单的总结,把常⽤的查询⽅法予以总结,希望能够明确在⼼。
场景:学⽣信息系统,包括学⽣信息、教师信息、专业信息和选课信息。
--学⽣信息表IF OBJECT_ID (N'Students', N'U') IS NOT NULLDROP TABLE Students;GOCREATE TABLE Students(ID int primary key not null,Name nvarchar(50),Age int,City nvarchar(50),MajorID int)--专业信息表IF OBJECT_ID (N'Majors', N'U') IS NOT NULLDROP TABLE Majors;GOCREATE TABLE Majors(ID int primary key not null,Name nvarchar(50))--课程表IF OBJECT_ID (N'Courses', N'U') IS NOT NULLDROP TABLE Courses;GOCREATE TABLE Courses(ID int primary key not null,Name nvarchar(50) not null)IF OBJECT_ID (N'SC', N'U') IS NOT NULLDROP TABLE SC;GO--选课表CREATE TABLE SC(StudentID int not null,CourseID int not null,Score int)1、基本查询从表中查询某些列的值,这是最基本的查询语句。
sql查询排名第一的数据的sql写法1
sql查询排名第一的数据的sql写法1在数据库中,有时候我们需要查询某一列的排名第一的数据,即该列中具有最高或者最小值的记录。
这样的查询可以帮助我们找到最大或最小值,或者筛选出具有特定属性的记录。
下面将介绍几种常见的SQL写法来实现这样的查询。
1. 使用子查询和ORDER BY语句首先,我们可以使用子查询和ORDER BY语句来实现查询排名第一的数据。
假设我们有一个表名为"employees",其中包含员工的工号、姓名和工资信息。
我们想要查询工资最高的员工记录,可以使用如下SQL语句:```sqlSELECT *FROM employeesWHERE salary = (SELECT MAX(salary)FROM employees);```上述SQL语句中,子查询`SELECT MAX(salary) FROM employees`用于找到工资列中的最高值。
然后外层查询使用`WHERE salary = ...`来筛选出工资等于最高值的记录。
2. 使用LIMIT子句另一种常见的方法是使用LIMIT子句来限制结果集的数量。
假设我们仍然有一个"employees"表,我们想要查询工资最高的员工记录,可以使用如下SQL语句:```sqlSELECT *FROM employeesORDER BY salary DESCLIMIT 1;```上述SQL语句中,`ORDER BY salary DESC`用于按工资列降序排列结果集,使最高工资的记录位于第一行。
然后使用`LIMIT 1`来限制结果集只返回一行记录。
3. 使用ROW_NUMBER()函数在某些数据库系统中,如Oracle和SQL Server,还可以使用ROW_NUMBER()函数来为每一行生成一个编号,根据该编号筛选出排名第一的数据。
假设我们有一个"employees"表,我们想要查询工资最高的员工记录,可以使用如下SQL语句:```sqlSELECT *FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_numFROM employees) AS ranked_employeesWHERE row_num = 1;```上述SQL语句中,子查询`SELECT *, ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num FROM employees`使用ROW_NUMBER()函数为每一行生成一个编号,根据工资列降序排列。
SQL查询一个表的总记录数的方法
SQL查询⼀个表的总记录数的⽅法⼀、简单查询语句1. 查看表结构SQL>DESC emp;2. 查询所有列SQL>SELECT * FROM emp;3. 查询指定列SQL>SELECT empmo, ename, mgr FROM emp;SQL>SELECT DISTINCT mgr FROM emp; 只显⽰结果不同的项4. 查询指定⾏SQL>SELECT * FROM emp WHERE job='CLERK';5. 使⽤算术表达式SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp;nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中⽆值,则nvl(comm,1)=0。
SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序)SQL>SELECT * FROM emp WHERE hiredate>'01-1⽉-82';6. 使⽤like操作符(%,_)%表⽰⼀个或多个字符,_表⽰⼀个字符,[charlist]表⽰字符列中的任何单⼀字符,[^charlist]或者[!charlist]不在字符列中的任何单⼀字符。
SQL>SELECT * FROM emp WHERE ename like 'S__T%';7. 在where条件中使⽤InSQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');8. 查询字段内容为空/⾮空的语句SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;9. 使⽤逻辑操作符号SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';10. 将查询结果按字段的值进⾏排序SQL>SELECT * FROM emp ORDER BY deptno, sal DESC; (按部门升序,并按薪酬降序)⼆、复杂查询1. 数据分组(max,min,avg,sum,count)SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp;SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp));SQL>SELEC COUNT(*) FROM emp;2. group by(⽤于对查询结果的分组统计)和 having⼦句(⽤于限制分组显⽰结果)SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;对于数据分组的总结:a. 分组函数只能出现在选择列表、having、order by⼦句中(不能出现在where中)b. 如果select语句中同时包含有group by, having, order by,那么它们的顺序是group by, having, order by。
数据库实验1:SQL查询操作
数据库实验1:SQL查询操作题目:设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:S(SNO,SNAME,STATUS,CITY);P(PNO,PNAME,COLOR,WEIGHT);J(JNO,JNAME,CITY);SPJ(SNO,PNO,JNO,QTY)。
供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。
零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。
工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。
工程项目表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY。
今有若干数据如下:S表:SNO SNAME STATUS CITYS1 精益20 天津S2 盛锡10 北京S3 东方红30 北京S4 丰盛泰20 天津S5 为民30 上海P表:PNO PNAME COLOR WEIGHTP1 螺母红12P2 螺栓绿17P3 螺丝刀蓝14P4 螺丝刀红14P5 凸轮蓝40P6 齿轮红30J表:JNO JNAME CITY J1 三建北京J2 一汽长春J3 弹簧厂天津J4 造船厂天津J5 机车厂唐山J6 无线电厂常州J7 半导体厂南京SPJ表:SNO PNO JNO QTY S1 P1 J1 200S1 P1 J3 100S1 P1 J4 700S1 P2 J2 100S2 P3 J1 400S2 P3 J2 200S2 P3 J4 500S2 P3 J5 400S2 P5 J1 400S2 P5 J2 100S3 P1 J1 200S3 P3 J1 200S4 P5 J1 100S4 P6 J3 300S4 P6 J4 200S5 P2 J4 100S5 P3 J1 200S5 P6 J2 200S5 P6 J4 500首先进行创建数据库、表,插入数据等操作。
SQL查询语句(一)——单表查询
SQL查询语句(⼀)——单表查询------------恢复内容开始------------⼀、查询语句语句执⾏顺序FROM ——> SELECTSELECT select_listFROM table_name;查询多列数据SELECTlastname,firstname,jobtitleFROMemployees;⼆、排序数据语句执⾏顺序FROM --> SELECT --> ORDER BYSELECTselect_listFROMtable_nameORDER BYcolumn1 [ASC|DESC],column2 [ASC|DESC],...;如果未明确指定任何排序规则,默认(升序)使⽤ORDER BY ASC升序 ASCORDER BY column1 ASC;降序 DESCORDER BY column1 DESC;多列对结果集进⾏排序ORDER BYcolumn1,column2;第⼀个名字降序排列,然后将客户的姓⽒排序SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC,contactFirstname ASC;orderNumber,orderlinenumber,quantityOrdered * priceEachFROMorderdetailsORDER BYquantityOrdered * priceEach DESC;按订单状态进⾏排序SELECTorderNumber,statusFROMordersORDER BYFIELD(status,'In Process','On Hold','Cancelled','Resolved','Disputed','Shipped');三、过滤数据WHERE⼦句,为查询返回的⾏指定搜索条件语句执⾏顺序FROM --> WHERE-->SELECT --> ORDER BYSELECTlastname,firstname,jobtitleFROMemployeesWHEREjobtitle = 'Sales Rep';WHERE⼦句与AND运算符查找职务为Sales Rep且办公代码为1的员⼯SELECTlastname,firstname,jobtitle,officeCodeFROMemployeesWHEREjobtitle = 'Sales Rep' ANDofficeCode = 1;WHERE⼦句与OR运算符查找职务为的Sales Rep员⼯或使⽤办公代码1查找办公室的员⼯SELECTlastName,firstName,jobTitle,officeCodeFROMemployeesWHEREjobtitle = 'Sales Rep' ORofficeCode = 1ORDER BYofficeCode ,jobTitle;WHERE⼦句与BETWEEN运算符查找办公室代码为1到3的办公室中的员⼯SELECTFROMemployeesWHEREofficeCode BETWEEN 1 AND 3ORDER BY officeCode;WHERE和LIKE运算符查询查找姓⽒以字符串结尾的员⼯'son'SELECTfirstName,lastNameFROMemployeesWHERElastName LIKE '%son'ORDER BY firstName;WHERE和IN操作符查找位于办公室的办公室代码为1的员⼯SELECTfirstName,lastName,officeCodeFROMemployeesWHEREofficeCode IN (1 , 2, 3)ORDER BYofficeCode;WHERE和 IS NULL 操作符在数据库世界中,NULL是⼀个标记,指⽰⼀条信息丢失或未知。
SQL数据库实验三_简单查询(1)解答
16.在订单数据库中,根据员工的薪水进行分类显示。(薪水小于2000元的,显示“低收入者”,大于等于2000元小于4000元的,显示“中等收入者”,大于等于4000元的,显示“高收入者”。
SQL语句:
SELECTemployeeNo,employeeName,salary,薪水级别=
CASE
FROMEmployee
WHEREyear(hireDate)=1991
查询结果:
其他:
selectemployeeNo,employeeName,sex,telephone=isnull(telephone,'不详'),
birthday=convert(char(10),birthday,120),year(getdate())-year(birthday)asage
fromEmployee
wheredepartment<>'业务科'anddepartment<>'财务科'
12.查询1991年被雇佣的职工号、姓名、性别、电话号码、出生日期以及年龄,如果电话号码为空,显示“不详”,出生日期按yyyy-mm-dd显示。
SQL语句:
SELECTemployeeNo,employeeName,sex,isnull(telephone,'不详')telephone,CONVERT(CHAR(10),birthday,120)birthday,year(getdate())-year(birthday)age
FROMEmployee
WHEREdepartment='业务科'ordepartment='财务科'
sql语句查询结果1结果2重命名
sql语句查询结果1结果2重命名
在 SQL 语句中,可以使用 `AS` 关键字为查询结果中的列或表达式指定别名,以重命名它们。
以下是一个示例 SQL 查询,将结果中的列重命名:
```sql
SELECT member_id AS "会员 ID", member_name AS "会员姓名"
FROM members;
```
在上述示例中,使用 `AS` 关键字将 `member_id` 列重命名为 `会员 ID`,将`member_name` 列重命名为 `会员姓名`。
如果你想为结果中的多个列重命名,可以用逗号分隔它们,并在每个列后使用 `AS` 关键字指定别名。
以下是一个示例 SQL 查询,为多个列重命名:
```sql
SELECT member_id AS "会员 ID", member_name AS "会员姓名", age AS "年龄"
FROM members;
```
通过使用别名,你可以更方便地理解和引用查询结果中的列,特别是当列名不够清晰或需要在报表或数据分析中使用更易读的名称时。
请注意,具体的语法和支持可能因所使用的数据库管理系统而有所不同。
上述示例是通用的 SQL 语法,但某些数据库可能使用不同的关键字或语法规则来实现相同的功能。
因此,请根据你使用的具体数据库系统的文档进行适当的调整。
oracle sql 查询满足条件的1条记录
oracle sql 查询满足条件的1条记录全文共四篇示例,供读者参考第一篇示例:Oracle SQL 是一种用于管理和查询数据库的强大工具,通过它我们可以轻松地从数据库中检索出满足条件的记录。
在数据库中,通常会有大量的数据需要进行查询和分析,有时候我们需要找到满足特定条件的一条记录。
下面将介绍如何使用Oracle SQL 来查询并满足条件的一条记录。
我们需要了解如何编写查询语句来搜索满足条件的记录。
在Oracle SQL 中,查询语句通常使用SELECT 语句来检索数据,而WHERE 子句用于指定筛选条件。
以下是一个基本的SELECT 查询语句的结构:SELECT 列名1, 列名2, ...FROM 表名WHERE 条件;在这个语句中,我们需要指定要检索的列名和表名,然后通过WHERE 子句来定义条件。
假设我们有一个名为“员工”的表,表中包含员工的姓名、部门和工资信息。
我们想要查找工资大于5000 的员工记录,我们可以编写如下查询语句:这个查询语句将返回满足条件的所有员工记录,但是如果我们只想要找到其中的一条记录怎么办呢?在Oracle SQL 中,可以使用ROWNUM 关键字来限制返回记录的数量,通过将ROWNUM 与条件和ORDER BY 子句一起使用,可以得到满足条件的一条记录。
以下是一个示例查询语句:SELECT *FROM 员工WHERE 工资> 5000AND ROWNUM = 1ORDER BY 工资DESC;在这个查询语句中,我们限制了返回的记录数为1 条,并按照工资的降序排列。
这将返回工资最高的员工记录。
还可以使用子查询来获取满足条件的一条记录。
子查询是一个嵌套在主查询中的查询语句,可以用来进一步筛选数据。
在这个查询语句中,我们首先使用子查询获取了销售部门的员工姓名,然后在主查询中使用该姓名作为条件来获取对应的员工记录。
在使用Oracle SQL 进行查询满足条件的一条记录时,可以通过限制返回记录数量、使用ORDER BY 子句进行排序,或者使用子查询来实现。
sql查询实例1(学生表_课程表_成绩表_教师表)
sql查询实例1(学⽣表_课程表_成绩表_教师表)表架构Student(S#,Sname,Sage,Ssex) 学⽣表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表建表语句1CREATE TABLE student2 (3 s# INT,4 sname nvarchar(32),5 sage INT,6 ssex nvarchar(8)7 )89CREATE TABLE course10 (11 c# INT,12 cname nvarchar(32),13 t# INT14 )1516CREATE TABLE sc17 (18 s# INT,19 c# INT,20 score INT21 )2223CREATE TABLE teacher24 (25 t# INT,26 tname nvarchar(16)27 )插⼊测试数据语句1insert into Student select 1,N'刘⼀',18,N'男' union all2 select 2,N'钱⼆',19,N'⼥' union all3 select 3,N'张三',17,N'男' union all4 select 4,N'李四',18,N'⼥' union all5 select 5,N'王五',17,N'男' union all6 select 6,N'赵六',19,N'⼥'78 insert into Teacher select 1,N'叶平' union all9 select 2,N'贺⾼' union all10 select 3,N'杨艳' union all11 select 4,N'周磊'1213 insert into Course select 1,N'语⽂',1 union all14 select 2,N'数学',2 union all15 select 3,N'英语',3 union all16 select 4,N'物理',41718 insert into SC19 select 1,1,56 union all20 select 1,2,78 union all21 select 1,3,67 union all22 select 1,4,58 union all23 select 2,1,79 union all24 select 2,2,81 union all25 select 2,3,92 union all26 select 2,4,68 union all27 select 3,1,91 union all28 select 3,2,47 union all29 select 3,3,88 union all30 select 3,4,56 union all31 select 4,2,88 union all32 select 4,3,90 union all33 select 4,4,93 union all34 select 5,1,46 union all35 select 5,3,78 union all36 select 5,4,53 union all37 select 6,1,35 union all38 select 6,2,68 union all39 select 6,4,71问题1问题:21、查询“001”课程⽐“002”课程成绩⾼的所有学⽣的学号;3 select a.S# from (select s#,score from SC where C#='001') a,(select s#,score4 from SC where C#='002') b5 where a.score>b.score and a.s#=b.s#;62、查询平均成绩⼤于60分的同学的学号和平均成绩;7 select S#,avg(score)8 from sc9 group by S# having avg(score) >60;103、查询所有同学的学号、姓名、选课数、总成绩;11 select Student.S#,Student.Sname,count(SC.C#),sum(score)12 from Student left Outer join SC on Student.S#=SC.S#13 group by Student.S#,Sname144、查询姓“李”的⽼师的个数;15 select count(distinct(Tname))16 from Teacher17 where Tname like '李%';185、查询没学过“叶平”⽼师课的同学的学号、姓名;19 select Student.S#,Student.Sname20 from Student21 where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平'21 where S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' 226、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;23 select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S# 247、查询学过“叶平”⽼师所教的所有课的同学的学号、姓名;25 select S#,Sname26 from Student27 where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S#288、查询课程编号“002”的成绩⽐课程编号“001”课程低的所有同学的学号、姓名;29 Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score230 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;319、查询所有课程成绩⼩于60分的同学的学号、姓名;32 select S#,Sname33 from Student34 where S# not in (select S.S# from Student AS S,SC where S.S#=SC.S# and score>60);3510、查询没有学全所有课的同学的学号、姓名;36 select Student.S#,Student.Sname37 from Student,SC38 where Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);3911、查询⾄少有⼀门课与学号为“1001”的同学所学相同的同学的学号和姓名;40 select distinct S#,Sname from Student,SC where Student.S#=SC.S# and SC.C# in (select C# from SC where S#='1001');4112、查询⾄少学过学号为“001”同学所有⼀门课的其他同学学号和姓名;42 select distinct SC.S#,Sname43 from Student,SC44 where Student.S#=SC.S# and C# in (select C# from SC where S#='001');4513、把“SC”表中“叶平”⽼师教的课的成绩都更改为此课程的平均成绩;46 update SC set score=(select avg(SC_2.score)47 from SC SC_248 where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');4914、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;50 select S# from SC where C# in (select C# from SC where S#='1002')51 group by S# having count(*)=(select count(*) from SC where S#='1002');5215、删除学习“叶平”⽼师课的SC表记录;53 Delect SC54 from course ,Teacher55 where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';5616、向SC表中插⼊⼀些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、57号课的平均成绩;58 Insert SC select S#,'002',(Select avg(score)59 from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');6017、按平均成绩从⾼到低显⽰所有学⽣的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显⽰:学⽣ID,,数据库,企业管理,英语,有效课程数,有效平均61 SELECT S# as 学⽣ID62 ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库63 ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理64 ,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语65 ,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩66 FROM SC AS t67 GROUP BY S#68 ORDER BY avg(t.score)6918、查询各科成绩最⾼和最低的分:以如下形式显⽰:课程ID,最⾼分,最低分70 SELECT L.C# As 课程ID,L.score AS 最⾼分,R.score AS 最低分71 FROM SC L ,SC AS R72 WHERE L.C# = R.C# and73 L.score = (SELECT MAX(IL.score)74 FROM SC AS IL,Student AS IM75 WHERE L.C# = IL.C# and IM.S#=IL.S#76 GROUP BY IL.C#)77 AND78 R.Score = (SELECT MIN(IR.score)79 FROM SC AS IR80 WHERE R.C# = IR.C#81 GROUP BY IR.C#82 );83⾃⼰写的:select c# ,max(score)as 最⾼分 ,min(score) as 最低分 from dbo.sc group by c#8419、按各科平均成绩从低到⾼和及格率的百分数从⾼到低顺序85 SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩86 ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数86 ,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数87 FROM SC T,Course88 where t.C#=course.C#89 GROUP BY t.C#90 ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC9120、查询如下课程平均成绩和及格率的百分数(⽤"1⾏"显⽰): 企业管理(001),马克思(002),OO&UML (003),数据库(004)92 SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分93 ,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分94 ,SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分95 ,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数96 ,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分97 ,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数98 ,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分99 ,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数100 FROM SC10121、查询不同⽼师所教不同课程平均分从⾼到低显⽰102 SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩103 FROM SC AS T,Course AS C ,Teacher AS Z104 where T.C#=C.C# and C.T#=Z.T#105 GROUP BY C.C#106 ORDER BY AVG(Score) DESC10722、查询如下课程成绩第 3 名到第 6 名的学⽣成绩单:企业管理(001),马克思(002),UML (003),数据库(004)108 [学⽣ID],[学⽣姓名],企业管理,马克思,UML,数据库,平均成绩109 SELECT DISTINCT top 3110 SC.S# As 学⽣学号,111 Student.Sname AS 学⽣姓名 ,112 T1.score AS 企业管理,113 T2.score AS 马克思,114 T3.score AS UML,115 T4.score AS 数据库,116 ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分117 FROM Student,SC LEFT JOIN SC AS T1118 ON SC.S# = T1.S# AND T1.C# = '001'119 LEFT JOIN SC AS T2120 ON SC.S# = T2.S# AND T2.C# = '002'121 LEFT JOIN SC AS T3122 ON SC.S# = T3.S# AND T3.C# = '003'123 LEFT JOIN SC AS T4124 ON SC.S# = T4.S# AND T4.C# = '004'125 WHERE student.S#=SC.S# and126 ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)127 NOT IN128 (SELECT129 DISTINCT130 TOP 15 WITH TIES131 ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)132 FROM sc133 LEFT JOIN sc AS T1134 ON sc.S# = T1.S# AND T1.C# = 'k1'135 LEFT JOIN sc AS T2136 ON sc.S# = T2.S# AND T2.C# = 'k2'137 LEFT JOIN sc AS T3138 ON sc.S# = T3.S# AND T3.C# = 'k3'139 LEFT JOIN sc AS T4140 ON sc.S# = T4.S# AND T4.C# = 'k4'141 ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);14214323、统计列印各科成绩,各分数段⼈数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]144 SELECT SC.C# as 课程ID, Cname as 课程名称145 ,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85]146 ,SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70]147 ,SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60]148 ,SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -]149 FROM SC,Course150 where SC.C#=Course.C#151 GROUP BY SC.C#,Cname;151 GROUP BY SC.C#,Cname;15215324、查询学⽣平均成绩及其名次154 SELECT 1+(SELECT COUNT( distinct 平均成绩)155 FROM (SELECT S#,AVG(score) AS 平均成绩156 FROM SC157 GROUP BY S#158 ) AS T1159 WHERE 平均成绩 > T2.平均成绩) as 名次,160 S# as 学⽣学号,平均成绩161 FROM (SELECT S#,AVG(score) 平均成绩162 FROM SC163 GROUP BY S#164 ) AS T2165 ORDER BY 平均成绩 desc;16616725、查询各科成绩前三名的记录:(不考虑成绩并列情况)168 SELECT t1.S# as 学⽣ID,t1.C# as 课程ID,Score as 分数169 FROM SC t1170 WHERE score IN (SELECT TOP 3 score171 FROM SC172 WHERE t1.C#= C#173 ORDER BY score DESC174 )175 ORDER BY t1.C#;17626、查询每门课程被选修的学⽣数177 select c#,count(S#) from sc group by C#;17827、查询出只选修了⼀门课程的全部学⽣的学号和姓名179 select SC.S#,Student.Sname,count(C#) AS 选课数180 from SC ,Student181 where SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;18228、查询男⽣、⼥⽣⼈数183 Select count(Ssex) as 男⽣⼈数 from Student group by Ssex having Ssex='男';184 Select count(Ssex) as ⼥⽣⼈数 from Student group by Ssex having Ssex='⼥';18529、查询姓“张”的学⽣名单186 SELECT Sname FROM Student WHERE Sname like '张%';18730、查询同名同性学⽣名单,并统计同名⼈数188 select Sname,count(*) from Student group by Sname having count(*)>1;;18931、1981年出⽣的学⽣名单(注:Student表中Sage列的类型是datetime)190 select Sname, CONVERT(char (11),DATEPART(year,Sage)) as age191 from student192 where CONVERT(char(11),DATEPART(year,Sage))='1981';19332、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列194 Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;19533、查询平均成绩⼤于85的所有学⽣的学号、姓名和平均成绩196 select Sname,SC.S# ,avg(score)197 from Student,SC198 where Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;19934、查询课程名称为“数据库”,且分数低于60的学⽣姓名和分数200 Select Sname,isnull(score,0)201 from Student,SC,Course202 where SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score <60; 20335、查询所有学⽣的选课情况;204 SELECT SC.S#,SC.C#,Sname,Cname205 FROM SC,Student,Course206 where SC.S#=Student.S# and SC.C#=Course.C# ;20736、查询任何⼀门课程成绩在70分以上的姓名、课程名称和分数;208 SELECT distinct student.S#,student.Sname,SC.C#,SC.score209 FROM student,Sc210 WHERE SC.score>=70 AND SC.S#=student.S#;21137、查询不及格的课程,并按课程号从⼤到⼩排列212 select c# from sc where scor e <60 order by C# ;21338、查询课程编号为003且课程成绩在80分以上的学⽣的学号和姓名;214 select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003'; 21539、求选了课程的学⽣⼈数216 select count(*) from sc;21740、查询选修“叶平”⽼师所授课程的学⽣中,成绩最⾼的学⽣姓名及其成绩218 select Student.Sname,score219 from Student,SC,Course C,Teacher220 where Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C# 22141、查询各个课程及相应的选修⼈数222 select count(*) from sc group by C#;22342、查询不同课程成绩相同的学⽣的学号、课程号、学⽣成绩224 select distinct A.S#,B.score from SC A ,SC B where A.Score=B.Score and A.C# <>B.C# ;22543、查询每门功成绩最好的前两名226 SELECT t1.S# as 学⽣ID,t1.C# as 课程ID,Score as 分数227 FROM SC t1228 WHERE score IN (SELECT TOP 2 score229 FROM SC230 WHERE t1.C#= C#231 ORDER BY score DESC232 )233 ORDER BY t1.C#;23444、统计每门课程的学⽣选修⼈数(超过10⼈的课程才统计)。
SQL数据库实验三_简单查询(1)解答
其他:
selectemployeeName,department,
case
whensex='M'then'男'
whensex='F'then'女
whereemployeeNamelike'张%'
10.查询姓张且全名为三个汉字的职工姓名。
SQL语句:
SELECTemployeeName
9.查询所有姓张的职工姓名、所属部门和性别,且性别显示为“男”或“女”。
SQL语句:
SELECTemployeeName,department,sex=
casesex
WHEN'M'THEN'男'
WHEN'F'THEN'女'
ELSE'不详'
END
FROMEmployee
WHEREemployeeNameLIKE'张%'
whensalary<2000then'低收入者'
whensalary>=2000andsalary<4000then'中等收入者'
whensalary>=4000then'高收入者'
end
fromEmployee
WHEREyear(birthday)=1973ANDheadShip='职员'
查询结果:
其他:
SELECT*
FROMEmployee
WHEREyear(birthday)='1973'ANDheadShip='职员'
sql检索第二行到第四行的内容(一)
sql检索第二行到第四行的内容(一)
SQL检索第二行到第四行的内容
简介
在SQL数据库中,我们经常需要从表中检索特定范围的数据。
本文将介绍如何使用SQL语句来检索第二行到第四行的内容。
步骤
1.SELECT语句首先,我们需要使用SELECT语句来选择需要的数
据列。
例如,如果我们有一个名为table_name的表,并且希望检索其中的column_name列,可以使用以下语法:
SELECT column_name
FROM table_name
2.使用LIMIT限制结果集接下来,我们将使用LIMIT关键字来限
制结果集。
LIMIT关键字用于指定返回的行数范围。
例如,如果我们希望返回第二行到第四行的内容,可以通过以下方式完成:SELECT column_name
FROM table_name
LIMIT 1, 3
这里的1表示要跳过的行数,3表示要返回的行数。
需要注意的是,LIMIT中的行数是从0开始计数的。
3.完整的SQL语句综合以上步骤,下面是一个完整的SQL语句示
例:
SELECT column_name
FROM table_name
LIMIT 1, 3
结论
通过使用上述步骤,我们可以轻松地检索SQL表中第二行到第四
行的内容。
学习和掌握SQL的基本语法是数据库操作的重要基础。
虽然本文只是简单介绍了如何检索特定范围的数据,但在实际应
用中,还可以结合其他SQL语句,例如WHERE子句来进一步筛选数据。
深入学习SQL语言将使您能够更好地操作数据库和处理数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章:关系数据库标准语言SQL(1)
一、概述
1、结构化查询语言Structured Query Language的缩写
2、SQL命令和FOXPRO命令的区别
Foxpro命令只适用于Foxpro这一种数据库管理软件
SQL命令是所有关系型数据库的通用语言,是独立于Foxpro的,在Access、DB2、SQL server等关系型数据库中都可以使用。
例:在第四章中学到的关于表的修改命令:replace,而在SQL中同样存在数据表的更新命令,这时则为:update
3、功能
数据查询、数据定义、数据操纵、数据控制,其中数据查询是核心内容。
二、查询功能
基本命令格式:select <字段名> from <表名> where <条件>
1、简单查询
适用范围:这类查询基于单个表,查询的结果和所涉及的条件只来自于一张表。
例1:从职工表中查询所有的工资
select 工资 from 职工
注:如果要去掉查询结果中的重复值则可以使用distinct短语select distinct 工资 from 职工
例2:查询工资多于1230元的职工的职工号
select 职工号 from 职工 where 工资>1230
例3:查询在仓库“wh1”或“wh2”工作,并且工资少于1250元的职工号
select 职工号 from 职工;
where 工资<1250 and (仓库号=“wh1”or仓库号=“wh2”)
思考:这里的条件中的括号是否可以不用??为什么??
练习:查询在北京的面积大于300的仓库的仓库号和面积
2、简单的联接查询
适用范围:这类查询基于多张表,即查询的结果来自不同的表。
格式select <字段名> from <表名> where <条件> and <联接条件>例1:查询工资多于1230元的职工的职工号和他们所在的城市select 职工号,城市 from 职工,仓库;
where (工资>1230) and (职工.仓库号=仓库.仓库号)
思考:该题中工资>1230中的括号是否可以去掉??
例2:查询工作在面积大于400的仓库的职工的职工号以及这些职工所在的城市
select 职工号,城市 from 仓库,职工;
where 面积>400 and (职工.仓库号=仓库.仓库号)
练习:查询工资高于1220元的职工的职工号和他们所在的城市的面积。
3、嵌套查询
适用范围:这类查询基于多张表。
查询的结果来自于一张表,但所涉及的条件来自于多张表
例1、哪些城市至少有一个仓库的职工工资为1250元?
Select 城市 from 仓库 where 仓库号 in ;
(select 仓库号 from 职工 where 工资=1250)
例2、查询所有职工的工资都高于1210元的仓库的信息
select * from 仓库 where 仓库号 in;
(select 仓库号 from 职工 where 工资>1210)
练习:查询面积大于350的仓库的仓库号和该仓库职工的职工号
课后思考及练习:
1、查询在北京的供应商的名称
2、查询向供应商S3发过订购单的职工的职工号和仓库号
3、查询和职工e1、e3都有联系的北京的供应商的信息。