码迷,mamicode.com
首页 > 数据库 > 详细

MySQL查询

时间:2016-12-16 01:00:37      阅读:386      评论:0      收藏:0      [点我收藏+]

标签:排列   from   mysql   rom   命名   size   通配符   发送   name   

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;      -- 主要条件和次要条件

MySQL查询

标签:排列   from   mysql   rom   命名   size   通配符   发送   name   

原文地址:http://www.cnblogs.com/tzc1024/p/6181501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!