SQL查询语句用法及实例

合集下载

sql语句大全及用法 freebuf

sql语句大全及用法 freebuf

sql语句大全及用法 freebuf SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言,它使用一系列指令来操作数据库。

下面是一些常用的SQL语句及其用法:1. SELECT:从数据库中检索数据。

用法:SELECT column1, column2, … FROM table_name;2. WHERE:过滤记录,执行条件查询。

用法:SELECT * FROM table_name WHERE column_name operator value;3. INSERT INTO:将新记录插入到表中。

用法:INSERT INTO table_name(column1, column2, …) VALUES(value1, value2, …);4. UPDATE:更新表中的记录。

用法:UPDATE table_name SET column_name = new_value WHERE column_name = value;5. DELETE:删除表中的记录。

用法:DELETE FROM table_name WHERE column_name = value;6. JOIN:在两个或多个表之间建立连接,并从中检索数据。

用法:SELECT * FROM table_name1 JOIN table_name2 ONtable_name1.column_name = table_name2.column_name;7. GROUP BY:根据一个或多个列对结果进行分组。

用法:SELECT column1, COUNT(column2) FROM table_name GROUP BY column1;8. ORDER BY:根据一个或多个列对结果进行排序。

用法:SELECT * FROM table_name ORDER BY column_nameASC/DESC;9. DISTINCT:返回不同的值,消除重复的行。

数据库联表查询sql语句实例

数据库联表查询sql语句实例

数据库联表查询sql语句实例
以下是一个简单的数据库联表查询的SQL语句示例:
假设我们有两个表,一个是学生表(Students),另一个是班级表(Classes),它们之间存在一对多的关系,即一个班级可以有多个学生,但一个学生只属于一个班级。

我们想要查询学生的姓名以及对应的班级名称。

```sql
SELECT ,Classes.class_name
FROM Students
JOIN Classes ON Students.class_id=Classes.class_id;
```
在这个SQL语句中:
-`SELECT`关键字用于选择我们要查询的列,这里选择了学生表中的姓名
()和班级表中的班级名称(Classes.class_name)。

-`FROM`关键字指定了我们要从哪些表中查询数据,这里是学生表(Students)。

-`JOIN`关键字用于将两个表连接起来,这里我们使用了内连接(INNER JOIN),并且指定了连接条件,即学生表中的班级ID(Students.class_id)等于班级表中的班级ID (Classes.class_id)。

-最后,我们使用了`ON`关键字来指定连接条件。

这样,我们就可以通过这个SQL语句查询出学生的姓名以及对应的班级名称了。

sql 查询语句实例

sql   查询语句实例

一仓库管理类仓库(仓库号,城市,面积)职工(职工号,仓库号,工资)订购单(订购单号,职工,供应商号,订购时间)供应商(供应商号,供应商名,地址)1.检索在北京的供应商的名称SELECT *FROM 供应商where 地址='北京'2.检索发给供应商S6的订购单号SELECT 订购单号FROM 订购单where 供应商号='S6'3.检索出职工E6发给供应商S6的订购单信息SELECT 订购单号FROM 订购单where 职工号='E6'AND 供应商号='S6'4.检索出向供应商S3发过订购单的职工的职工号和仓库号SELECT 职工.职工号,仓库号FROM 职工,订购单where 职工.职工号=订购单.职工号AND 供应商号='S3'5.检索出目前与S3供应商没有联系的职工信息SELECT 职工.职工号from 职工where 职工.职工号not in (SELECT 职工.职工号FROM 职工,订购单where 职工.职工号=订购单.职工号AND 供应商号='S3')6.检索出目前没有任何订购单的供应商信息。

SELECT *from 供应商where 供应商.供应商号not in (SELECT 供应商号FROM 订购单where 供应商.供应商号=订购单.供应商号)7.检索出和职工E1、E3都有联系的北京的供应商信息。

SELECT *from 供应商where 地址='北京'and 供应商号in (SELECT 供应商号FROM 订购单where 职工号='E1')and 供应商号in (SELECT 供应商号FROM 订购单where 职工号='E3')8.检索出目前和华通电子公司有业务联系的每个职工的工资。

