文档库 最新最全的文档下载
当前位置:文档库 › 6多分支结构——select语句

6多分支结构——select语句

6多分支结构——select语句
6多分支结构——select语句

第三节多分支结构——select语句教学设计

一、教学目标

1、知识与技能:

(1)充分理解多分支结构的流程。

(2)能够利用多分支结构的思想解决实际问题。

2、过程与方法:

培养学生独立思考的能力、灵活运用所学知识解决问题的能力。

3、情感态度与价值观:

(1)增强学生思维的严密性。

(2)善于发现问题,敢于提出疑问并能够针对疑问积极主动的思考解决。

二、教学重难点

1、重点:理解多分支结构的流程。

2、难点:理解程序中流程的代码描述。

三、教学过程

1、游戏引入

通过学生喜欢的心理测试的小游戏再将学生的注意力吸引到本课中来的同时,让学生初步体会,选择不同的面包能够得到不同的测试结果。

(设计意图:从游戏入手,满足了学生爱玩的童心的同时,集中了学生的注意了,拉近了师生之间的距离,也为后面的问题做好铺垫。)

2、初步理解

教师通过解密心理测试的秘密引出游戏的背后的支持者:程序代码,带领学生边玩游戏边看代码,从中发现规律。同时提出问题:玩游戏的过程当中如果在文本框中输入3,测试结果变成“你是灰太狼”,要达到这个要求需要对游戏代码做怎样的修改?并说明原因(代码是比较抽象的概念,很难通过定义理解它,通过修改代码从形式上让代码成为学生自己的东西,接触学生看到代码的陌生心理,同时让学生初步体会不同的选择对应不同的结果。)

3、深入剖析

通过理解星猫心理测试的过程,将不同的面包对应不同的测试结果转化为流程图中不同的条件对应不同的语句组,通过心理测试的代码导出程序基本格式。

(设计意图:图形是比较直观好理解的表现形式,通过图形引出结构的流程图,结合流程图分析该图是如何应用程序语句描述的,以具体的程序语句对照理解语句格式的基本结构也就不难了。)

4、模拟练习

以程序填空的形式完成分蛋游戏,进一步体会不同的年龄段对应不同的礼物,体验调试程序带来的快乐和成就感,在这一过程中要演示学生的成果,适时给出表扬。

(设计意图:对于初中学生来说,本节课只需要理解多分支结构的执行过程,理解不同的条件对应执行不同的语句组,代码只需要简单了解。通过流程图理解游戏在程序中的执行过程,在通过代码填空,

加强对结构的理解。)

5、深入提高

通过思考心理测试当中没有想选择的面包的特殊情况的处理方法,引出当表达式对于条件1到条件N都不符合时的处理办法case else 语句组N+1.培养学生思考问题的严密性。

(设计意图:程序设计要求思维严密,考虑到所有可能出现的情况,通过具体的实例引领学生思考特殊情况并思考特殊情况的处理办法,这样就把抽象的问题具体化,能够帮助学生理解,并应用到解决问题的过程当中去。)

6、小结

通过两个游戏的流程图以及统一的流程图,进而引出专业术语多分支结构——select语句。

通过小结,把课堂教学传授的知识尽快化为学生的素质;使学生更深刻地理解两个游戏的执行流程的同时引出本课的课题,这种结构就是VB中的多分支结构,起到画龙点睛的作用。

7、知识深化

课后思考题:完成成绩评价系统,思考两种流程图的区别。

(设计意图:应用所学知识解决问题是最终目的,通过完成成绩评价系统可以将所学知识应用到实际问题中去,通过思考两种流程图的区别能够提高思维的严密性。)

四、教学反思

本节以设计四则运算器为重点讲了Select语句的基本格式。通

过上节课IF语句的学习,学生对编程思想基本有了一定的了解,因此根据本节内容较多的特点,在授课时除重点对Select语句格式及执行过程详解外,其他内容让学生参照教科书自己完成。并将一些课后内容拿到课堂上来,使一些接受能力强,完成速度快的学生可以“吃得饱”。用任务驱动和小组合作的形式,对能力稍差的同学也可以有所带动。通过课后帮助家长设计薪金所得税程序,使学生对纳税意识有初步了解,增强学生依法纳税道德意识。

lab1 SQLPlus使用及简单Select语句

