一、数据库定义

1.数据库 database
2.自定义:库>表>(表结构+表数据+索引(数据结构:查)+自定义函数+存储过程)

二、数据的完整性和条件约束

1、实体完整性:(行的唯一性)

  1. 唯一性约束(1列)
  2. unique key 主键约束(1~N列) primary key
  3. 自增列(1个数值类型列) auto_increment

2、域完整性:

  1. 为列选择恰当的数据类型
  2. 非空约束 not null
  3. 默认值约束 default

3、引用完整性

  1. 外键约束 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],
...
);

mysql产品文档 mysql教程文档_数据库


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同上)

mysql产品文档 mysql教程文档_数据库_02


mysql产品文档 mysql教程文档_主键_03


mysql产品文档 mysql教程文档_mysql产品文档_04


mysql产品文档 mysql教程文档_mysql_05


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)作为主键

  1. 为什么每张表都要有主键:
    因为创建主键后会自动创建聚族索引,提高检索效率
  2. 为什么主键是自增列:
    因为可以更好的确保主键的唯一特性
  3. 为什么需要主键无意义:
    因为有意义的字段具有不确定因素

下集预告:索引、函数、存储过程、事务和范式的精彩讲解,敬请期待!