【1】

        最近发现mysql的约束语句忘记的差不多了,在学习mybatis时才发现,自己几乎除了mysql基础语句,以他的已经抛之脑后了,今天就复习一下

【2】

       1. 先复习一下sql的完整语句

select 字段列表  from 表名 where 条件 Group by 分组字段 Having 分组后条件 Order by 排序 limit 分页限定

【3】

        1.多个字段查询

                Select 列名,列名 from 表名;

        2.去除某一列重复的数据

                select distinct 列明 from 表名;

        3.计算列的和,如果两个列都是数字类型,那么可以相加后查询

                例如:select id,name,salary,allowance,salary+ifunll(allowance,0) from emp;

                注意:这里的ifnull是为了防止allowance为空。

        4.起别名操作,在列名后加上as+新名字

【3】排列查询

        1.语法:order by 排列字段1 排列方式,排列字段2 排列方式.......

        2.排列方式 ①ASC升序,默认。②DESC降序

        举例:SELECT * FROM account ORDER BY ID DESC;

【4】聚合函数

        1.count:计算个数,一般选择非空的主键或者*

        2.max:最大值

        3.min:最小值

        4.avg:平均值

        举例:SELECT AVG(ID) FROM account

【5】分组查询

        1.group by

        2.举例

        按照性别分组。分别查询男、女同学的数学平均分

        SELECT sex , AVG(math) FROM student GROUP BY sex;

        按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组

        SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

        按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人

        SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;        

【6】分页查询

        1.limit 开始的索引,每页查询的条数;

        2.举例

        每页分成3份,从哪条开始查的公式:(当前页-1)*每页的份数

        SELECT * FROM student LIMIT 0,3; -- 第1页
            
        SELECT * FROM student LIMIT 3,3; -- 第2页
            
        SELECT * FROM student LIMIT 6,3; -- 第3页

【7】外键约束,这里唯一约束,非空约束,主键约束就不写了

        1.foreign key,让表于表产生关系,从而保证数据的正确性。

        2.语法

                创建外键表

                create table 表明(

                       外键列...,

                       外键列...,

            constraint 外键名称 foreign key(外键列名称) references 主表名称 (主表列名称)

            )

             这里外键名称随便起

        3.创建表之后,添加外键
            ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

        4. 删除外键
            ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

【8】内连接查询

        1.只有两个表相匹配的行才能在结果集中出现

        2.显式内连接语句

                inner可以省略

                * SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;    
                * SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`;   

        3.隐式内连接查询

                SELECT * FROM emp,dept WHERE emp.`dept_id` = dept.`id`;

SELECT ,emp.gender, FROM emp,dept WHERE emp.`dept_id` = dept.`id`;

【9】外连接查询

        1.左外连接,就是展示左表的所有数据,加上右表的对应数据

        SELECT     t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;、

        2.右外连接,就是展示右表的所有数据,加上左表的对应数据

        SELECT     * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;