实验1 SQL*Plus使用及简单Select语句 实验人:_________ 学号_____ 班级____________ 实验目的: 1.掌握SQL*Plus常用功能的使用。 2.掌握简单查询的语法。 实验平台: 1.Windows 2000/XP。 2.Oracle 10g 实验过程记录及分析: 1.SQL*Plus的使用: 1) 2) 3)如果某个用户连接数据库时,发生了“协议适配器错误”,分析其原因,并给出解决错 4)

5) 6) 7) 2. SQL 1) 2)3

4)查询emp表中,工资额大于2000的员工的姓名及其工资额。 5) 6) 7)查询emp表中,ename列含有字母A的员工的姓名。

8) 9) 10

11)使用to_date函数查询1981年入职的员工姓名。 SQL> select * from emp 2 where to_char(hiredate,'yyyy')='1981'; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ---------- 7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30 7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30 7566 JONES MANAGER 7839 02-4月 -81 2975 20 EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ---------- DEPTNO ---------- 7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30 7698 BLAKE MANAGER 7839 01-5月 -81 2850 30 7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30 EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- -------------- ---------- ----------

SELECT语句

8.4 SELECT-SQL命令 [※重点] SQL(Structured Query Language)是结构化查询语言,是关系数据库语言的标准。SELECT-SQL是从SQL语言中移植过来的查询命令,具有强大的单表和多表查询功能。SELECT语句在任何一种SQL语言中,都是使用频率最高的语句。可以说SELECT语句是SQL语言的灵魂。在第1章中讲述的选择、投影、连接等关系运算,都是由SELECT语句来完成的。 命令格式: SELECT[ALL|DISTINCT][TOP <数字常数>[PERCENT]] [<表别名>.]<查询表达式>[AS <列标题>] [,[<表别名>.]<查询表达式>[AS <列标题>]…] FROM [FORCE][<数据库名>! ]表名[<表别名>] [[INNER |LEFT[OUTER]|RIGHT[OUTER]|FULL[OUTER]JOIN <数据库名>!]表名[<表别名>] [ON <联接条件>… [[INTO <目标>] |[TO FILE <文件名>[ADDITIVE] |TO PRINTER [PROMPT] |TO SCREEN]] [NOCONSOLE][PLAIN][NOW AIT] [WHERE <连接条件>[AND <连接条件>…] [AND|OR <筛选条件> [[AND|OR <筛选条件>…]]] [GROUP BY <分组表达式>[,<分组表达式>…]] [HA VING <筛选条件>] [UNION[ALL]] [ORDER BY <排序表达式>[ASC|DESC] [,<排序表达式>[ASC|DESC]…]] 命令功能: 返回从指定表中查询的数据结果集。 命令说明: (1)SELECT:在查询结果中指定要显示的字段、常量和表达式。 (2)FROM :表示上述查询列名的结果来自于那些数据库的哪些表中。 示例:最简单的查询,选择查询“学生管理”数据库的“学生”表的数据。 SELECT * FROM 学生管理!学生 其中,在SELECT语句中“*”表示所有的列。 (3)[ALL|DISTINCT]:参数中的ALL参数将筛选出满足给定条件的所有记录;使用DISTINCT关键字就能够从返回的结果数据集中删除掉重复的行,使返回的结果更简洁。示例:选择查询“学生”表的专业编码。 SELECT 专业编码FROM 学生管理!学生&& 有许多重复记录 SELECT DISTINCT 专业编码FROM 学生管理!学生&& 没有重复记录

oracle的Select语句

oracle的Select语句 select 查询的一般格式是 select {[distinct|all] columns | *} //1 选择列 from {tables | views | other select} //2 数据来源 where conditions //3 选择条件 group by columns //4 分组 having conditions //5 选择 order by columns //6 排序 一、选择列 1. select后面出现的内容可以是from后面的数据来源中的列,也可以是*,也可以是常量或者T-SQL函数。 2. 如果列名很长,或者多个表的列名有冲突,可以使用as来定义别名。 二、数据来源 1. 数据来源可以是表,视图,还可以是其他的select语句(即,行集)。 2. from子句中可以包含连接说明,即inner join,outer join这样的内容。这个内容参见下面的内容。 3. 可以在from子句中为表,视图,或者其他select语句的结果指定别名,但是不要用as。 三、where子句 1. 多个条件之间可以用and 或者or连接。 2. null值查询要使用is null,或者is not null,而不是=null或者<>null 3. like是进行模式匹配的一种方式,列的数据类型可以是任何字符或者日期数据。它的否定形式是not like。%和_是通配符,一个表示0或多个任意字符,一个表示一个任意字符。但是这两个字符如果不出现在like后面的模式中,就是两个普通字符。 4. text列的where条件只能是like,is null,patindex。 5. 如果要在like中匹配普通字符%和_,可以使用escape定义一个转义字符,这个转义字符可以随意指定。然后将这个转义字符放在一个通配符或者单引号之前,就表示这个通配符或者单引号是一个普通的字符。 6. in ,not in,between and,not between and.“between a and b”将会包括a和b在内。in可以转换为一个连接,但是not in不能。 7. where exists R.当且仅当R非空时,条件exists R为真。其否定形式是where not exists R. 8. where s <| >| = | <>| >=|<= all/any R.否定形式是在s前对整个表达式加not. 四、连接查询 两张表的连接可以用from子句的ansi连接语法或者where子句中的sql连接语法实现。ansi 连接语法格式为From table1 join_type table2 on(conditions) join_type table3 on(conditions)。 连接有等值连接,笛卡尔积(交叉连接),自然连接,theta连接,外部链接五种。 1 等值连接 select students.* , stu_course.* from students inner join stu_course on(students.id = stu_course.studentid)--31条记录,stu_course的记录数目

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表STUDENTS ,可以定义如下:CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO)) 例 2 对于表的教学管理数据库中的表ENROLLS ,可以定义如下: CREATE TABLE ENROLLS (SNO NUMERIC(6,0) NOT NULL CNO CHAR(4) NOT NULL GRADE INT PRIMARY KEY(SNO,CNO) FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO) FOREIGN KEY(CNO) REFERENCES COURSES(CNO) CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))) 例 3 根据表的STUDENTS 表,建立一个只包含学号、姓名、年龄的女学生表。 CREATE TABLE GIRL