SELECT 职工号,工资from 职工where 职工号in (SELECT 职工号FROM 订购单where 供应商号in (SELECT 供应商号FROM 供应商where 供应商名='华通电子公司'))9.检索出与工资在1220元以下的职工没有联系的供应商的名称。

SQL语句大全实例

SQL语句大全实例

表操作例1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTSSNO NUMERIC 6, 0 NOT NULLSNAME CHAR 8 NOT NULLAGE NUMERIC3,0SEX CHAR2BPLACE CHAR20PRIMARY KEYSNO例2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLSSNO NUMERIC6,0 NOT NULLCNO CHAR4 NOT NULLGRADE INTPRIMARY KEYSNO,CNOFOREIGN KEYSNO REFERENCES STUDENTSSNOFOREIGN KEYCNO REFERENCES COURSESCNOCHECK GRADE IS NULL OR GRADE BETWEEN 0 AND 100例3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表;CREATE TABLE GIRLAS SELECT SNO, SNAME, AGEFROM STUDENTSWHERE SEX=' 女';例4 删除教师表TEACHER ;DROP TABLE TEACHER例5 在教师表中增加住址列;ALTER TABLE TEACHERSADD ADDR CHAR50例6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除;ALTER TABLE STUDENTSDROP BPLACE CASCADE例7 补充定义ENROLLS 表的主关键字;ALTER TABLE ENROLLSADD PRIMARY KEY SNO,CNO ;视图操作虚表例9 建立一个只包括教师号、姓名和年龄的视图FACULTY ; 在视图定义中不能包含ORDER BY 子句CREATE VIEW FACULTYAS SELECT TNO, TNAME, AGEFROM TEACHERS例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE , 它包括学生姓名、课程名和成绩;CREATE VIEW GRADE_TABLEAS SELECT SNAME,CNAME,GRADEFROM STUDENTS,COURSES,ENROLLSWHERE =AND=例11 删除视图GRADE_TABLEDROP VIEW GRADE_TABLE RESTRICT索引操作例12 在学生表中按学号建立索引;CREATE UNIQUE INDEX STON STUDENTS SNO,ASC例13 删除按学号所建立的索引;DROP INDEX ST数据库模式操作例14 创建一个简易教学数据库的数据库模式TEACHING_DB ,属主为ZHANG ;CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG例15 删除简易教学数据库模式TEACHING_DB ; 1 选用CASCADE ,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全部被删除; 2 选用RESTRICT ,即本数据库模式下属的基本表、视图、索引等事先已清除,才能删除本数据库模式,否则拒绝删除;DROP SCHEMA TEACHING_DB CASCADE单表操作例16 找出 3 个学分的课程号和课程名;SELECT CNO, CNAMEFROM COURSESWHERE CREDIT =3例17 查询年龄大于22 岁的学生情况;SELECTFROM STUDENTSWHERE AGE >22例18 找出籍贯为河北的男生的姓名和年龄;SELECT SNAME, AGEFROM STUDENTSWHERE BPLACE =' 河北' AND SEX =' 男'例19 找出年龄在20 ~23 岁之间的学生的学号、姓名和年龄,并按年龄升序排序; ASC 升序或DESC 降序声明排序的方式,缺省为升序;SELECT SNO, SNAME, AGEFROM STUDENTSWHERE AGE BETWEEN 20 AND 23ORDER BY AGE例20 找出年龄小于23 岁、籍贯是湖南或湖北的学生的姓名和性别;条件比较运算符=、<和逻辑运算符AND 与,此外还可以使用的运算符有:>大于、>=大于等于、<=小于等于、<>不等于、NOT 非、OR 或等;谓词LIKE 只能与字符串联用,常常是“ <列名>LIKE pattern” 的格式;特殊字符“_” 和“%” 作为通配符;谓词IN 表示指定的属性应与后面的集合括号中的值集或某个查询子句的结果中的某个值相匹配,实际上是一系列的OR 或的缩写;谓词NOT IN 表示指定的属性不与后面的集合中的某个值相匹配;谓词BETWEEN 是“ 包含于… 之中” 的意思;SELECT SNAME, SEXFROM STUDENTSWHERE AGE <23 AND BPLACE LIKE' 湖%'或SELECT SNAME, SEXFROM STUDENTSWHERE AGE <23 AND BPLACE IN ' 湖南' , ' 湖北'例22 找出学生表中籍贯是空值的学生的姓名和性别;在SQL 中不能使用条件:<列名>=NULL ;在SQL 中只有一个特殊的查询条件允许查询NULL 值:SELECT SNAME, SEXFROM STUDENTSWHERE BPLACE IS NULL多表操作例23 找出成绩为95 分的学生的姓名;子查询SELECT SNAMEFROM STUDENTSWHERE SNO =SELECT SNOFROM ENROLLSWHERE GRADE =95例24 找出成绩在90 分以上的学生的姓名;SELECT SNAMEFROM STUDENTSWHERE SNO INSELECT SNOFROM ENROLLSWHERE GRADE >90或SELECT SNAMEFROM STUDENTSWHERE SNO =ANYSELECT SNOFROM ENROLLSWHERE GRADE >90例25 查询全部学生的学生名和所学课程号及成绩;连接查询SELECT SNAME, CNO, GRADEFROM STUDENTS, ENROLLSWHERE =例26 找出籍贯为山西或河北,成绩为90 分以上的学生的姓名、籍贯和成绩;当构造多表连接查询命令时,必须遵循两条规则;第一,连接条件数正好比表数少 1 若有三个表,就有两个连接条件;第二,若一个表中的主关键字是由多个列组成,则对此主关键字中的每一个列都要有一个连接条件也有少数例外情况SELECT SNAME, BPLACE, GRADEFROM STUDENTS, ENROLLSWHERE BPLACE IN ‘ 山西’ , ‘ 河北’AND GRADE >=90 AND =例28 查出课程成绩在80 分以上的女学生的姓名、课程名和成绩; FROM 子句中的子查询SELECT SNAME,CNAME, GRADEFROM SELECT SNAME, CNAME , GRADEFROM STUDENTS, ENROLLS,COURSESWHERE SEX =' 女'AS TEMP SNAME, CNAME,GRADEWHERE GRADE >80表达式与函数的使用例29 查询各课程的学时数;算术表达式由算术运算符+、-、、/与列名或数值常量所组成;SELECT CNAME,COURSE_TIME =CREDIT16FROM COURSES例30 找出教师的最小年龄;内部函数:SQL 标准中只使用COUNT 、SUM 、AVG 、MAX 、MIN 函数,称之为聚集函数Set Function ; COUNT 函数的结果是该列统计值的总数目, SUM 函数求该列统计值之和, AVG 函数求该列统计值之平均值, MAX 函数求该列最大值, MIN 函数求该列最小值;SELECT MINAGEFROM TEACHERS例31 统计年龄小于等于22 岁的学生人数;统计SELECT COUNTFROM STUDENTSWHERE AGE < =22例32 找出学生的平均成绩和所学课程门数;SELECT SNO, AVGGRADE, COURSES =COUNTFROM ENROLLSGROUP BY SNO例34 找出年龄超过平均年龄的学生姓名;SELECT SNAMEFROM STUDENTSWHERE AGE >SELECT AVGAGEFROM STUDENTS例35 找出各课程的平均成绩,按课程号分组,且只选择学生超过 3 人的课程的成绩; GROUP BY 与HAVINGGROUP BY 子句把一个表按某一指定列或一些列上的值相等的原则分组,然后再对每组数据进行规定的操作;GROUP BY 子句总是跟在WHERE 子句后面,当WHERE 子句缺省时,它跟在FROM 子句后面;HAVING 子句常用于在计算出聚集之后对行的查询进行控制;SELECT CNO, AVGGRADE, STUDENTS =COUNTFROM ENROLLSGROUP BY CNOHAVING COUNT >= 3相关子查询例37 查询没有选任何课程的学生的学号和姓名;当一个子查询涉及到一个来自外部查询的列时,称为相关子查询Correlated Subquery ;相关子查询要用到存在测试谓词EXISTS 和NOT EXISTS ,以及ALL 、ANY SOME 等;SELECT SNO, SNAMEFROM STUDENTSWHERE NOT EXISTSSELECTFROM ENROLLSWHERE =例38 查询哪些课程只有男生选读;SELECT DISTINCT CNAMEFROM COURSES CWHERE ' 男' =ALLSELECT SEXFROM ENROLLS , STUDENTSWHERE = AND=例39 要求给出一张学生、籍贯列表,该表中的学生的籍贯省份,也是其他一些学生的籍贯省份;SELECT SNAME, BPLACEFROM STUDENTS AWHERE EXISTSSELECTFROM STUDENTS BWHERE = AND< >例40 找出选修了全部课程的学生的姓名;本查询可以改为:查询这样一些学生,没有一门课程是他不选修的;SELECT SNAMEFROM STUDENTSWHERE NOT EXISTSSELECTFROM COURSESWHERE NOT EXISTSSELECTFROM ENROLLSWHERE =AND =关系代数运算例41 设有某商场工作人员的两张表:营业员表SP_SUBORD 和营销经理表SP_MGR ,其关系数据模式如下:SP_SUBORD SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICESP_MGR SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE其中,属性SALPERS_ID 为工作人员的编号, SALPERS_NAME 为工作人员的姓名, MANAGER_ID 为所在部门经理的编号, OFFICE 为工作地点;若查询全部商场工作人员,可以用下面的SQL 语句:SELECT FROM SP_SUBORDUNIONSELECT FROM SP_MGR或等价地用下面的SQL 语句:SELECTFROM TABLE SP_SUBORD UNION TABLE SP_MGR2 INTERSECTSELECT FROM SP_SUBORDINTERSECTSELECT FROM SP_MGR或等价地用下面的SQL 语句:SELECTFROM TABLE SP_SUBORD INTERSECT TABLE SP_MGR或用带ALL 的SQL 语句:SELECT FROM SP_SUBORDINTERSECT ALLSELECT FROM SP_MGR或SELECTFROM TABLE SP_SUBORD INTERSECT ALL TABLE SP_MGR3 EXCEPTSELECT FROM SP_MGREXCEPTSELECT FROM SP_SUBORD或等价地用下面的SQL 语句:SELECTFROM TABLE SP_MGR EXCEPT TABLE SP_ SUBORD或用带ALL 的SQL 语句:EXCEPT ALLSELECT FROM SP_SUBORD例42 查询籍贯为四川、课程成绩在80 分以上的学生信息及其成绩;自然连接SELECT FROM STUDENTSWHERE BPLACE=‘ 四川’NATURAL JOINSELECT FROM ENROLLSWHERE GRADE >=80例列出全部教师的姓名及其任课的课程号、班级;外连接与外部并外连接允许在结果表中保留非匹配元组,空缺部分填以NULL ;外连接的作用是在做连接操作时避免丢失信息;外连接有3 类:1 左外连接Left Outer Join ;连接运算谓词为LEFT OUTER JOIN ,其结果表中保留左关系的所有元组;2 右外连接Right Outer Join ;连接运算谓词为RIGHT OUTER JOIN ,其结果表中保留右关系的所有元组;3 全外连接Full Outer Join ;连接运算谓词为FULL OUTER JOIN ,其结果表中保留左右两关系的所有元组;SELECT TNAME, CNO, CLASSFROM TEACHERS LEFT OUTER JOIN TEACHING USING TNOSQL 的数据操纵例44 把教师李映雪的记录加入到教师表TEACHERS 中;插入INSERT INTO TEACHERSVALUES1476 , ' 李映雪' , 44 , ' 副教授'例45 成绩优秀的学生将留下当教师;INSERT INTO TEACHERS TNO , TNAMESELECT DISTINCT SNO , SNAMEFROM STUDENTS , ENROLLSWHERE =AND GRADE >=90例47 把所有学生的年龄增加一岁;修改UPDATE STUDENTSSET AGE =AGE+1例48 学生张春明在数据库课考试中作弊,该课成绩应作零分计;UPDATE ENROLLSSET GRADE =0WHERE CNO ='C1' AND' 张春明' =SELECT SNAMEFROM STUDENTSWHERE =例49 从教师表中删除年龄已到60 岁的退休教师的数据;删除WHERE AGE >=60SQL 的数据控制例50 授予LILI 有对表STUDENTS 的查询权;表/视图特权的授予一个SQL 特权允许一个被授权者在给定的数据库对象上进行特定的操作;授权操作的数据库对象包括:表/ 视图、列、域等;授权的操作包括:INSERT 、UPDATE 、DELETE 、SELECT 、REFERENCES 、TRIGGER 、UNDER 、USAGE 、EXECUTE 等;其中INSERT 、UPDATE 、DELETE 、SELECT 、REFERENCES 、TRIGGER 有对表做相应操作的权限,故称为表特权;GRANT SELECT ON STUDENTSTO LILIWITH GRANT OPTION例51 取消LILI 的存取STUDENTS 表的特权;REVOKE ALLON STUDENTSFROM LILI CASCADE不断补充中:1. 模糊查找:它判断列值是否与指定的字符串格式相匹配;可用于char、varchar、text、ntext、datetime 和smalldatetime等类型查询;可使用以下通配字符:百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%;下划线_:匹配单个任意字符,它常用来限制表达式的字符长度;方括号:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个;^:其取值也相同,但它要求所匹配对象为指定字符以外的任一个字符;例如:限制以Publishing结尾,使用LIKE '%Publishing'限制以A开头:LIKE 'A%'限制以A开头外:LIKE '^A%'2.更改表格ALTER TABLE table_nameADD COLUMN column_name DATATYPE说明:增加一个栏位没有删除某个栏位的语法;ALTER TABLE table_nameADD PRIMARY KEY column_name说明:更改表得的定义把某个栏位设为主键;ALTER TABLE table_nameDROP PRIMARY KEY column_name说明:把主键的定义删除;by在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集;group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果;在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数select maxsal,job emp group by job;注意maxsal,job的job并非一定要出现,但有意义查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数;select deptno,sumsal from emp where sal>1200 group by deptno having sumsal>8500 order by deptno;当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组;在一个sql语句中可以有where子句和having子句;having 与where 子句类似,均用于设置限定条件where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行;having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组;查询每个部门的每种职位的雇员数select deptno,job,count from emp group by deptno,job;4.外连接与内连接有时候,即使在连接的表中没有相应的行,用户可能想从一张表中看数据,Oracle提供了外连接实现该功能;内连接是指连接查询只显示完全满足连接条件的记录,即等值连接,外连接的查询结果是内连接查询结果的扩展;外连接不仅返回满足连接条件的所有记录而且也返回了一个表中那些在另一个表中没有匹配行的记录;外连接的操作符是“+”;“+”号放在连接条件中信息不完全的那一边即没有相应行的那一边;运算符“+”影响NULL行的建立;建一行或多行NULL来匹配连接的表中信息完全的行;外连接运算符“+”只能出现在where子句中表达式的一边;假如在多张表之间有多个连接条件,外连接运算符不能使用or,in逻辑运算符与其它条件组合;假如emp表中deptno=10的ename为空值,dept表中deptno=20的loc为空值:1.selectename,,locfromemp,deptwhere+=;如果在中有的数值在中没有值,则在做外连接时,结果中ename会产生一个空值;=102.selectename,,locfromemp,deptwhere=+;如果在中有的数值在中没有值,则在做外连接时,结果中loc会产生一个空值;;=205.自连接自连接是指同一张表的不同行间的连接;该连接不受其他表的影响;用自连接可以比较同一张表中不同行的某一列的值;因为自连接查询仅涉及到某一张表与其自身的连接;所以在from子句中该表名出现两次,分别用两个不同的别名表示,两个别名当作两张不同的表进行处理,与其它的表连接一样,别名之间也使用一个或多个相关的列连接;为了区分同一张表的不同行的列,在名前永别名加以限制;select,managerfromemp worker,emp managerwhere=;6.集合运算基合运算符可以用于从多张表中选择数据;①UNION运算用于求两个结果集合的并集两个结果集合的所有记录,并自动去掉重复行;select ename,sal from account where sal>2000unionselect ename,sal from research where sal>2000unionselect ename,sal from sales where sal>2000;注:ename,sal 是必须一致的;②UNION ALL运算用于求两个结果集合的并集两个结果集中的所有记录,并且不去掉重复行;select ename,sal from account where sal>2000unionselect ename,sal from research where sal>2000unionselect ename,sal from sales where sal>2000;③INTERSECT运算intersect运算返回查询结果中相同的部分;各部门中有哪些相同的职位select Job from accountintersectselect Job from researchintersectselect Job from sales;④MINUS运算minus返回两个结果集的差集;在第一个结果集中存在的,而在第二个结果集中不存在的行; 有那些职位是财务部中有,而在销售部门中没有select Job from accountminusselect Job from sales;。

