MySQL查询

DQL 操作



DQL 数据查询语言(重要)    

   数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

     查询返回的结果是一张虚拟表。

     查询关键字:SELECT      -- 查询:基于表中已经存在的数据,得到我们想要的数据

       

         1基础查询:

        SELECT  列名/字段名,...,  FROM  表名       -- 查询指定列

          SELECT*FROM  表名         -- *表示表中所有字段

学生信息表
id char(6) 学生学号
name varchar(50) 学生姓名
age int 学生年龄
gender varchar(50) 学生性别

CREATE TABLE stu(

    id char(6),

    name varchar(50),

    age int,  

    gender varchar(50)

  );

  


INSERT INTO stu VALUES(‘1001‘,‘liuyi‘,25,‘male‘);

INSERT INTO stu VALUES(‘1002‘,‘zhangsan‘,22,‘male‘);

INSERT INTO stu VALUES(‘1003‘,‘lili‘,23,‘female‘);

INSERT INTO stu VALUES(‘1004‘,‘zhaoliu‘,27,‘male‘);

INSERT INTO stu VALUES(‘1005‘,‘sunqi‘,25,‘female‘);

INSERT INTO stu VALUES(‘1006‘,‘zhouba‘,21,‘male‘);

INSERT INTO stu VALUES(‘1007‘,‘wujing‘,25,‘female‘);

INSERT INTO stu VALUES(‘1008‘,‘zhangtao‘,27,‘male‘);

INSERT INTO stu VALUES(‘1009‘,‘zhaokai‘,29,‘male‘);

2条件查询:

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:

?   =、!=、<>、<、<=、>、>=;

?   BETWEEN...AND;

?   IN(set);        -- 查询一定范围内的记录  如:  SELECT*FROM stu WHERE id IN(‘1001‘,‘1002‘,‘1003‘);

?   IS NULL;       --查询年龄为NULL(空)的记录,NULL不是一个值,不能用=符号;  正确示例如:

SELECT*FROM stu WHERE age IS NULL;

?   AND;

?   OR;

?   NOT;             -- 查询排除一定范围内的其他记录  如:  SELECT*FROM stu WHERE id NOT IN(‘1001‘,‘1002‘,‘1003‘);

查询性别为女,并且年龄25岁以下的记录:

SELECT*FROM stu

WHERE gender = ‘fenmale‘ AND age<=25;

3模糊查询:

当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE

通配符:

_  任意一个字母    ‘张_‘  -- 姓张,名字为两个字的所有人

% 任意0~n个字母      ‘张%‘  -- 姓张的所有人

      

SELECT*FROM stu

WHERE NAME LIKE ‘____i‘;          -- 名字由5个字母构成,并且第五个字母必须为i的人

        4字段控制查询:

4.1去除重复记录  

去除重复记录(两行或两行以上的记录中的数据都相同),例如,在员工表emp中,sal字段就存在相同的记录。当只查询emp表的sal字段时,那么会出现重复记录,想去除重复记录,需要使用DISTINCT。

SELECT DISTINCT sal FROM emp;

SELECT DISTINCT 字段1,字段2  FROM emp;       -- 滤除所指定的两个字段都重复的多余字段

4.2查看雇员的月薪与奖金之和

因为sal和comm两列的类型都是数值类型,所以可以做加运算。如果sal或comm中有一个字段不是数值类型的,那么会出错。任何类型的数据和NULL相加都是NULL。

SELECT  sal+comm FROM emp;    

SELECT  sal+IFNULL(comm,0) FROM emp;         

-- 如果comm为NULL,利用IFNULL()函数将comm赋0后再相加

 SELECT  name,sal+IFNULL(comm,0) AS 总工资 FROM emp;  

-- 将求和后显示出的字段重命名为“总工资”,并与对应的姓名一起显示。AS可以省略。  

SELECT  name  姓名,sal+IFNULL(comm,0)  总工资  FROM  emp; 

-- 同时给name一栏也个起别名      

5排序查询:

5.1 查询所有学生记录,按年龄升序排列

SELECT*

FROM stu

ORDER BY age ASC;

