SQL查询(SQL语法)简单查询 加 条件查询

1.简单的查询语句(DQL)
语法格式:
select 字段名1,字段名2,字段名,…from 表名;
提示:
1、任何一条sql语句以“;”语句
2、sql语句不区分大小写,即大小写都一样

	查询全部字段
	select * from emp; //实际开发中不建议使用‘*‘,效率比较低
	查询员工的年薪?(字段可以参与数学运算)
	select ename,sal*12 from emp;
	+--------+----------+
	| ename  | sal*12   |
	+--------+----------+
	| SMITH  |  9600.00 |
	| ALLEN  | 19200.00 |
	| WARD   | 15000.00 |
	| JONES  | 35700.00 |
	| MARTIN | 15000.00 |
	| BLAKE  | 34200.00 |
	| CLARK  | 29400.00 |
	| SCOTT  | 36000.00 |
	| KING   | 60000.00 |
	| TURNER | 18000.00 |
	| ADAMS  | 13200.00 |
	| JAMES  | 11400.00 |
	| FORD   | 36000.00 |
	| MILLER | 15600.00 |
	+--------+----------+
		
	给查询结果的列重命名?
		select ename,sal*12 as yearsal from emp;

		select ename,sal*12  yearsal from emp;  //中间的as可以省略
	
		+--------+----------+
		| ename  | yearsal  |
		+--------+----------+
		| SMITH  |  9600.00 |
		| ALLEN  | 19200.00 |
		| WARD   | 15000.00 |
		| JONES  | 35700.00 |
		| MARTIN | 15000.00 |
		| BLAKE  | 34200.00 |
		| CLARK  | 29400.00 |
		| SCOTT  | 36000.00 |
		| KING   | 60000.00 |
		| TURNER | 18000.00 |
		| ADAMS  | 13200.00 |
		| JAMES  | 11400.00 |
		| FORD   | 36000.00 |
		| MILLER | 15600.00 |
		+--------+----------+
	别名中有中文?
	ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 			corresponds to your MySQL server version for the right syntax to use near '??薪 from 		emp' at line 1

	中文需要用单引号 括起来''
	+--------+----------+
	| ename  | 年薪     |
	+--------+----------+
	| SMITH  |  9600.00 |
	| ALLEN  | 19200.00 |
	| WARD   | 15000.00 |
	| JONES  | 35700.00 |
	| MARTIN | 15000.00 |
	| BLAKE  | 34200.00 |
	| CLARK  | 29400.00 |
	| SCOTT  | 36000.00 |
	| KING   | 60000.00 |
	| TURNER | 18000.00 |
	| ADAMS  | 13200.00 |
	| JAMES  | 11400.00 |
	| FORD   | 36000.00 |
	| MILLER | 15600.00 |
	+--------+----------+
	14 rows in set (0.00 sec)
	
	标准sql语句中要求字符串使用单引号括起来。

	

条件查询 以及 查询关键字





语法格式:
	select
		字段,字段...
	from
		表名
	where
		条件;

执行顺序:先from,然后where ,最后select


查询工资等于5000的员工姓名?
	select ename from emp where sal = 5000+-------+
	| ename |
	+-------+
	| KING  |
	+-------+
查询smith的工资
select sal from emp where ename = 'smith';
	+--------+
	| sal    |
	+--------+
	| 800.00 |
	+--------+
查找工资不低于3000的员工
select ename from emp where sal >= 3000;
	+-------+
	| ename |
	+-------+
	| SCOTT |
	| KING  |
	| FORD  |
	+-------+
	不等于	<>   !=
找到工资11003000之间的工资,包括11003000
select ename from emp where sal <= 3000 and sal>=1100;

select ename from emp where sal between 1100 and 3000;
between在使用时,必须左小右大

between and 除了可以使用在数字方面之外,还可以使用在字符串方面
select ename from emp where ename between 'a' and 'c';
	+-------+
	| ename |
	+-------+
	| ALLEN |
	| BLAKE |
	| ADAMS |
	+-------+
	用在字符上面是左闭区右开

	que:找出哪些人没有津贴? 在数据库中NULL不是一个值,代表什么也没有,为空。 
		空不是一个值,不能用等号衡量。
		必须使用is null 或者is not null
		select ename,comm from emp where comm is null;  //只能用 = ,不能用is 
		+--------+------+
		| ename  | comm |
		+--------+------+
		| SMITH  | NULL |
		| JONES  | NULL |
		| BLAKE  | NULL |
		| CLARK  | NULL |
		| SCOTT  | NULL |
		| KING   | NULL |
		| ADAMS  | NULL |
		| JAMES  | NULL |
		| FORD   | NULL |
		| MILLER | NULL |
		+--------+------+
				
		que:找出那些人津贴不为NULL?
		select ename,comm from emp where comm is not null;
		+--------+---------+
		| ename  | comm    |
		+--------+---------+
		| ALLEN  |  300.00 |
		| WARD   |  500.00 |
		| MARTIN | 1400.00 |
		| TURNER |    0.00 |
		+--------+---------+
		
		que:找出哪些人没有津贴?
		select ename,comm from emp where comm is null or comm = 0;
		注意null和0不是一个概念
			
			+--------+------+
			| ename  | comm |
			+--------+------+
			| SMITH  | NULL |
			| JONES  | NULL |
			| BLAKE  | NULL |
			| CLARK  | NULL |
			| SCOTT  | NULL |
			| KING   | NULL |
			| TURNER | 0.00 |
			| ADAMS  | NULL |
			| JAMES  | NULL |
			| FORD   | NULL |
			| MILLER | NULL |
			+--------+------+

			找出工作岗位是MANAGER和SALESMAN的员工?  要用or查询,一个人只有一个岗位
			select ename,job from emp where job = 'MANAGER'  or  job = ‘SALESMAN’;
	
	and 和or 联合用:找出薪资大于1000并且部门编号是2030的员工. 其中and优先级大于or
	select ename,deptno,sal from emp where sal>1000 and deptno = 20 or deptno = 30; //错误
	select ename,sal,deptno from emp where sal>1000 and (deptno = 20 or deptno = 30);//正确
	注意:当运算符的优先级不确定的时候加小括号


	in 等同于	or:找出工作岗位是MANAGER 和SALESMAN的员工?
	select ename,job from emp where job = 'SALESMAN' or job = 'MANAGER';
	select ename,job from emp where in('SALESMAN','MANAGER');
	select ename ,sal from emp where in(1000,5000); //这是找出一千和五千的人,不是大于1000小于5000
	
	not in:不在这几个值当中:排除这几个值

	

分节,模糊查询

	que:模糊查询 like  ?
		找出名字当中含有O的?
		(在模糊查询当中,必须掌握两个特殊的符号,一个是%,一个是_)
		%代表任意多个字符,_代表任意1个字符。
		select ename from emp where ename like '%O%';
		找出第二个字母是A的?
		select ename from emp where ename like '_A%';

		找出名字中带下划线的名字,则需要使用到转义字符  \ 后加 _  代表将下划线转为一个普通的字符
		select ename from emp where ename like '%\_%';

		找出名字中的最后一个字母是T的?
		select ename from emp where ename like'%T';



发布了28 篇原创文章 · 获赞 0 · 访问量 442

猜你喜欢

转载自blog.csdn.net/wenshao007/article/details/104314155