1. 常见关系型数据库
2. sql语言
3. sql分类
4. MySql常用数据类型
5.备份 恢复数据库
6.中文乱码
注意:where条件后面不能带聚合函数
select * from product order by price desc; --按价格降序
select sum(price) from product; --总价格
select * from product group by cno having avg(price) > 60;
多表设计–外键约束
多表设计中3种实体关系
1:N的联系(在多的一方添加外键,指向1的一方的主键)
将关系的属性及非多方的主标识加入到多方表
多方表的外键是非多方实体的主标识
N:M的联系(建一张中间表,至少要有两个外键分别指向原来那两张表)
联系的属性及两个实体的主标识形成关系表。
关系表的主键为两个实体主标识的组合
1:1的联系
实际用途: 用的不是很多
主要用在拆表操作 ,例: 将个人常用信息和不常用信息拆开,减少表的臃肿
多表设计实例
交叉连接查询—笛卡尔积
需要过滤出有意义的数据, where
- 左外连接
left outer join ... on
会将左表中所有数据查出来, 如果右表中没有对应的值,用null代替 - 右外连接
right outer join ... on
分页查询limit
select * from product limit 0,10;
--起始索引为0,总共10条数据
--index: 当前页,从1开始
--startIndex: 起始索引 startIndex = (index-1)*10
子查询
distinct 去掉重复值
auto_increment 自动增长
delete from 表名 where 条件
truncate table 表名 <===先删除表,再重建表
主键约束: 默认就是不为空,唯一. 一张表只能有一个主键, 外键都是指向另一张表的主键
唯一约束: 列的内容必须唯一, 不能重复,不能为空(唯一约束不能作为其他表的外键)
创建表
create table employee (
id int primary key auto_increment,
name varchar(20) not null,
gender varchar(10),
birthday date,
entry_date date,
job varchar(30),
salary double,
resume text
);
–数据表的结构的修改:
-- 1、在上面员工表的基本上增加一个image列。
alter table employee add image varchr(20);
--2、修改job列,使其长度为60。
alter table employee modify job varchar(60);
--3、删除gender列。
alter table employee drop gender;
--4、表名改为user。
rename table employee to user;
--5、修改表的字符集为utf8
alter table user character set utf8;
--6、列名name修改为username
alter table user change name username varchar(20) not null;
查看表结构
--1、查看数据库内的所有表
show tables;
--2、查看employee的建表语句
show create table employee;
--3、查看employee的表结构
desc employee;
删除表
drop table employee;