AS SELECT SNO, SNAME, AGE FROM STUDENTS WHERE SEX=' 女'; 例 4 删除教师表TEACHER 。 DROP TABLE TEACHER 例 5 在教师表中增加住址列。 ALTER TABLE TEACHERS ADD (ADDR CHAR(50)) 例 6 把STUDENTS 表中的BPLACE 列删除,并且把引用BPLACE 列的所有视图和约束也一起删除。 ALTER TABLE STUDENTS DROP BPLACE CASCADE 例7 补充定义ENROLLS 表的主关键字。 ALTER TABLE ENROLLS ADD PRIMARY KEY (SNO,CNO) ; 视图操作(虚表) 例9 建立一个只包括教师号、姓名和年龄的视图FACULTY 。( 在视图定义中不能包含ORDER BY 子句) CREATE VIEW FACULTY AS SELECT TNO, TNAME, AGE FROM TEACHERS 例10 从学生表、课程表和选课表中产生一个视图GRADE_TABLE ,它包括学生姓名、课程名和成绩。 CREATE VIEW GRADE_TABLE AS SELECT SNAME,CNAME,GRADE FROM STUDENTS,COURSES,ENROLLS WHERE STUDENTS.SNO =ENROLLS.SNO AND https://www.wendangku.net/doc/1c9644789.html,O=https://www.wendangku.net/doc/1c9644789.html,O 例11 删除视图GRADE_TABLE DROP VIEW GRADE_TABLE RESTRICT 索引操作 例12 在学生表中按学号建立索引。 CREATE UNIQUE INDEX ST ON STUDENTS (SNO,ASC) 例13 删除按学号所建立的索引。 DROP INDEX ST 数据库模式操作

实验4--SQL语言--SELECT查询操作