SQL数据库查询语句范例

SQL数据库查询语句范例

SQ基础查询(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。

1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。

例如:Select nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。

定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:Select 昵称=nickname,电子邮件=email FROM testtable4、删除重复行Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。

使用DISTINCT选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。

5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。

例如:Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable(二) FROM子句FROM子句指定Select语句查询及与查询相关的表或视图。

在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。

在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。

例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:Select username,citytable.cityid FROM usertable,citytableWhere usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名:表名 as 别名表名别名例如上面语句可用表的别名格式表示为:Select username,b.cityid FROM usertable a,citytable b Where a.cityid=b.cityidSelect不仅能从表或视图中检索数据,它还能够从其它查询语句所返回的结果集合中查询数据。

postgresql 查询sql语句

postgresql 查询sql语句

一、概述在进行数据库操作时,查询是最为常见且重要的一种操作。

而在PostgreSQL数据库中,查询SQL语句是用来与数据库进行交互的主要方式之一。

通过查询SQL语句,用户可以从数据库中检索、筛选、分组、排序等操作,从而得到想要的数据结果。

二、基本语法1. SELECT语句SELECT语句是用来检索数据库中的数据的主要方式。

其基本语法格式如下:```sqlSELECT column1, column2, ...FROM table_nameWHERE conditions;```其中,column1, column2是要检索的列名,table_name是要检索的表名,conditions是检索的条件。

2. WHERE子句WHERE子句用于指定检索数据的条件,只有满足条件的数据才会被检索出来。

其语法格式如下:```sqlSELECT column1, column2, ...FROM table_nameWHERE condition1 AND/OR condition2 ...;```3. ORDER BY子句ORDER BY子句用来根据指定的列对查询结果进行排序。

其语法格式如下:```sqlSELECT column1, column2, ...FROM table_nameORDER BY column1 ASC/DESC, column2 ASC/DESC ...;```4. GROUP BY子句GROUP BY子句用来对查询结果进行分组统计,通常会与聚合函数一起使用。

其语法格式如下:```sqlSELECT column1, column2, AGGREGATE_FUNCTION(column3) FROM table_nameGROUP BY column1, column2;```5. HAVING子句HAVING子句用来对分组进行筛选,只有满足条件的分组才会被检索出来。

其语法格式如下:```sqlSELECT column1, AGGREGATE_FUNCTION(column2)FROM table_nameGROUP BY column1HAVING conditions;```三、实例演示假设有一个名为students的表,包含了学生的尊称、芳龄、性莂和成绩等字段,我们可以通过以下实例演示查询SQL语句的使用。

sql条件查询语句的简单实例

sql条件查询语句的简单实例

今天在配置sqlserver代理服务器的计划任务的时候发现了日志中提示这个sql尚未定义空闲cpu条件onidle作业计划将不起任何作用信息导致无法执行计划任务那么可以按照下面的方法解决即可
sql条 件 查 询 语 句 的 简 单 实 例
复制代码 代码如下:
//创建成绩表 create tabl result(stu_id varchar2(20) not null, china number(9,2) null, math number(9,2) null, english number(9,2) null );
//插入数据 insert into result values('0001',60,20,80); insert into result values('0002',80,60,80); insert into result values('0003',20,85,80); select *from result;
//条件查询 select stu_id,(case
when china>80 then '优秀' when china>=60 then '及格' when china<60 then '不及格' end) as 语文 , (case when math>80 then '优秀' when math>=60 then '及格' when math<60 then '不及格' end )as 数学 , (case when english>80 then '优秀' when english>=60 then '及格' when english<60 then '不及格' end) as 英语 from result

