列起别名 给查询的列起别名? 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 ‘%\_%’;
使用转义字符让下划线保留。