复习一下数据库的知识,虽然看了不少视频,基本的东西也懂一点,但是觉得还是对着书巩固一下为好。
增加字段名 : mysql> alter table user add column age int(3); add replace drop(attation no delete) 改变字段:alter table user change age age4 int(4); 基本的语句太多了 mysql -uroot -ppassowrd show databases; use databasesname; show table;\ desc tablename; create table tablename{ ...... } ......DML语句使我们常用的语句需要重点掌握
去重
有时需要将表中的记录去掉重复后显示出来,可以用 distinct 关键字来实现: mysql> select ename,hiredate,sal,deptno from emp; +--------+------------+---------+--------+ | ename | hiredate | sal | deptno | +--------+------------+---------+--------+ | zzx | 2000-01-01 | 2000.00 | 1 | | lisa | 2003-02-01 | 4000.00 | 2 | | bjguan | 2004-04-02 | 5000.00 | 1 | +--------+------------+---------+--------+ 3 rows in set (0.00 sec) mysql> select distinct deptno from emp; +--------+ | deptno | +--------+ | 1 | | 2 | +--------+ 2 rows in set (0.00 sec)条件查询: 关键字为where
select * from user where id =1;排序 我们经常会有这样的需求,取出按照某个字段进行排序后的记录结果集,这就用到了数据库 的排序操作,用关键字 ORDER BY 来实现,语法如下: SELECT * FROM tablename [WHERE CONDITION] [ORDER BY field1 [DESC|ASC],field2 [DESC|ASC],……fieldn [DESC|ASC]] 其中,DESC 和 ASC 是排序顺序关键字,DESC 表示按照字段进行降序排列,ASC 则表示升序 排列,如果不写此关键字默认是升序排列。ORDER BY 后面可以跟多个不同的排序字段,并 且每个排序字段可以有不同的排序顺序。
把 emp 表中的记录按照工资高低进行显示: mysql> select * from emp order by sal; +--------+------------+---------+--------+ | ename | hiredate | sal | deptno | +--------+------------+---------+--------+ | zzx | 2000-01-01 | 2000.00 | 1 | | bzshen | 2005-04-01 | 3000.00 | 3 | | lisa | 2003-02-01 | 4000.00 | 2 | | bjguan | 2004-04-02 | 5000.00 | 1 | +--------+------------+---------+--------+ 4 rows in set (0.00 sec)聚合:
对其参数进行以下说明。 fun_name 表示要做的聚合操作,也就是聚合函数,常用的有 sum(求和)、count(*)(记 录数)、max(最大值)、min(最小值)。 GROUP BY 关键字表示要进行分类聚合的字段,比如要按照部门分类统计员工数量,部门 就应该写在 group by 后面。 WITH ROLLUP 是可选语法,表明是否对分类聚合后的结果进行再汇总。 HAVING 关键字表示对分类后的结果再进行条件的过滤。 注意:having 和 where 的区别在于 having 是对聚合后的结果进行条件的过滤,而 where 是在聚 合前就对记录进行过滤,如果逻辑允许,我们尽可能用 where 先过滤记录,这样因为结果 集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用 having 进行再过滤。
表连接:
外连接有分为左连接和右连接,具体定义如下。 左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录 右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
mysql> select ename,deptname from emp left join dept on emp.deptno=dept.deptno;