having子句
eg1:查询部门平均底薪超过2000的员工数量,你是不是会这样写?
SELECT deptno, COUNT(*)
FROM t_emp
WHERE AVG(sal) >= 2000
GROUP BY deptno;
结果运行出错,WHERE子句不允许出现聚合函数。HAVING子句的出现主要是为了WHERE子句不能使用聚合函数的问题,HAVING子句不能独立存在,必须依赖于GROUP BY子句而存在,GROUP BY 执行完成就立即执行HAVING子句
SELECT deptno, COUNT(*)
FROM t_emp
GROUP BY deptno HAVING AVG(sal) >= 2000;
如果按照数字1分组,MySQL会按照SELECT子句中的列进行分组,上例中group by deptno就可以写成group by 1。
---------------------------------------------------------------------------
order by子句:排序, 根据某个字段进行升序或者降序排序, 依赖校对集.
Order by 字段名 [asc|desc]; -- asc是升序(默认的),desc是降序
e.g:SELECT empno, ename, sal, deptno FROM t_emp ORDER BY sal DESC;
---------------------------------------------------------------------------
limit 子句
语法1:限制长度(数据量)
limit 数据量;
语法2:限制起始位置,限制数量。
limit 起始位置,长度;
--------------------------------------------------------------------------
二、基本命令
创建数据库
create database 数据库名;
create database 数据库名 character set 字符集; //(字符集=数据库编码)
创建之后修改数据库编码:
alter database 数据库名 character set=编码;
查看数据库服务器中的所有数据库
show databases;
查看某个数据库的信息
show create database 数据库名;
删除数据库
drop database 数据库名;
切换数据库
use 数据库名;
查看正在使用的数据库
select database();
创建表
create table 表名(字段名 类型(长度) 约束,字段名 类型(长度) 约束);
eg:创建分类表

查看数据库中所有表:
show tables;
删除表
drop table 表名;
修改表结构格式(常用)
给表增加新的列:
alter table 表名 add 列名 类型(长度) 约束; //修改表添加列
eg:为sort表添加一个新字段 分类描述,类型为varchar(20)
alter table sort add sdesc varchar(20);
添加多个字段分类:

把新的字段添加到表里某个字段后边而不是添加到表末尾:
alter table 表名 add 列名 类型(长度) 约束 after 某个字段;
修改列的类型长度及约束:
alter table 表名 modify 列名 类型(长度) 约束;
修改列名:
alter table 表名 change 旧列名 新列名 类型(长度) 约束;
删除表中的列:
alter table 表名 drop 列名;
修改表名
rename table 表名 to 新表名;
修改表的字符集
alter table 表名character set 字符集;
浙公网安备 33010602011771号