MYSQL小记录

重新开始第7天

分组函数

sum 求和

avg 平均值

max 最大值

min 最小值

count 计算个数


sum ,avg一般用于处理数值型

max,min,count可以处理任何类型

以上分组函数都忽略NULL值


DML语言

insert into 表名(列名,。。。) values(值。。。)

insert into 表名 set 列名=值,。。。。

update 表名 set 列=新值, 。。。。where 筛选条件;

update 表 别名 , 表2 别名 set 列=值,。。。where 连接条件 and 筛选条件;(92)

update 表 别名 inner|left|right join 表 别名 on 链接条件 set 列 =值 where 筛选条件;(99)

删除

delete from 表名 where 筛选条件

delete 需要删除的别名 from 表 表名,表2 别名 where 链接条件 and 筛选条件;(92)

delete 表1的别名,表2的别名 inner|left|right join 表2 别名 on 连接条件 where 筛选条件;(99)

truncate table 表名 ;

 


DDL语言

创建

create database 库名

修改

alter table 表名 add|drop|modify|change|rename to(重命名) column 列名 [列类型,约束]

alter database books character set gbk;

修改列名

alter table book change(改列名) column publishdate pubDate datetime;

修改列的类型或约束

alter table book modify (修改) column pubdate timestamp;

添加新列

alter table author add(添加) column annual double;

删除

drop database if exists books;

 


drop database fi exists 旧库名;

create database 新库名;

drop table if exists 旧库名;

create tabel 表名();


表的复制

insert into author values

create table 创建的表名 like author;//复制表的结构

create table 创建的表名 select * from 被复制表名;//复制表的结构+数据

cretat table 创建表名 select 需要拷贝的内数据 from 表名 ;//只复制部分数据


常见的数据类型

数值型:

整形

小数

定点数

浮点型

字符型:

较短的文本:char, varchar

较长的文本: text , blob(较长的二进制数据)

日期型 :


整形

分类:

tinyint , smallint , mediumint, int/integer, bigint

如果不设置无符号还是有符号。默认是有符号,如果想设置成无符号,需要添加unsigned

如果插入的数值超过了整数的范围,会报 out of range异常,并且插入临界值

 


小数

分类:

1 浮点型

float(M,D)

double(M,D)

2 定点型

dec (M,D)

decimal(M,D)

特点

M:整数部位+小数部位的总长度

D:小数部位小数点后?位

M,D都可以省略 如果是decimal,则M默认为10,D默认为0

如果是float 和double,则会根据插入的数值的精度来决定精度


字符型

分类:

较短的文本:

char

varchar

较长的文本

text

blob(较大的二进制)

特点:

写法 M的意思 特点 空间的耗费 效率

char char(M) 最大的字符数,可以省略 固定长度的字符 比较耗费 高

varchar varchar(M) 最大的字符数 不可省略 可变长度的字符 比较节省 低


日期型

分类:

date只保存日期

time只保存时间

year只保存年

datetime 保存日期+时间

timesatmp 保存日期加时间

特点:

字节 范围 时区等影响

datetime 8 1000到9999 不受

timestamp 4 1970到2038 受


常见约束

含义:一种限制,用于限制表中的数据,为了保证表中的数据的准确和可靠性

分类:六大约束

NOT NULL:非空,用于保证字段的值不能为空

default:默认,用于保证该字段有默认值

primary key:主键,用于保证该字段的值具有唯一性,并且非空

unique:唯一,用于保证该字段的值具有唯一性,可以为空

check:检查约束(mysql中不支持)

foreign key:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列值

在从表添加外键约束,用于引用主表中某列的值


标识列

有称为自增长列

含义:可以不用手动的插入值,系统提供默认的序列值

auto_increment//自增


索引

主键和具有unique约束的数字段自动添加索引

根据主键查询效率较高。尽量根据主键索引

create index 索引对象 on 表名(字段名);//创建索引

比如:create index emp_ename_index on emp(ename);

drop index 索引名称 on 表名;

索引底层原理采用的数据结构是:B+tree

索引的实现原理?

通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,最终通过索引检索到数据之后,获取到关联的物理地址,通过无力地址定位表中的数据,效率是最高的

索引什么时候失效?

模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。


视图

视图可以隐藏表的实现细节,保密级别较高的系统,数据库只对提供相关的视图,java程序员

只对视图对象进行CRUD


DBA命令

将数据库当中的数据导出

在windows dos命令窗口执行(导出整个库)

mysqldump 库 >D:\xxx.sql -uroot -pxxx

在windows dos命令串口中执行(导出制定数据库当中的制定表)

mysqldump 库 库里面的表> D:\xxx.sql -uroot -pxxx

导入数据

create database xxx;

use xxx;

source 把包拖进来


数据库设计三范式

什么是设计范式?

设计表的一句,按照这个三范式设计的表不会出现数据冗余

第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。

第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。

多对多?三张表,关系表两个外键

MYSQL小记录

 

 

 

 

第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖

一对多?两张表,多的表加外键一对多?两张表,多的表加外键

 

 

 

 

MYSQL小记录

 

 

 


在实际的开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度。


一对一设计?

一对一设计有两种方案:主键共享

MYSQL小记录

 

 

外键唯一

MYSQL小记录

 

 


MYSQL小记录

上一篇:MySQL实现主从同步原理


下一篇:常见环境搭建:MySQL5.7在Windows本地多实例安装