----------------1、查询所有列 --查询 学生 表所有记录(行) select *from 学生

--带条件的查询 select *from 学生 where 年龄>19

-------------------2、查询指定的列 --查询 所有人的姓名和性别 select 姓名,性别 from 学生

--查询 所有 年龄>19 的学生的 姓名 select 姓名,地址 from 学生 where 年龄>19

/*比较运算符 = > < >= <= != <>不等于 !>不大于 !<不小于 */ -----------------------3、给列取别名 --方式一 select 姓名,地址=家乡 from 学生

--方式二 select 姓名,地址as家乡 from 学生

-----------------------4、消除重复 --查询该表有哪些家乡 select distinct 地址 from 学生

----------------------5、top n(查询前N条) select top 3 * from 学生 --查询前3条记录

-----------------------6、排序 select *from 学生 order by 年龄 asc     --按年龄进行升序排列                        --desc降序         --asc升序

select * from  学生 order by 年龄 desc ,编号 asc ---按年龄降序 --先按年龄进行降序,在出现相同年龄的时候,把这些相同的学生 再按照 学号 升序排列

--例:查询 学生 表中,年龄最大的三个学生的 年龄、姓名、编号 select top 3  年龄,姓名,编号 from 学生 order by 年龄 desc

-------------------------------7、 and(并且)、or(或者) select *from 学生 where 年龄=20 and 姓名='张三'

--例如:查询 性别为男的 或 专 地址为武汉 select *from 学生 where 性别='男'  or 地址='武汉'

----------------------8、between ... and(介于...之间) --例:查询年龄为20-30之间的所有人 select *from 学生 where 年龄 between 20 and 30

-----------------------9、in 的用法 select * from 学生 where 年龄 in(20,19,18)

---------------------------10、top N  与 order by 同时使用

--例:查询年龄最大的一人 select top 1 with ties * from  学生  --加了with ties 后 如有并列第一的就全都显示 order by 年龄 desc

---------------------------------11、case替换查询结果 --查询所有人信息,如果年龄>=40岁,就显示"中年人", --     如果年龄 介于30-39  ,就显示“青年” --     如果年龄  介于20-29 ,就显示“青少年” --     如果年龄   小于20  , 就显示“少年”

select 学号,姓名,性别, 年龄=case   when 年龄>=40 then '中年人'   when 年龄 between 30 and 39 then '青年'   when 年龄 between 20 and 29  then '青少年'   else '少年' --else表示不满足以上条件时,就全部  end ,住址 from 学生

-----------------------------------12、模糊查找 使用like子句进行模糊查询 like子句与通配符配合使.Sql server提供4种通配符 1.%:表示任意字符 2. _:表示单个任意字符 3.[ ]:表示方括号里列出的任意一个字符. 4.[^]:表示任意一个没有在方括号里列出的字符.

--例:查找姓周的所有人信息 select * from 学生 where 姓名 like '周%' --%可以代替任意几个字符

select * from 学生 where 姓名 like '周_' --_表示可以代替一个字符

--例:查找姓名的第二个字包含 ’心‘ 或者 ’三‘ 的人 select * from 学生 where 姓名 like '_[星,三]_'

--嵌套查询(一般嵌套请不要超过3层,即不要出现超过3个select) select * from 学生  where 年龄< (  select 年龄 from 学生 where 姓名='张三' )

--例如:查询所有比 中文系所有学生年龄 大的学生 select * from xs where 年龄> (  select top 1 年龄 from xs  where 所在系='中文'  order by 年龄 desc )

/*运算符  all some   any  */

/* all:指定表达式要与子查询结果集中的每个值都进行比较,当表达式与每个值都满足比较的关系时,才返回true,否则返回false;

Some和any:表示表达式只要与子查询结果集中的某个值满足比较的关系时, 就返回true,否则返回false.

*/

select * from xs where 年龄>all (  select 年龄 from xs where 所在系='中文' )

----------------------------------表的复制 /*把所有计算机系的学生拉出来单独创建一个表*/

create  table  xs_jisuanji    --创建一个新表 (  学号 int,  姓名 varchar(50),  性别 char(10),  年龄 int )