sql多对象查询语句in用法

sql多对象查询语句in用法

sql多对象查询语句in用法一、概述在SQL查询语句中,IN运算符用于指定一个值列表,以便从多个对象中选择符合条件的记录。

使用IN运算符可以提高查询效率,减少不必要的连接和筛选操作。

二、语法结构IN运算符的一般语法如下:SELECT列名1,列名2,...FROM表名WHERE条件IN(值1,值2,...);其中,条件表示要筛选的列或表达式,IN后的括号内是一个值列表,用于指定要匹配的值。

三、示例以下是一个使用IN运算符的示例查询语句:假设我们有两个表:Customers(客户)和Orders(订单),我们想要查找所有在特定城市(如北京)下订单的客户信息。

1.使用IN运算符查询多个对象:SELECT*FROMCustomersWHERECityIN('北京');这个查询将从Customers表中选择所有城市为'北京'的客户记录。

2.使用IN运算符连接多个表:假设我们还有一个Orders表,其中包含订单的详细信息,我们想要查询在特定城市下订单的所有客户的详细信息。

可以使用以下查询语句:SELECTCustomers.*,Orders.OrderId,Orders.OrderDateFROMCustomersINNERJOINOrdersONCustomers.CustomerId=Orders.CustomerIdWHERECustomers.CityIN('北京');这个查询将连接Customers和Orders表,并筛选出所有城市为'北京'的客户订单信息。