实验4--SQL语言--SELECT查询操作 1、基于?教学管理?数据库jxgl,试用SQL的查询语句表达下列查询。(1)--检索年龄大于23的男学生的学号和姓名-- select sno,sn from s where sex='男'and age > 23 (2)--检索至少选修一门课程的女学生姓名-- select sn from S,SC where sex='女' AND S.Sno=SC.Sno group by S.Sn having count(*)>=1; (3)--检索王同学没有选修的课程的课程号-- select cno from c where https://www.wendangku.net/doc/1c9644789.html,o not in (select cno from sc,s where sc.sno=s.sno and sn like'王%') (4)--检索至少选修两门课程的学生学号-- select distinct s.sno from s,sc where sc.sno=s.sno group by s.sno having count(*)>=2; (5)--检索全部学生都选修的课程的课程号与课程名-- select cno,cn from c where not exists (select*from s where not exists (select*from sc where s.sno=sc.sno and https://www.wendangku.net/doc/1c9644789.html,o=https://www.wendangku.net/doc/1c9644789.html,o)) (6)--检索选修了所有3学分课程的学生学号和姓名-- select distinct s.sno,s.sn from s,sc where exists (select*from c where ct='3'and s.sno=sc.sno and https://www.wendangku.net/doc/1c9644789.html,o=https://www.wendangku.net/doc/1c9644789.html,o) 2、基于“教学管理”数据库jxgl,试用SQL的查询语句表达下列查询。 (1)--统计有学生选修的课程门数-- select count(distinct https://www.wendangku.net/doc/1c9644789.html,o)from sc; (2)--查询选修4号课程的学生的平均年龄-- select avg(s.age) from s,sc where s.sno=sc.sno and cno='4';

SELECT语句练习题答案

SELECT 语句练习题 有下列四个表: 1、学生表 S_NO S_NAME S_SEX S_BIRTHDAY CLASS 108曾华男1905-5-2295033 105匡明男1905-5-1895031 107王丽女1905-5-795033 101李军男1905-5-995033 109王芳女1905-5-1895031 103陆君男1905-5-2095031 2、教师表 T_NO T_NAME TSEX T_BIRTHDAY PROF DEPART 804李诚男1958-12-2副教授计算机系856张旭男1969-3-12讲师电子工程系825王萍女1972-5-5助教计算机系831刘冰女1977-8-14助教电子工程系 3、课程表 C_NO C_NAME T_NO 3-105计算机导论825 3-245操作系统804 6-166数据电路856 9-888高等数学100 4、成绩表 S_NO C_NO DEGREE 1033-24586 1053-24575 1093-24568 1033-10592 1053-10588 1093-10576 1013-10564 1073-10591 1083-10578 1016-16685 1076-10679 1086-16681 Select 语句的最基本结构:Select …. From ….where order by:排序子句(ASC:升序,DESC:降序)