insert into xs_jisuanji       --查询内容 并复制内容到新建的表 select 学号 ,姓名, 性别, 年龄 from xs where  所在系='计算机'H

/*复制方式二*/   --创建中文系的表 select 学号,姓名,性别 ,年龄 into xs_zhongwen from xs where 所在系='中文'

---跨数据库表的复制(需要在 表名前加数据库名) select  * into test.dbo.xs  from   n2d09003

-------------------------------------------- --聚合函数

--求学生总分 select sum(成绩) as 总分数 from xs

--求分数最高分 select max(成绩) as 最高分 from xs

-- 求最低分 select min(成绩) as 最低分 from xs

--求平均分 select avg(成绩) as 平均分 from xs

--统计有多少名学生 select count(成绩) as 人数 from xs

---------------------------------------分类汇总 group by --例1

--查询学生表中有哪些专业 select distinct 所在系 from xs

--group by 实现 select 家乡 from N2D09003 group by 家乡

--例2 求每个地方的学生数 select 家乡,count (*) as 人数 from N2D09003 group by 家乡  --按照家乡  进行分类汇总

--[例3]求每个地方 男生和女生的人数 select 家乡,性别,count(*) as 人数 from N2D09003 group by 家乡,性别  --按照家乡 和  性别 进行分类汇总

/*` [特别注意:1:select 后面出现的列名,必须出现在group by 后面] 2:group by与order by连用,order by 子句中可包含聚合函数. 3、group by关键字后可以使用多个字段名作为分组字段,这样, 系统将根据这些字段的先后顺序对结果集进行更加详细地分组。

--[例4]求每个地方的总人数,并且按照人数从多到少排序 select 家乡,count(*) as 人数 from N2D09003 group by 家乡 order by 人数 desc    --这里的order by 后面可以是聚合函数(如果需要的话)

select * from xs order by max(年龄) dese --错误  不满足使用要求第二条

--------------------------------------------------------------09.12.04

-------------------------------------group by ...having --作用:分类汇总后,再进行筛选 /*查询每个专业总人数,并且显示 总人数>3人的专业*/ select 所在系 , count(*) as  人数 from  xs group  by 所在系 having count(*)>3  --筛选出人数>3人的专业

--------------------group by ....with rollup select 所在系, count(*) as 人数 from xs group by 所在系,性别 with rollup  --在分类汇总之后,再次汇总

select 所在系,性别, count(*) as 人数 from xs group  by 所在系,性别 with rollup  --在分类汇总之后,再次汇总

-------------------group by .... with cube select 所在系,性别,count(*) as 人数 from xs group by 所在系,性别 with cube --比rollup 汇总的更详细(按照 group by 后面的列进行再次汇总)

------------------------------------------------链接查询 /*查找选修了课程号为2且成绩在80分以上的学生姓名和成绩*/ select 姓名,xx.成绩 from xs,xx where xs.学号=xx.学号  --两表链接条件 and 课程号=2 and xx.成绩>80

--加了 表名.列名 (一般无需在列名之前加表名前缀,只有当两个表有相同的列名时才加前缀) select xs.姓名,xx.成绩 from xs,xx where xs.学号=xx.学号  --两表链接条件 and xx.课程号=2 and xx.成绩>80

-----------------------查询  刘德华的成绩 --方式一 省略前缀 select xx.成绩 from xx,xs        where  xx.学号=xs.学号 and 姓名='刘德华'

--方式二 嵌套查询 select 成绩 from xx where 学号=    ( select 学号 from xs where 姓名='刘德华' )

--方式三 内联式查询 select  xx.成绩 from xx            join xs on  xs.学号=xx.学号     --两表连接条件 where 姓名='刘德华'             --其他限制条件

--查询林心如的古汉语成绩 select 姓名, 课程名 ,xx.成绩

from xs  join  xx on  xs.学号=xx.学号          join  kc on  kc.课程号=xx.课程号 and 姓名='林心如' and 课程名='古汉语'

select 姓名 ,课程名 ,xx.成绩 from  xs,xx,kc where xs.学号=xx.学号 and xx.课程号=kc.课程号 and 姓名='林心如' and 课程名='古汉语'