四、注意事项1.IN运算符可以与多个列或表达式一起使用,以匹配多个条件。

2.值列表中的值应使用单引号括起来,可以是字符串或数字等数据类型。

3.IN运算符可以提高查询效率,但也会增加连接操作的次数,因此在使用时应考虑查询性能和数据量的大小。

4.在使用IN运算符时,应确保值列表中的值与要匹配的列或表达式的数据类型相匹配,否则可能会导致错误或不确定的结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Top
• 指定只返回前面一定数量的数据。当查询到的数 据量非常庞大,但没有必要对所有数据进行浏览 时,使用Top关键字可以大大减少查询花费的时 间。 Select [Top integer|Top integer Percent] column_name[,…n] From tablename Select Top 5 sno, sname, sex From S Select Top 5 percent sno, sname, sex From S
Create Table C( cno varchar(10) Primary Key, cname varchar(100) not null, teacher varchar(10) ) Create Table SC( sno varchar(10), cno varchar(10), grade smallint, Primary Key(sno, cno) )
HAVING
• 用于组或者聚合函数的搜索条件。它常用 于GROUP BY子句后,用于搜索条件必须 在结果分组之后测试的情况。如果没有 GROUP BY子句,则HAVING仅在选择列 表用于聚合函数。 语法结构为: HAVING <search_condition> 在 HAVING 子句中不能使用 text、image 和 ntext 数据类型。
BETWEEN AND
• 规定一个范围,在搜索条件中测试,如果 测试表达式的值在范围中返回TRUE;若前 置NOT,则返回否定的结果。
• 查询成绩在60-100分之间的学生学号。
• 查询成绩在60-100分之间的学生学号。 Select sno From SC Where Grade Between 60 and 100
Group By
• 查询组数据的属性,Group By子句为数据 分组,然后按每组数据返回查询结果。 Select Sex, Count(*) From S Group By Sex 使用Group By子句后,Select子句的列名 列表只能出现分组属性和集函数。 比如:Select sno,cno From SC Group By cno 是错误的。
Select sno as 学号, sname as 姓名, sex as 性别 From S Order By sex Asc, sno Desc
• 列出表S中学生的学号和出生年份情况。
• 列出表S中学生的学号和出生年份情况。 Select sno, year(birthday) as '出生年份' From S Order By '出生年份' Asc year()返回日期所对应的年份。
• 查询有三门以上课程是90分以上的学生的 学号及课程数。
• 查询有三门以上课程是90分以上的学生的 学号及课程数。 Select sno, Count(*) as '课程数' From SC Where Grade >= 90 Group By sno Having Count(*)>=3
IN
聚合函数查询
• 常用的聚合函数有:Sum、Avg、Count、 Max、Min Select Count(*) From S Select Count(distinct sdeptartment) From S
• 查询选修了课程的学生人数
• 查询选修了课程的学生人数
• Select Count(Distinct sno) From SC
• 列出表S中“汉语言文学”系年龄小于27岁 的学生的学号和出生年份情况。 Select sno, year(birthday) From S Where sdeptartment='汉语言文学' and (year(getdate())-year(birthday))<27
函数getdate()返回当前机器日期
Like
• Like关键字指示在搜索条件中相匹配的模式,Like前也可 以前置Not,返回不匹配的所有行。语法形式为: match_expression [Not] Like pattern 如果模式表达式match_expression匹配模式pattห้องสมุดไป่ตู้rn,则返 回True,否则返回False。模式pattern通常被定义为字符 串和通配符,通配符主要有: %:匹配0个或多个字符的字符串 _:匹配任何单个的字符 [ ]:排列通配符,匹配任何在范围或集合中的单个字符。 如[a-z],a~z的所有单个字符。 [^]:排除通配符,匹配不在范围或集合中的单个字符。如 [^q-t],除q~t的任何字符。
• 查询90分以上的学生的学号及课程数。
• 查询90分以上的学生的学号及课程数。 Select sno, Count(*) as '课程数' From SC Where Grade >= 90 Group By sno
• 列出选修课程超过3门的学生学号及选修门 数
• 列出选修课程超过3门的学生学号及选修门 数 Select sno, count(*) From SC Group By sno Having count(*) > 3
比较运算符
• =、<、 <=、>、>=、!=、!<、!> • 列出表SC中成绩在大于等于87分的学生学 号和其选修的课程号。 Select sno,cno From SC Where Grade>=87 或 Select sno,cno From SC Where Grade!<87
• 列出表S中“汉语言文学”系年龄小于27岁 的学生的学号和出生年份情况。
一般查询
• 格式: Select column_name [,…n] From <tablename>
例如:从学生表中输出学号、姓名和性别。 使用语句:
例如:从学生表中输出学号、姓名和性别。 使用语句: Select sno, sname, sex From S
通过这个查询可以看出SQL语句操作的是 数据集合。
• 查询SC表中学号为“00011101”的同学的 成绩为最高的课程号。
• 查询SC表中学号为“00011101”的同学的 成绩为最高的课程号。 Select Top 1 sno, cno, grade From SC Where sno='00011101' Order By grade Desc
• 查询叶芬琴同学的学号及所选修的课程号。 • Select sno, cno From SC Where sno in(Select sno From S Where sname=„叶芬 琴’) • 这里in可用=代替
• 查询没有选修C02课程的学生姓名。
• 查询没有选修C02课程的学生姓名。 • Select sname From S Where sno not in(Select sno From SC Where cno=„C02‟)
Order By
• 让输出的结果以一定的顺序排序,可以给输出的 列重新指定列名,使用的Select语句为: Select column_name As new_ column_name[,…n] From <tablename> [Order By < column_name> [Asc|Desc] [,…n]]
• 查询选修了 “C01”号课程的学生学号和姓 名。
• 查询选修了 “C01”号课程的学生学号和姓 名。 Select sno, sname From S Where sno in( Select sno From SC Where cno='C01')
• 查询叶芬琴同学的学号及所选修的课程号。
• 求选修了各课程的学生人数
• 求选修了各课程的学生人数 • Select cno, count(*) From SC • Group By cno
条件查询
• 一般的条件查询。 Select column_name [,…n] From tablename [Where <search_condition>] Select * From S Where Sex='女'
• 用于搜索条件判定所给的测试表达式是否 与子查询或者值列表中的任何值匹配,如 果在子查询或者值列表中发现了与测试表 达式匹配的结果,则返回TRUE值,NOT IN返回IN的否定结果。
• 查询“数学与应用数学”与“计算机科学 与技术”系的学生名单。
• 查询“数学与应用数学”与“计算机科学 与技术”系的学生名单。 Select sno, sname From S Where sdeptartment in('数学与应用数学',' 计算机科学与技术')
• 查询所有选修了“C01”号课程的学生姓名。 Select sname From S Where sno in ( Select sno From SC Where cno='C01')
• 检索没有选修课程“数据库”的学生姓名 和年龄。
• 检索没有选修课程“数据库”的学生姓名和年龄。 Select sname,year(getdate()) - year(birthday) From S where not Exists( Select * From SC Where S.sno = SC.sno and o=(Select cno From C where cname='数据 库'))
EXISTS
• 用来测试跟随的子查询中现有的行。如果 某些行满足子查询,则返回TRUE。
• 查询所有选修了“C01”号课程的学生姓名。 Select sname From S Where Exists ( Select * From SC Where sno=s.sno and cno='C01')
相关文档
最新文档