1.数据字段加和,合并
# 字段名称 enme sal comm 年薪是(sal+comm)*12的别名 emp表名
select ename,(sal+comm)*12 年薪 from emp;
#concat合并字段 把 name和sql 合并 员工薪资是新字段名称的别名 emp表名
select CONCAT(ename,'的年薪是',sql) 员工薪资 from emp;
#更新数据库里边有%的
update emp set ename = 'JAM%ES' where empno =7900;
2.模糊查询
# 查询ename中最后一个字母为N的
select * from emp WHERE ename LIKE '%N';
# 查询ename中第一个字母为Mde
select * from emp WHERE ename LIKE 'M%';
# 查询ename中有M的值
select * from emp WHERE ename LIKE '%M%';
# 第三个字符是M的
SELECT * FROM emp WHERE ename LIKE '__M%';
#更新数据库里边有%的
update emp set ename = 'JAM%ES' where empno =7900;
# 特殊模糊查询
select * from emp WHERE ename LIKE '%\%%';
- 结果
mysql> select * from emp WHERE ename LIKE '%N';
select * from emp WHERE ename LIKE 'M%';
select * from emp WHERE ename LIKE '%M%';
+-------+--------+----------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+----------+------+------------+------+------+--------+
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600 | 300 | 30 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
+-------+--------+----------+------+------------+------+------+--------+
2 rows in set
+-------+--------+----------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+----------+------+------------+------+------+--------+
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
+-------+--------+----------+------+------------+------+------+--------+
1 row in set
+-------+--------+----------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+----------+------+------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1987-07-13 | 1100 | NULL | 20 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
+-------+--------+----------+------+------------+------+------+--------+
4 rows in set
mysql> SELECT * FROM emp WHERE ename LIKE '__M%'
-> ;
+-------+-------+-------+------+------------+-----+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+-------+-------+------+------------+-----+------+--------+
| 7900 | JAMES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
+-------+-------+-------+------+------------+-----+------+--------+
1 row in set
mysql> update emp set ename = 'JAM%ES' where empno =7900;
Query OK, 1 row affected
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from emp;
+-------+--------+-----------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+-----------+------+------------+------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600 | 300 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250 | 500 | 30 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-07-13 | 3000 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000 | NULL | 10 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500 | 0 | 30 |
| 7876 | ADAMS | CLERK | 7788 | 1987-07-13 | 1100 | NULL | 20 |
| 7900 | JAM%ES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000 | NULL | 20 |
+-------+--------+-----------+------+------------+------+------+--------+
13 rows in set
# 特殊模糊查询
mysql> select * from emp WHERE ename LIKE '%\%%';
+-------+--------+-------+------+------------+-----+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+-------+------+------------+-----+------+--------+
| 7900 | JAM%ES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
+-------+--------+-------+------+------------+-----+------+--------+
1 row in set
3.升序降序排序,分页
- 默认是升序 asc 不强调都是升序
#升序:asc
#降序:desc
select * from emp order by sal desc;
# 分页输出
select * from emp limit 3;
# 多页列排序
select * from emp order by deptno,sal desc;
# 查询emp表 sal>1000 降序 前五列查询
select * from emp where sal> 1000 order by sal desc limit 0,5;
- 结果
mysql> select * from emp order by deptno,sal desc ;
+-------+--------+-----------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+--------+-----------+------+------------+------+------+--------+
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000 | NULL | 10 |
| 7782 | CLARK | MANAGER | 7839 | 1981-06-09 | 2450 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-07-13 | 3000 | NULL | 20 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000 | NULL | 20 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975 | NULL | 20 |
| 7876 | ADAMS | CLERK | 7788 | 1987-07-13 | 1100 | NULL | 20 |
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800 | NULL | 20 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | NULL | 30 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600 | 300 | 30 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500 | 0 | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-22 | 1250 | 500 | 30 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250 | 1400 | 30 |
| 7900 | JAM%ES | CLERK | 7698 | 1981-12-03 | 950 | NULL | 30 |
+-------+--------+-----------+------+------------+------+------+--------+
13 rows in set
mysql> select * from emp where sal> 1000 order by sal desc limit 0,5;
+-------+-------+-----------+------+------------+------+------+--------+
| empno | ename | job | mgr | hiredate | sal | comm | deptno |
+-------+-------+-----------+------+------------+------+------+--------+
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000 | NULL | 10 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-07-13 | 3000 | NULL | 20 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000 | NULL | 20 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975 | NULL | 20 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | NULL | 30 |
+-------+-------+-----------+------+------------+------+------+--------+
5 rows in set
4.单行函数
- 操作示例
#lower转换成小写
#length 长度
#lpad 加加字符
# ltrim 加空格
#replace 替换
# substr(ename,2,3) ename 从第二个字母开始查询三个
#
select lower(ename),length(ename) froom emp;
#
select lower(ename),length(ename),lpad(ename,8,'#'),rpad(ename,8,'#'),ltrim(' 123 '),rtrim(' 123 ') from emp;
#
select lower(ename),length(ename),lpad(ename,8,'#'),rpad(ename,8,'#'),ltrim(' 123 '),rtrim(' 123 '),replace(ename,'S','@'),SUBSTR(ename,2,3) from emp;
#第二个字母为A的查询出来
select lower(ename),length(ename),lpad(ename,8,'#'),rpad(ename,8,'#'),ltrim(' 123 '),rtrim(' 123 '),replace(ename,'S','@'),SUBSTR(ename,2,3) from emp where SUBSTR(ename,2,1)='A';
- 结果示例
mysql> select lower(ename),length(ename) froom emp;
1064 - 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 'emp' at line 1
mysql> select lower(ename),length(ename) from emp;
+--------------+---------------+
| lower(ename) | length(ename) |
+--------------+---------------+
| smith | 5 |
| allen | 5 |
| ward | 4 |
| jones | 5 |
| martin | 6 |
| blake | 5 |
| clark | 5 |
| scott | 5 |
| king | 4 |
| turner | 6 |
| adams | 5 |
| jam%es | 6 |
| ford | 4 |
+--------------+---------------+
13 rows in set
mysql> select lower(ename),length(ename),lpad(ename,8,'#'),rpad(ename,8,'#'),ltrim(' 123 '),rtrim(' 123 ') from emp;
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+
| lower(ename) | length(ename) | lpad(ename,8,'#') | rpad(ename,8,'#') | ltrim(' 123 ') | rtrim(' 123 ') |
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+
| smith | 5 | ###SMITH | SMITH### | 123 | 123 |
| allen | 5 | ###ALLEN | ALLEN### | 123 | 123 |
| ward | 4 | ####WARD | WARD#### | 123 | 123 |
| jones | 5 | ###JONES | JONES### | 123 | 123 |
| martin | 6 | ##MARTIN | MARTIN## | 123 | 123 |
| blake | 5 | ###BLAKE | BLAKE### | 123 | 123 |
| clark | 5 | ###CLARK | CLARK### | 123 | 123 |
| scott | 5 | ###SCOTT | SCOTT### | 123 | 123 |
| king | 4 | ####KING | KING#### | 123 | 123 |
| turner | 6 | ##TURNER | TURNER## | 123 | 123 |
| adams | 5 | ###ADAMS | ADAMS### | 123 | 123 |
| jam%es | 6 | ##JAM%ES | JAM%ES## | 123 | 123 |
| ford | 4 | ####FORD | FORD#### | 123 | 123 |
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+
13 rows in set
mysql> select lower(ename),length(ename),lpad(ename,8,'#'),rpad(ename,8,'#'),ltrim(' 123 '),rtrim(' 123 '),replace(ename,'S','@'),SUBSTR(ename,2,3) from emp;
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+------------------------+-------------------+
| lower(ename) | length(ename) | lpad(ename,8,'#') | rpad(ename,8,'#') | ltrim(' 123 ') | rtrim(' 123 ') | replace(ename,'S','@') | SUBSTR(ename,2,3) |
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+------------------------+-------------------+
| smith | 5 | ###SMITH | SMITH### | 123 | 123 | @MITH | MIT |
| allen | 5 | ###ALLEN | ALLEN### | 123 | 123 | ALLEN | LLE |
| ward | 4 | ####WARD | WARD#### | 123 | 123 | WARD | ARD |
| jones | 5 | ###JONES | JONES### | 123 | 123 | JONE@ | ONE |
| martin | 6 | ##MARTIN | MARTIN## | 123 | 123 | MARTIN | ART |
| blake | 5 | ###BLAKE | BLAKE### | 123 | 123 | BLAKE | LAK |
| clark | 5 | ###CLARK | CLARK### | 123 | 123 | CLARK | LAR |
| scott | 5 | ###SCOTT | SCOTT### | 123 | 123 | @COTT | COT |
| king | 4 | ####KING | KING#### | 123 | 123 | KING | ING |
| turner | 6 | ##TURNER | TURNER## | 123 | 123 | TURNER | URN |
| adams | 5 | ###ADAMS | ADAMS### | 123 | 123 | ADAM@ | DAM |
| jam%es | 6 | ##JAM%ES | JAM%ES## | 123 | 123 | JAM%E@ | AM% |
| ford | 4 | ####FORD | FORD#### | 123 | 123 | FORD | ORD |
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+------------------------+-------------------+
13 rows in set
mysql> select lower(ename),length(ename),lpad(ename,8,'#'),rpad(ename,8,'#'),ltrim(' 123 '),rtrim(' 123 '),replace(ename,'S','@'),SUBSTR(ename,2,3) from emp where SUBSTR(ename,2,1)='A';
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+------------------------+-------------------+
| lower(ename) | length(ename) | lpad(ename,8,'#') | rpad(ename,8,'#') | ltrim(' 123 ') | rtrim(' 123 ') | replace(ename,'S','@') | SUBSTR(ename,2,3) |
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+------------------------+-------------------+
| ward | 4 | ####WARD | WARD#### | 123 | 123 | WARD | ARD |
| martin | 6 | ##MARTIN | MARTIN## | 123 | 123 | MARTIN | ART |
| jam%es | 6 | ##JAM%ES | JAM%ES## | 123 | 123 | JAM%E@ | AM% |
+--------------+---------------+-------------------+-------------------+--------------------+--------------------+------------------------+-------------------+
3 rows in set
mysql>
- floor向下取整
- ceil 向上取整
- power 平方
- round 四舍五入
- dual 虚拟表
mysql> select abs(-10),floor(3.2),floor(3.8),CEIL(3.2),CEIL(3.8), power(2,3) from dual;
+----------+------------+------------+-----------+-----------+------------+
| abs(-10) | floor(3.2) | floor(3.8) | CEIL(3.2) | CEIL(3.8) | power(2,3) |
+----------+------------+------------+-----------+-----------+------------+
| 10 | 3 | 3 | 4 | 4 | 8 |
+----------+------------+------------+-----------+-----------+------------+
1 row in set