select 成绩 from xx where 课程号= ( select 课程号 from kc where 课程名='古汉语' ) and 学号= ( select 学号 from xs where 姓名='林心如' )

Mysql中的DQL查询语句的更多相关文章

  1. SQL中的DQL查询语句

    目录 1. DQL:查询语句 排序查询 聚合函数 分组查询 分页查询 2. 约束 3. 多表之间的关系 4. 范式 DQL:查询语句 1. 排序查询 语法:order by 子句 order by 排 ...

  2. MySQL中如何分析查询语句

    Oracle中有explain for,mysql中也有同样的功能,那便是explain,举例如下: mysql> explain select (case (select count(*) f ...

  3. mysql中的高级查询语句

    此随笔用到的数据全是来自  关于mysql中表关系的一些理解(一对一,一对多,多对多) 提及的    学院表,学生表,学生详情表,选课表,课程表 单标查询:(查看学生表的学生名单) select st ...

  4. mysql怎么限制某些查询语句的执行?

    mysql怎么限制某些查询语句的执行? 比如某些sql语句执行时间很长,超过10s,怎么样超过10s就不让其执行? 后续更新中...

  5. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

  6. 在MySQL中使用子查询和标量子查询的基本用法

    一.MySQL 子查询 子查询是将一个 SELECT 语句的查询结果作为中间结果,供另一个 SQL 语句调用.MySQL 支持 SQL 标准要求的所有子查询格式和操作,也扩展了特有的几种特性.子查询没 ...

  7. DQL查询语句使用(select)

      9)DQL查询语句使用   SELECT语句在PL/SQL中使用,必须 采用下面用法:     select id INTO 变量   from t001 where id=5;    将记录字段 ...

  8. MySQL中的模糊查询 like 和 Oracle中的 instr() 函数有同样的查询效果

    注:MySQL中的模糊查询 like 和 Oracle中的 instr() 函数有同样的查询效果: 如下所示: MySQL: select * from tableName where name li ...

  9. mysql中的模糊查询

    转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或 ...

随机推荐

  1. 【转】显示Ubuntu文件浏览器的地址栏--不错

    原文网址:http://www.blogbus.com/anythingok-logs/144447448.html Ubuntu默认使用nautilus作为其可视化的文件浏览器,其默认值不显示地址栏 ...

  2. 【转】(DT系列一)DTS结构及其编译方法----不错

    原文网址:http://www.cnblogs.com/biglucky/p/4057476.html DTS结构及其编译方法 一:主要问题 1,需要了解dtsi与dts的关系 2,dts的结构模型 ...

  3. 4Sum——LeetCode

    Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = tar ...

  4. Wad Manager的下载和运行

    关于WAD版的软件 WAD版的软件分为两种: 独立安装版:程序完全安装在Wii的内置存储空间上,可以在Wii的主界面直接启动软件. Forwarder版:程序安装在Wii的内置存储空间上,同时在SD卡 ...

  5. 标准简单SP模板(sql server)

    CREATE Procedure eSP_ChangeStart --eSP_ChangeStart 64 @ID int, Output As Declare ), @ID_Max int Begi ...

  6. 【ArcGIS 10.2新特性】Geodatabase 10.2 常见问题

    地理数据库技术一直以来都是ArcGIS的基础技术.为充分使用ArcGIS的全部功能则需要把数据存储在Geodatabase当中.Geodatabase是一个综合性的信息模型,它可以支持存储几乎任意类型 ...

  7. java 全角字符半角字符转换

    /// <summary> /// 判断字符是否英文半角字符或标点 /// </summary> /// <remarks> /// 32    空格 /// 33 ...

  8. POJ2230 Watchcow【欧拉回路】

    Watchcow Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 6172Accepted: 2663 Special Judge ...

  9. STL之deque双向队列

    deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,提供随机访问,deque在接口上和vector非常相似,下面列出deque的常用成员函数: Table 6.9. C ...

  10. 第四章:使用Proxy代理让客户端服务端分工合作。

    <基于1.8 Forge的Minecraft mod制作经验分享> 别被那个Proxy代理吓到,很简单的. 我们先讨论为什么要用Proxy代理: 像打开新的UI这种操作,比如打开一个背包, ...