或者

SELECT*

FROM stu

ORDER BY age;        -- 默认升序排序

       5.2 查询所有学生记录,按年龄降序排列

SELECT*

FROM stu

ORDER BY age DESC , id ASC;      -- 主要条件和次要条件

时间: 2024-08-27 16:53:00

MySQL查询的相关文章

MySQL 查询语句使用进阶

MySQL 查询语句使用进阶 =============================================================================== 概述: =============================================================================== 练习: 练习1  首先导入hellodb.sql的脚本文件,查询其数据库和表如下: [[email protected] ~]# mysql 

mysql查询练习

mysql> #查询每个栏目最贵的商品 mysql> select goods_id,shop_price,cat_id from (select goods_id,shop_price,cat_id from goods order by shop_price desc) as temp group by cat_id; +----------+------------+--------+ | goods_id | shop_price | cat_id | +----------+----

Mysql查询缓存碎片、缓存命中率及Nagios监控

Mysql 的优化方案,在互联网上可以查找到非常多资料,今天对Mysql缓存碎片和命中率作了详细了解,个人作了简单整理. 一.Mysql查询缓存碎片和缓存命中率. mysql> SHOW STATUS LIKE 'qcache%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | Qcache_free_blocks | 5 |

MySQL查询in操作 查询结果按in集合顺序显示_Mysql_脚本之家

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

MySQL查询计划输出列的含义

"一:MySQL查询计划输出列的含义:1.id:每个被独立执行的操作的标识,表示对象被操作的顺序:id值越大,先被执行:如果相同,执行顺序从上到下.2.select_type:查询中每个select子句的类型.3.table:名字,被操作的对象的名称,通常是表名,但有其他格式.4.partitions:匹配的分区信息(对于非分区表值为NULL).5.type:连接操作的类型.6.possible_keys:备选的索引(列出可能被使用到的索引).7.key:经优化器选定的索引:常使用ANALYZE

mysql查询缓存打开、设置、参数查询、性能变量意思

http://blog.sina.com.cn/s/blog_75ad10100101by7j.html http://www.cnblogs.com/zemliu/archive/2013/08/03/3234372.html 第一: query_cache_type 使用查询缓存的方式 一般,我们会把 query_cache_type 设置为 ON,默认情况下应该是ON mysql> select @@query_cache_type;+--------------------+| @@qu

MySQL查询本周、上周、本月、上个月份数据的sql代码(转)

感谢:http://www.jb51.net/article/32277.htm ------------------------------------------------------------------------------ MySQL查询的方式很多,下面为您介绍的MySQL查询实现的是查询本周.上周.本月.上个月份的数据,如果您对MySQL查询方面感兴趣的话,不妨一看 查询当前这周的数据 SELECT name,submittime FROM enterprise WHERE Y

Mysql 查询注意和执行shell命令

Mysql 查询注意 1. 在mysql查询的时候需要注意在表的前面加上数据库的前缀,不然就是默认是当前的数据库(当多个库查询的时候,可能会出现重复的查相同的表多次) 2. \! ls –al ,mysql可以执行shell 外部的命令(注意\!和ls之间的空格) 版权声明:本文为博主原创文章,未经博主允许不得转载.

MYSQL查询性能优化

查询的基础知识 MySQL查询过程如下图所示: MySQL是通过查询语句的哈希查找来命中缓存的,需要注意的是如果查询语句大小写不一致或者有多余的空格,是不会命中缓存的. 一个查询通常有很多执行方式,查询优化器通过计算开销(随机读取次数)来选择最优的查询. MySQL把所以的查询都当做联接来处理,联接是按照循环嵌套的策略来执行的,如下图所示: 查询的优化和限制 我们需要知道查询优化器会做哪些优化,这样在写查询的时候就可以不需要考虑手动来做这些优化,把这些事情交给查询优化器去做是更好的选择,查询优化

mysql 查询当天、昨天、本周、上周、本月、上月、今年、去年数据

mysql 查询当天数据 mysql查询今天.昨天.7天.近30天.本月.上一月 数据 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) = 1 近7天 SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名) 查询当