like:模式匹配(通配符:% 可以匹配任意类型和长度的字符; _ 任意单个字符。 聚合函数(SUM A VG、COUNT、COUNT(*)、MAX、MIN) GROUP BY:分组 1、查询Student表中的所有记录的S_NAME、S_SEX和Class列。 2、查询教师所有的单位即不重复的Depart列。 3、查询Student表的所有记录。 4、查询Score表中成绩在60到80之间的所有记录。 5、查询Score表中成绩为85,86或88的记录。 6、查询Student表中“95031”班或性别为“女”的同学记录。 7、以Class降序查询Student表的所有记录。 8、以C_NO升序、Degree降序查询Score表的所有记录。 9、查询“95031”班的学生人数。 10、查询Score表中的最高分的学生学号和课程号。 11、查询‘3-105’号课程的平均分。 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。 13、查询最低分大于70,最高分小于90的S_NO列。 14、查询所有学生的S_NAME、C_NO和Degree列。 15、查询所有学生的S_NO、C_NAME和Degree列。 16、查询所有学生的S_NAME、C_NAME和Degree列。 17、查询“95033”班所选课程的平均分。 SQL语句练习题参考答案 1、select S_NAME,S_SEX,Class from Student; 2、select distinct depart from teacher; 3、select S_NO as '学号',S_NAME as '姓名',S_SEX as '性别',S_BIRTHDAY as'出生日期',Class as'班号'from student; 或 select S_NO as 学号,S_NAME as 姓名,S_SEX as 性别,S_BIRTHDAY as 出生日期,Class as 班号from student; 4、select * from score where degree between 60 and 80; 或select * from score where degree>=60 and degree<=80; 5、select * from score where degree in (85,86,88); 6、select * from student where class='95031'or S_SEX='女'; 7、select * from student order by class desc; 8、select * from score order by C_NO asc ,degree desc; 或select * from score order by C_NO ,degree desc; 9、select count(*) as CNT from student where class='95031'; 10、select S_NO as '学号',C_NO as '课程号', degree as '最高分' from score where degree=(select max(degree) from score) 11、select avg(degree)as 课程平均分from score where C_NO='3-105'; 12、select C_NO,avg(degree) from score where C_NO like'3%'group by C_NO having count(*) >5; 13、select S_NO from score group by S_NO having min(degree)>70 and max(degree)<90; 14、select student.S_NAME,score.C_NO,score.degree from student,score where student.S_NO=score.S_NO; 15、select x.S_NO,y.C_NAME,x.degree from score x,course y where x.C_NO=y.C_NO; 16、select x.S_NAME,y.C_NAME,z.degree from student x,course y,score z where x.S_NO=z.S_NO and z.C_NO=y.C_NO;

SQL常用语句+举例

SQL 常用语句+举例 相关表: 1. distinct: 剔除重复记录 例:select distinct stroe_name from Store_information 结果: 2. And / or: 并且/或 例:在表中选出所有sales 高于$1000或是sales 在$275及$500之间的记录 Select store_name ,sales from Store_information Where sales>1000 Or (sales>275 and sales <500) 3. 例:在表中查找store_name 包含 Los Angeles 或San Diego 的记录 Select * from Store_information where store_name in (‘Los Angeles ’,’San Diego ’) 结果: 4. Between : 可以运用一个范围抓出表中的值

与in 的区别:in 依照一个或数个不连续的值的限制抓出表中的值 例:查找表中介于Jan-06-1999 及Jan-10-1999 中的记录 Select * from Store_information where date between ‘Jan-06-1999’ and ‘Jan-10-1999’ 结果: 5. Like : 让我们依据一个套式来找出我们要的记录 套式通常包含: ’A_Z ’: 所有以A 开头,中间包含一个字符,以Z 结尾的字串 ’ABC%’: 所有以ABC 起头的字串 ’%XYZ ’: 所有以XYZ 结尾的字串 ’%AN%’: 所有包含AN 的字串 例:Select * from Store_information where store_name like ‘%An%’ 结果: 6. Order by: 排序,通常与ASC (从小到大,升序)、DESC (从大到小,降序)结合使用 当排序字段不止一个时,先依据字段1排序,当字段1有几个值相同时,再依据字段2排序 例:表中sales 由大到小列出Store_information 的所有记录 Select Store_name, sales,date from Store_information order by sales desc 结果: 7. 函数:AVG (平均值)、COUNT (计数)、MAX (最大值)、MIN (最小值)、SUM(求和) 语句:select 函数名(字段名) from 表名 例:求出sales 的总和 Select sum(sales) from Store_information 结果 8. COUNT (计数) 例:找出Store_information 表中 有几个store_name 值不是空的记录

mysql中select简单查询

1.简单查询select语句(1) (1) create database chapter04; use chapter04; create table exam ( id int not null primary key default null auto_increment, name varchar(20) not null, Chinese double, math double, english double ); insert into exam values(null,'关羽',85,76,70); insert into exam values(null,'张飞',70,75,70); insert into exam values(null,'赵云',90,65,95); (2) select name,english from exam; (3) select distinct english from exam; 2.简单查询select语句(2) (1)select Chinese+10,math+10,english+10 from exam; (2)select sum(Chinese+math+english) from exam where name='关羽’;

select sum(Chinese+math+english) from exam where name='张飞’; select sum(Chinese+math+english) from exam where name='赵云’; (3)select sum(Chinese+math+english) as score from exam; 3.简单查询select语句(3) (1)select name,score from exam where name='张飞'; (2)select name,english from exam where english>90; (3)select name,score from exam where score>230; 4.简单查询select语句(4) (1)select name,english from exam where english between 80 and 100; (2)select name,math from exam where math in (75,76,77); (3)insert into exam values(null,'张三',80,70,78); select score,name from exam where name like'张%'; (4)select name,score from exam where math>70 and Chinese>80; 5.聚合函数-count (1)select count (*) from exam; (2)select count (*) from exam where math>70;

SQL语句

题型:SQL语句 题目3.1:设教学数据库中有4个关系: 教师关系 T(T#,TNAME,TITLE) 课程关系 C(C#,CNAME,T#) 学生关系 S(S#,SNAME,AGE,SEX) 选课关系 SC(S#,C#,SCORE) 试用SQL查询语句表示下列查询。 ①检索年龄小于17岁女生的学号和姓名。 ②检索男生所学课程的课程号和课程名。 ③检索男生所学课程的任课老师的工号和姓名。 ④检索至少选修两门课程的学生学号。 ⑤检索至少有学号为S2和S4学生选修的课程的课程号。 ⑥检索WANG同学不学的课程的课程号。 ⑦检索全部学生都选修的课程的课程号与课程名。 ⑧检索选修课程包含LIU老师所授全部课程的学生学号。 答案:①SELECT S#,SNAME FROM S WHERE AGE<17 AND SEX=’F’; ②SELECT C.C#,CNAME FROM S,SC,C WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=’M’; ③SELECT T.T#’,TNAME FROM S,SC,C,T WHERE S.S#=SC.S# AND SC.C#=C.C# AND C.T#=T.T# AND SEX=’M’; ④SELECT DISTINCT X.S# FROM SC AS X,SC AS Y WHERE X.S#=Y.S# AND X.C#!=Y.C#; ⑤SELECT DISTINCT X.C# FROM SC AS X,SC AS Y WHERE X.S#=S2 AND Y.S#=S4 AND X.C#=Y.C#; ⑥SELECT C# FROM C WHERE NOT EXISTS(SELECT * FROM S,SC WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=’WANG’); ⑦SELECT C#,CNAME FROM C WHERE NOT EXISTS(SELECT * FROM S WHERE NOT EXISTS(SELECT * FROM SC WHERE S#=S.S# AND C#=C.C#)); ⑧SELECT DISTINCT S# FROM SC AS X

50个常用sql语句实例(学生表 课程表 成绩表 教师表)

Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序号: if exists(select table_name from information_schema.tables where table_name='Temp_Table') drop table Temp_Table go select 排名=identity(int,1,1),* INTO Temp_Table from Student go select * from Temp_Table go drop database [ ] --删除空的没有名字的数据库 问题: 1、查询“”课程比“”课程成绩高的所有学生的学号; select a.S# from (select s#,score from SC where C#='001') a,(select s#,score from SC where C#='002') b where a.score>b.score and a.s#=b.s#; 2、查询平均成绩大于分的同学的学号和平均成绩; select S#,avg(score) from sc group by S# having avg(score) >60; 3、查询所有同学的学号、姓名、选课数、总成绩; select Student.S#,Student.Sname,count(SC.C#),sum(score) from Student left Outer join SC on Student.S#=SC.S# group by Student.S#,Sname 4、查询姓“李”的老师的个数; select count(distinct(Tname)) from Teacher where Tname like '李%'; 5、查询没学过“叶平”老师课的同学的学号、姓名; select Student.S#,Student.Sname from Student

SQL语句 SELECT LIKE like用法详解

SQL语句 SELECT LIKE like用法详解 2009-12-16 13:44 LIKE语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。 假设有一个数据库中有个表table1,在table1中有两个字段,分别是name 和sex二者全是字符型数据。现在我们要在姓名字段中查询以“张”字开头的记录,语句如下: select * from table1 where name like "张*" 如果要查询以“张”结尾的记录,则语句如下: select * from table1 where name like "*张" 这里用到了通配符“*”,可以说,like语句是和通配符分不开的。下面我们就详细介绍一下通配符。 多个字符 * c*c代表cc,cBc,cbc,cabdfec等 它同于DOS命令中的通配符,代表多个字符。 多个字符 % %c%代表agdcagd等 这种方法在很多程序中要用到,主要是查询包含子串的。 特殊字符 a a代表a*a 代替* 单字符 ? b?b代表brb,bFb等 同于DOS命令中的?通配符,代表单个字符 单数字 # k#k代表k1k,k8k,k0k 大致同上,不同的是代只能代表单个数字。 字符范围 - [a-z]代表a到z的26个字母中任意一个 指定一个范围中任意一个 续上

排除 [!字符] [!a-z]代表9,0,%,*等 它只代表单个字符 数字排除 [!数字] [!0-9]代表A,b,C,d等 同上 组合类型 字符[范围类型]字符 cc[!a-d]#代表ccF#等 可以和其它几种方式组合使用 例:假设表table1中有以下记录: name sex 张小明男 李明天男 李a天女 王5五男 王清五男 下面我们来举例说明一下: 查询name字段中包含有“明”字的。 select * from table1 where name like '%明%' 查询name字段中以“李”字开头。 select * from table1 where name like '李*' 查询name字段中含有数字的。 select * from table1 where name like '%[0-9]%' 查询name字段中含有小写字母的。 select * from table1 where name like '%[a-z]%' 查询name字段中不含有数字的。 select * from table1 where name like '%[!0-9]%' 我们着重要说明的是通配符“*”与“%”的区别。 select * from table1 where name like '*明*' select * from table1 where name like '%明%' 大家会看到,前一条语句列出来的是所有的记录,而后一条记录列出来的是name字段中含有“明”的记录,所以说,当我们作字符型字段包含一个子串的查询时最好采用“%”而不用“*”,用“*”的时候只在开头或者只在结尾时,而不能两端全由“*”代替任意字符的情况下。 大家在写sql 语句的时候,如果是 select .. where 类型的语句,有注意到条件的前后顺序吗?我今天做个小实验。 比如查询地址里包含“海口市”及“振兴路” 两个关键字的数据,一般时候可能会用

常用SELECT语句汇总

常用SELECT语句汇总 一、单表查询 (一)按照条件查询相关记录 Select 字段1,字段2……字段N from 表 where 条件含义:从表中根据where 条件查询记录,每条记录显示的字段按照字段1、字段2….字段N的设置显示 注:select语句中的标点符号及运算符必须使用英文半角字符。 例1:从凭证库中查询2004年1月31日的凭证,每条凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段 Select 凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库 where 凭证日期=’2004-1-31’ 例2:根据业务_个人基本情况表,找出缴存状态为”正常”的记录,查出的记录只显示姓名、身份证号、单位账号及个人账号 4个字段 Select 个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表 where 账户状态=’1’ 例3:从科目余额表中查询出2010年借方金额大于50万或2010年借方金额小于10万的记录,每条记录只显示摘要、科目编码、借方金额、贷方金额、年度5个字段 Select摘要,科目编码,借方金额,贷方金额,年度 From 科目余额 where(借方金额>500000 and 年度=2010) or (借方金额<100000 and 年度=2010) Select top 100 字段1,字段2……字段N from 表 where 条件含义:从表中根据where 条件查询记录,显示前100条记录,每条记录按照字段1、字段2….字段N的设置显示 例1:从凭证库中查询2004年1月31日的前100条凭证,每条 2 凭证只显示凭证日期、凭证号、科目名称、借方金额、贷方金额、会计月份 6个字段Select top 100凭证日期,凭证号,科目名称,借方金额,贷方金额,会计月份 From 凭证库where 凭证日期=’2004-1-31’ 例2:根据业务_个人基本情况表,找出缴存状态为”正常”的前100条记录 Select top 100个人姓名,身份证号,单位账号,个人账号 from 业务_个人基本情况表where 账户状态=’1’ (二)通配符的使用 *表示将全部的字段内容都显示出来 例1:从业务_电子警察表中筛选出无车号或者车牌号小于3位的记录 Select * from 业务_电子警察 where 车号=’’ or Len(车号)<3 例2:从科目余额表中查询出2002年收入大于50万的记录 Select * from 科目余额 where 借方金额>500000 and 年度=2002 %表示零或多个字符 例1:从凭证库中查询2003年各月的房租收入情况 Select month(凭证日期) as 月份, sum(贷方金额) as 房租金额 from 凭证 where 摘要 like ‘%房租%’ and 年度=2003 例2:从凭证库中查询 2008年包含税的记录 Select * from 凭证库 where摘要 like ‘%税%’ and 年度=2008 _表示任何一个字符 例1:根据科目余额表查询出目编码为10开头的一级科目记录 Select * from 科目余额

sql中select语句详解及用途

sql中select语句详解及用途1 2 3 4 5 6 7 8 9 1 0 1 1 SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [, ...] ] [ FOR UPDATE [ OF tablename [, ...] ] ] [ LIMIT { count | ALL } ] [ OFFSET start ] 这里 from_item 可以是: 1 2 3 4 5 6 7 8 [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias_list ) ] ] | ( select ) [ AS ] alias [ ( column_alias_list ) ] | from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column_list ) ] 输入 ? expression 表的列/字段名或一个表达式. output_name 使用 AS 子句为一个列/字段或一个表达式声明另一个名称.这个名称主要用于标记输出列用于显示。它可以在 ORDER BY 和 GROUP BY 子句里代表列/字段的值.但是 output_name 不能用于 WHERE 或 HAVING 子句;用表达式代替. from_item 一个表引用,子查询,或者 JOIN 子句.详见下文. condition 一个布尔表达式,给出真或假的结果.参见下面描述的 WHERE 和 HAVING 子句.

