列起别名 给查询的列起别名? 1 2 3 4 5 6 7 8 9 10 mysql >select deptno,dname as deptname from dept;(对deptno只查询,对dname才起别名) +--------+------------+ | deptno | deptname   | +--------+------------+ |     10 | ACCOUNTING | |     20 | RESEARCH   | |     30 | SALES      | |     40 | OPERATIONS | +--------+------------+ 4 rows in set (0.001 sec)
 
使用as关键字起别名,as为alias(别名)的缩写。as可以用空格代替。 
注意:只是将显示的查询结果列名显示为deptname,原表列名不变 
记住:select语句永远都不会进行修改操作,因为它的功能只负责查询。 
假设起别名的时候,别名里面有空格怎么办? mysql >select deptno,dname  dept name from dept; 
DBMS看到这样的语句,进行SQL语句的编译的时候,不符合语法,编译错误。
怎么解决?
加引号 
 mysql >select deptno,dname  “dept name” from dept; 
注意:在所有的数据库中,字符串统一使用单引号括起来,单引号是标准,双引号在oracle数据库中用不了,但是在mysql中可以使用。 
Ps:使用中文命名时要使用单引号括起来。 
列参与数学运算 计算员工年薪? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 mysql > select ename,sal from emp; +--------+---------+ | ename  | sal     | +--------+---------+ | SMITH  |  800.00 | | ALLEN  | 1600.00 | | WARD   | 1250.00 | | JONES  | 2975.00 | | MARTIN | 1250.00 | | BLAKE  | 2850.00 | | CLARK  | 2450.00 | | SCOTT  | 3000.00 | | KING   | 5000.00 | | TURNER | 1500.00 | | ADAMS  | 1100.00 | | JAMES  |  950.00 | | FORD   | 3000.00 | | MILLER | 1300.00 | +--------+---------+ 14 rows in set (0.001 sec) //先查看员工薪资。  mysql >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 | +--------+----------+ 14 rows in set (0.001 sec)
 
结论:字段可以使用数字表达式 
条件查询 什么是条件查询? 不是将表中的所有数据都查出来,是查询出来符合条件的。
语法格式: 
select  ….字段1,字段2,字段3…from  表名 where  条件;
条件查询需要用到where语句,where必须放到from语句表的后面。
运算符 
说明 
 
 
= 
等于 
 
<>或者!= 
不等于 
 
< 
小于 
 
<= 
小于等于 
 
> 
大于 
 
>= 
大于等于 
 
between…and… 
两个值之间,等同于>= and <=(左小右大)(闭区间)  
 
is null 
为null(is not null 不为空)  
 
and 
并且 
 
or 
或者 
 
in 
包含,相当于多个or(not in 不在这个范围中)  
 
not 
not 可以取非,主要用在is或者in中 
 
like 
like成为模糊查询,支持%或者下划线匹配,                          %匹配任意给字符,                                                                                      下划线,一个下划线只匹配一个字符。 
 
具体方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 MariaDB [hello]> select EMPNO from emp where EMPNO>7900; +-------+ | EMPNO | +-------+ |  7902 | |  7934 | +-------+ //查询编号大于7900的员工编号。 2 rows in set (0.001 sec)MariaDB [hello]> select ename,empno from emp where sal>790; +--------+-------+ | ename  | empno | +--------+-------+ | SMITH  |  7369 | | ALLEN  |  7499 | | WARD   |  7521 | | JONES  |  7566 | | MARTIN |  7654 | | BLAKE  |  7698 | | CLARK  |  7782 | | SCOTT  |  7788 | | KING   |  7839 | | TURNER |  7844 | | ADAMS  |  7876 | | JAMES  |  7900 | | FORD   |  7902 | | MILLER |  7934 | +--------+-------+ 14 rows in set (0.001 sec) //查询工资大于790的员工姓名和编号。 MariaDB [hello]> select ename empno from emp where comm is null; +--------+ | empno  | +--------+ | SMITH  | | JONES  | | BLAKE  | | CLARK  | | SCOTT  | | KING   | | ADAMS  | | JAMES  | | FORD   | | MILLER | +--------+ //无补助员工名单
 
注意:在数据库中null不能使用等号进行衡量。需要使用is null,因为数据库中的null代表什么也没有 ,它不是一个值,所以不能使用等号衡量。
and和or同时出现的话,有优先级问题吗 ?
and优先级比or高!!!语句会先执行and之后执行or。
解决方案:加括号! 
in的用法: 
in(’a’,’b’)
1 2 3 4 5 6 7 8 9 10 11 12 13 MariaDB [hello]> select JOB,ename from emp where job in ('CLERK','ANALYST'); +---------+--------+ | JOB     | ename  | +---------+--------+ | CLERK   | SMITH  | | ANALYST | SCOTT  | | CLERK   | ADAMS  | | CLERK   | JAMES  | | ANALYST | FORD   | | CLERK   | MILLER | +---------+--------+ 6 rows in set (0.001 sec) //查询工作是分析师和文员的工作人员,用in语句。
 
注意:in不是一个区间,in后面跟的是一个具体的值。 
关于like 
	称为模糊查询,支持%或下划线匹配。
	%匹配任意个字符
	下划线,一个下划线只匹配一个字符
(%是一个特殊符号,_也是一个特殊符号)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 MariaDB [hello]> select ename from emp where ename like '%o%'; +-------+ | ename | +-------+ | JONES | | SCOTT | | FORD  | +-------+ 3 rows in set (0.000 sec) //查询名字里面有o的人名。 MariaDB [hello]> select ename from emp where ename like '%T'; +-------+ | ename | +-------+ | SCOTT | +-------+ 1 row in set (0.001 sec) //查询名字后面以t结尾的人名。 MariaDB [hello]>  select ename from emp where ename like 'k%'; +-------+ | ename | +-------+ | KING  | +-------+ 1 row in set (0.000 sec) //查询名字以k开头的人名。 MariaDB [hello]>  select ename from emp where ename like '_A%'; +--------+ | ename  | +--------+ | WARD   | | MARTIN | | JAMES  | +--------+ 3 rows in set (0.001 sec) //查询名字中第二个字母是A的人名。
 
注意:找出名字中有下划线的 
select name from t_student where like ‘%\_%’; 
使用转义字符让下划线保留。