MySQL基础知识

MySQL数据库基础知识

MySQL自带4个数据库

MySQL基础知识_第1张图片

information_schema:存储表信息,列信息等等,用户信息,简单理解为数据目录信息, 元数据

mysql:mysql数据库的核心数据库

performance_schema:数据库性能相关的信息

sys:数据都来自performance_schema,给DBA人员看更加方便


基础操作语句

查看所有的数据库    show databases;

创建数据库    create database 数据库名;

删除数据库    drop database 数据库名;

使用数据库    use 数据库名;

查看当前使用的数据库:    select database();        ·默认没有使用数据库,显示null

退出mysql:    exit 或者 quit

开发时,选择utf8编码,mysql配置就是utf8

查看编码相关信息:    show variables like '%character%';


创建表基本语法:

create table 表名(

    列1 类型 [约束],

    列2 类型 [约束],

    ...

    列n 类型 [约束]

);

表的命名:

组成:

mysql:字母,_,数字          oracle:字母,_,$,#,数字

长度不能超过32个字母

一般都是小写,多个单词之间用_分隔

建议:系统关系字大写, 大小写都不会报错

不能使用系统关键字


数据类型:

数值型

整型:

tinyint(1字节),smallint(2字节),mediumint(3字节),int(4字节),bigint(8字节)

主要使用int

小数:

浮点型:存储的是近似值

float(4字节):

double(8字节):

eg: float(10,2):根据需要制定有效位数是10,小数位2位

定点型:

decimal:精确存储,内部用字符串来存储的

eg:decimal(10,3): 有效位10位,小数位3位,实际占用空间有效位+2

文本型

char:定长的文本型

eg: name char(20):开辟20个字节,如果没有存储满,用空格填满

varchar:变成的文本型

eg: name varchar(20):最多可以存储20个字节,实际开辟空间由内容大小决定

char效率更高,如果值的长度是固定的,可以选择char

varchar:节约空间,如果值的长度不一致,可以选择varchar,使用的比较多

日期型

date:存储年月日  2019-01-21

time:存储时分秒  22:48:30

year:存储年   2019

datetime:存储年月日时分秒 2019-01-21 22:48:30 1000~9999范围 重点

timestamp:存储年月日时分秒  1970~2038范围, 如果不指定值,值会取当前时间

大数据量类型:

blob:可以存储大数据量的字节数据

text:可以存储大数据量的文本数据

比如存储图形信息:可以选择blob,但是也可以把图片存储到本地,把图片路径存到数据库


查看当前数据库下有哪些表:    show tables;

查看某个表的结构:    desc 表名;

查看表的创建语句:    show create table 表名;    show create table 表名 \G 

删除表:    drop table 表名;

MySQL基础知识_第2张图片

约束:

非空约束: not null            空:没有给值,任意的,未知的

唯一约束: unique             如果有值,不能重复        学号可以使用唯一约束

默认约束:default,  default 值        添加时,如果没有赋值,则取默认值

主键约束:primary key    保证行的唯一性

自动增长:auto_increment

适合主键,数值型,默认从1开始,每增加一行,值增加1

如果希望从n开始 create table 表名 (...) auto_increment=n;


导入脚本

source sql文件路径

source命令执行脚本,会按照从上到下的顺序依次执行

MySQL基础知识_第3张图片

数据库设计三大范式:

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,后面的范式基于前面范式,越高的范式数据库冗余越小。

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。

第一范式(1NF):

字段不可再分,比如:收货人地址拆分成    省,市,区....

                                   电话联系人    姓,  名

第二范式(2NF):

表中的字段不能部分依赖主键,只要不用联合主键, 只用一个列作为主键即可

通常,添加一个非业务字段作为主键

基于第一范式

第三范式(3NF):

表中的字段不能传递依赖

b字段依赖主键,  c字段依赖b ,这就是一种传递依赖

单独设计一张和b有关的表,c放到b对应的表中

减少字段的冗余.

基于第二范式


外键约束:foreign key

mysql中InnoDB引擎支持外键约束

当两个表有关系的时候,一个表的列a引用另外一个表(也可能当前表)的列b(主键列,唯一列)

可以给列a添加外键约束


被引用的表:父表,

引用的表:子表

被引用的列只能是主键列或唯一列

引用的列值只能取被引用列存在的值或空

on update 选择,on delete 选择:父表发生更新操作或者删除操作时,子表如何做

选择:

restrict:父表删除修改被引用列值时,如果子表有关联的数据,不能完成操作,报错,默认参数

cascade:级联删除或级联修改

set null:当父表数据删除或者修改时,对应子表数据置空

no action:在innoDB引擎下,和restrict效果一样

父表数据删除时,对应的外键值置null    修改时,级联修改

单独添加外键:表修改语句    

alter table 表名 add constraint foreign key(列名) references 被关联的表(被关联的列);

你可能感兴趣的:(MySQL基础知识)