三范式:
1、第一范式: 列不可拆分
2、第二范式:唯一标识 (通过一个属性唯一找到一个对象)
3、第三范式:引用主键
创建数据库:
1 create database 数据库名 charset=utf-8
CRUD操作:
1、查询
select distinct name from 表名;
聚合: count(), max(), min(), sum(), avg()
group having
where 分组
原始集 ———— >结果集————结果集(having)
分页: limit start, count
select * from table student limit 2, 1 (会获取第3条数据,)
三种连接方式:
inner join : 两个表没有先后的顺序,只有匹配上了才会显示
left join: 以左边为准,会显示左表的全部信息,如果右边没有回以null填充
right join: 以右边为准,两个表都匹配上的都会显示,右表独有的数据也会出现
select statudent.name, sum(score) from statudent INNER JOIN socore on statudent.id=socore.stuid WHERE gender = 1 GROUP BY name;
还有一种叫做 外连接 out join, 但mysql不支持。从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录,然后加上左表中剩余的记录,最后加上右表中剩余的记录。但可以分别查询左连接和右连接,然后做union操作
视图:
将sql语句封装起来,直接用
事务:
当数据更改时,包括insert, update, delete
索引:
触发器:
存储过程: