mysql查询到的结果除于1024_MySQL之简单查询

DQL简介

DQL中主要是用来查询数据库中的数据,不会对数据库中的数据进行改变,查询关键字:SELECT

语法:SELECT 字段名 FROM 表名 [WHERE –> GROUP BY –>HAVING–> ORDER BY];

其中[]中的内容是一些条件。

在使用SELECT之前,先创建一个数据monkey1024:

create database monkey1024;

然后在这个数据库中创建三张表之后初始化数据,sql脚本如下:

create table dept(

DEPTNO int(2) PRIMARY KEY,

DNAME varchar(14),

LOC varchar(13)

);

INSERT INTO dept values(10, 'ACCOUNTING', 'NEW YORK');

INSERT INTO dept values(20, 'RESEARCH', 'DALLAS');

INSERT INTO dept values(30, 'SALES', 'CHICAGO');

INSERT INTO dept values(40, 'OPERATIONS', 'BOSTON');

create table emp(

EMPNO int(4) PRIMARY KEY,

ENAME varchar(10),

JOB varchar(9),

MGR int(4),

HIREDATE date,

SAL double(7,2),

COMM double(7,2),

DEPTNO int(2)

);

INSERT INTO emp values(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);

INSERT INTO emp values(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);

INSERT INTO emp values(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);

INSERT INTO emp values(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);

INSERT INTO emp values(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);

INSERT INTO emp values(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);

INSERT INTO emp values(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);

INSERT INTO emp values(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);

INSERT INTO emp values(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);

INSERT INTO emp values(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);

INSERT INTO emp values(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);

INSERT INTO emp values(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);

INSERT INTO emp values(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);

INSERT INTO emp values(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

create table salgrade(

GRADE int(11),

HISAL int(11),

LOSAL int(11)

);

INSERT INTO SALGRADE VALUES (1,1200,700);

INSERT INTO SALGRADE VALUES (2,1400,1201);

INSERT INTO SALGRADE VALUES (3,2000,1401);

INSERT INTO SALGRADE VALUES (4,3000,2001);

INSERT INTO SALGRADE VALUES (5,9999,3001);

注意:mysql在windows下是不区分大小写的,在linux中区分大小写,规则如下:

数据库名与表名是严格区分大小写的;

表的别名是严格区分大小写的;

字段名和字段的别名在所有的情况下均是忽略大小写的;

变量名也是严格区分大小写的;

可以在linux中修改mysql配置使其忽略大小写。

注释

单行注释,注意–后面加个空格

-- 这是单行注释

多行注释

/*

多行注释

*/

简单查询

查询员工姓名:

select ename from emp;

说明:select询句后面跟的是字段名称,select是关键字,select和字段名称之间采用空格隔开,

from后面是要查询的表。

查询员工编号和员工姓名:

select empno,ename from emp;

说明:多个字段之间采用,隔开。

查询emp表中的全部字段:

select * from emp;

说明:开发中不建议使用*,因为会先将其编译成字段,然后再去查询,稍微影响一些性能,而且也不明确,在开发中建议将要查询的字段都写上。

查询员工编号,姓名和年薪

select empno,ename,sal*12 from emp;

说明:字段上可以使用数学表达式,在执行select操作时,该操作不会改变数据库中的值,只是将计算结果展现。

将查询出的字段名称进行重命名

select empno,ename,sal * 12 as yearsal from emp;

其中as可以省略:

select empno,ename,sal * 12 yearsal from emp;

可以显示中文:

select empno,ename,sal * 12 as '年薪' from emp;

说明:该操作不会改变数据库中的值,中文需要使用”引上。

条件查询

条件查询需要使用where,并且where需要放到from 表的后面。

查询薪水是5000的员工

select empno,ename,sal from emp where sal = 5000;

查询job是MANAGER的员工

select empno,ename,job from emp where job = 'manager';

说明:job是varchar类型,后面的值需要使用”引上。

查询薪水不等于5000的员工

select empno,ename,sal from emp where sal <> 5000;

在mysql中<>表示不等于,!=也表示不等于,两者的含义和使用方式是一样的。

between … and …

查询薪水为1600到3000的员工:

select empno,ename,sal from emp where sal >= 1600 and sal <= 3000;

或者使用between…and…

select empno,ename,sal from emp where sal between 1600 and 3000;

说明:使用between…and… 的范围包括条件的值,即相当于>=和<=。

is null

查询津贴为空的员工:

select empno,ename,comm from emp where comm is null;

查询津贴不为空的员工

select empno,ename,comm from emp where comm is not null;

and

表示且,可以在where后面可以添加多个限制条件。

查询工作岗位为“MANAGER”并且薪水大于2500的员工

select empno,ename,job,sal from emp where job ='MANAGER' and sal > 2500;

or

表示或,只要满足一项条件即可。

查询出 job 为 SALESMAN 或 job为MANAGER的员工:

select ename,job from emp where job = 'SALESMAN' or job = 'MANAGER';

and和or表达式的优先级

and优先级高于or。

查询薪水大于1800,并且部门编号为20或30的员工:

select * from emp where sal>1800 and (deptno=20 or deptno=30);

说明:因为and优先级高于or,所以将两个or条件使用括号括起来。

in

只要满足一项条件即可,完全可以采用or来表示,采用in会更简洁一些

查询出Job是SALESMAN或者是MANAGER的员工:

select ename,job from emp where job in ('SALESMAN','MANAGER');

查询出薪水不是1600和3000的员工:

select ename,sal from emp where sal not in (1600,3000);

like

模糊查询,在数据量较大的情况下,使用like会影响性能。

查询姓名以M开头的所有员工:

select ename from emp where ename like 'M%';

查询姓名以N结尾的所有员工:

select ename from emp where ename like '%N';

查询姓名中包含O的所有员工:

select ename from emp where ename like '%O%';

查询姓名中第二个字母是A的所有员工:

select ename from emp where ename like '_A%';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值