[MSSQL] - SELECT语句使用大全

SELECT语句使用大全 虽然 SELECT 语句的完整语法比较复杂,但是大多数 SELECT 语句都描述结果集的四个主要属性 1、结果集中的列的数量和属性。 2、从中检索结果集数据的表,以及这些表之间的所有逻辑关系。 3、为了符合 SELECT 语句的要求,源表中的行所必须达到的条件。不符合条件的行会被忽略。 4、结果集的行的排列顺序。 它的主要子句可归纳如下: SELECT select_list --描述结果集的列 INTO new_table_name --指定使用结果集来创建新表 FROM table_list --包含从中检索到结果集数据的表的列表[返回结果集的对象]。 [ WHERE search_conditions ] --WHERE 子句是一个筛选,它定义了源表中的行要满足 SELECT 语句的要求所必须达到的条件 [ GROUP BY group_by_list ] --根据 group_by_list 列中的值将结果集分成组[ HAVING search_conditions ] --结果集的附加筛选 [ ORDER BY order_list [ ASC | DESC ] ] --结果集的附加筛选 一、使用选择列表 1、使用 *号来选择所有列;使用“[表名|别名]。[字段]”选取特定的列。 2、AS 子句可用来更改结果集列的名称或为派生列分配名称,也可以使用空格代替 如: SELECT Name AS Name1,Name Name2 FROM Product ORDER BY Name ASC 3、使用 DISTINCT 消除重复项 如:select distinct [Year] from A 4、使用 TOP 和 PERCENT 限制结果集数量 TOP ( expression ) [ PERCENT ] [ WITH TIES ] --expression 数量、PERCENT按百分比返回数据、WITH TIES返回排序与最后一行并列的行。 如:获取成绩前三名的同学 select top 3 * from Score order by Num desc --不考虑成绩并列 select top 3 WITH TIES * from Score order by Num desc --可解决成绩并列的问题 5、选择列表中的计算值 选择的列不但可以包括数据表列,还可以包括计算值,这些结果集列被称为派生列。 计算并且包括以下运算: 对数值列或常量使用算术运算符或函数进行的计算和运算。如SUM(),

Select 查询语句

Select 查询语句 语法:SELECT [ALL|DISTINCT] <目标列表达式> [AS 列名] [,<目标列表达式> [AS 列名] ...] FROM <表名> [,<表名>…] [WHERE <条件表达式> [AND|OR <条件表达式>...] [GROUP BY 列名[HA VING <条件表达式>> [ORDER BY 列名[ASC | DESC> 解释:[ALL|DISTINCT] ALL:全部;DISTINCT:不包括重复行 <目标列表达式> 对字段可使用A VG、COUNT、SUM、MIN、MAX、运算符等 <条件表达式> 查询条件谓词 比较=、>,<,>=,<=,!=,<>, 确定范围BETWEEN AND、NOT BETWEEN AND 确定集合IN、NOT IN 字符匹配LIKE(“%”匹配任何长度,“_”匹配一个字符)、NOT LIKE 空值IS NULL、IS NOT NULL 子查询ANY、ALL、EXISTS 集合查询UNION(并)、INTERSECT(交)、MINUS(差) 多重条件AND、OR、NOT 对查询结果分组 [HA VING <条件表达式>] 分组筛选条件 [ORDER BY 列名[ASC | DESC> 对查询结果排序;ASC:升序DESC:降序 例1:select student.sno as 学号, https://www.wendangku.net/doc/1c9644789.html, as 姓名, course as 课程名, score as 成绩from score,student where student.sid=score.sid and score.sid=:sid 例2:select student.sno as 学号, https://www.wendangku.net/doc/1c9644789.html, as 姓名,A VG(score) as 平均分from score,student where student.sid=score.sid and student.class=:class and (term=5 or term=6) group by student.sno, https://www.wendangku.net/doc/1c9644789.html, having count(*)>0 order by 平均分DESC 例3:select * from score where sid like '9634' 例4:select * from student where class in (select class from student where name='陈小小')

相关文档