一、数据库定义
1.数据库 database
2.自定义:库>表>(表结构+表数据+索引(数据结构:查)+自定义函数+存储过程)
二、数据的完整性和条件约束
1、实体完整性:(行的唯一性)
- 唯一性约束(1列)
- unique key 主键约束(1~N列) primary key
- 自增列(1个数值类型列) auto_increment
2、域完整性:
- 为列选择恰当的数据类型
- 非空约束 not null
- 默认值约束 default
3、引用完整性
- 外键约束 foreign key
三、库与表的创建于操作
1、建库
show databases; 查当前系统下所有可见库
create database [if not exists] DATABASE_NAME; 创建【如果不存在】数据库
drop database [if exists] DATABASE_NAME; 删除【如果】存在数据库
2、建表
show tables; //查看当前库中的所有表
create table TABLENAME(
FIELDNAME [unsigned] datatype [not null,default(VALUE),auto_increment,primary key,unique key],
...
);
3、表结构操作
show/create/drop table TABLENAME;
4、数据操作(增删改查)
插入操作
#1.insert into TABLENAME(FIELD...) values(VALUES...),...(VALUES...);
#2. DESCTABLE必须存在
insert into DESCTABLE(FIELD...) select (FIELDS...)fromTABLENAME;
#3.DESTTABL不能存在
create table [if not exists] DESTTABLE(select FIELDS...from OTHERTABLE);
#删除操作
delete from TABLENAME where ...FIELD = / FIELD in(...);
#关系运算符 等于等于:= 不等于:<>
#mysql中的逻辑运算符 and or not
#id >=min and id<=max <=> id between min and max
#in(VALUES...)
#like '教%' like '教_' %表示任意长度任意内容,_表示是一个长度任意内容
#is [not] NULL 【不】为空
truncate table TABLENAME; //删除整张表
#修改操作
update TABLENAME set field=VALUE,...fieldn=VALUEN where...(where同上)
5、数据查询
#1、简单查询
select
FIELDS... 列筛选
from
TABLENAME
where
... 原始数据行筛选
group by
FIELDS... 左一为主,其右依次为辅,以逗号分隔
having
... 分组结果二次筛选
order by
[FIELD ASC默认 / DESC]...
limit 当前页码:pageNo,每页的数据量:pageSize,总页数:total
(pageNo-1)*pageSize,pageSize
#2、复杂查询
#子查询
select
可以出现子查询
from
可以出现子查询
where
可以出现子查询,但是在in/call/some/any子查询中不可以出现limit
group by
不可以出现子查询
having
可以出现子查询
order by不可以出现子查询
limit
不可以出现子查询
#合并查询
select
FIELDS...
from
TABLE1,...,TABLEN
...
#连接查询 数据多的前置(从表前置)
内连接
select
FIELDS...
from
TABLEA A
inner join
TABLEB B
on
A.fk=B.pk 从表在前,主表在后
外连接
左外left join
右外right join
全外
四、主键的意义
一般情况下:每张表都有一个无意义的自增列(begin:1,step:1)作为主键
- 为什么每张表都要有主键:
因为创建主键后会自动创建聚族索引,提高检索效率 - 为什么主键是自增列:
因为可以更好的确保主键的唯一特性 - 为什么需要主键无意义:
因为有意义的字段具有不确定因素
下集预告:索引、函数、存储过程、事务和范式的精彩讲解,敬请期待!