分享一下:我的Mysql数据库知识体系(理论封装)

本文详细介绍了Mysql数据库的初级、中级和高级知识,包括关系和范式、库表字段操作、数据操作以及事务、触发器、存储过程等内容。通过实例演示了SQL语句的使用,如创建数据库、表、字段,数据插入、删除、更新,并讲解了主键、外键、索引等概念,以及事务处理和触发器的创建。此外,还涵盖了数据备份与还原的基础知识。
摘要由CSDN通过智能技术生成

Mysql数据库SQL的知识体系结构
[索引目录]
Mysql数据库初级知识:
一、关系和范式
二、库基本操作
三、表基本操作
四、字段基本操作
五、数据基本操作

Mysql数据库中级知识:
一、用户管理用户授权
二、主键冲突蠕虫复制
三、数据查询基本操作
四、数据查询高级操作
五、数据查询视图操作

Mysql数据库高级知识:
一、数据处理之事务
二、数据处理之触发器
三、数据处理之存储过程
四、数据处理之变量与函数
五、数据处理之数据备份还原

Mysql数据库初级知识:
一、关系和范式
1.关系
1)一对一(任意一张表做外键均可)
一张表中的一条记录一定只能与另一张表中的一条记录进行对应。反之亦然。
2)一对多(一在多中做外键即可)
一张表中的一条记录可以对应另一张表中的多条记录,但是另外一张表中的一条记录却只能对应一张表中的一条记录。
3)多对多(将两张表的主键提出来新建一个中间关系表即可)
一张表中的一条记录能够对应另外一张表中的多条记录,同时另外一张表中的一条记录也能对应一张表中的多条记录。
注:数据库的关系反应到表的设计上来就是表中外键的设置。
2.范式
1)第一范式(原子性)
表中的所有列(或字段或属性)的数据项必须是不可再分—拆列。
2)第二范式(唯一性,消除部分依赖)
(满足1NF的前提下)表中非主键列必须完全依赖主键,不能只依赖于主键的一部分—设置逻辑主键。
3)第三范式(关联性,消除传递依赖)
(满足2NF的前提下)表中非主键列必须直接依赖主键,不能存在传递依赖—设置逻辑主键。
补充:
数据表设计的基本思想
1.分析数据库(E-R模型)—2.设计数据库(E-R模型转化成表)—3.规范数据库(三大范式)

二、库基本操作(增删改查引用)
create database 数据库名 [charset utf8/gbk collate utf8_bin/utf8_general_ci];
drop database 数据库名;
alter database 数据库名 [charset utf8/gbk collate utf8_bin/utf8_general_ci];
show create database 数据库名\G
use 数据库名;
例子:
create database test_db charset utf8 collate utf8_bin;
drop database test_db;
create database test_db charset utf8 collate utf8_bin;
alter database test_db charset utf8;
show create database test_db\G
use test_db;
注:字符集都有相应的校对集。

三、表基本操作(增删改查重命名)
create table 表名(字段1 类型1,字段2 类型2,字段3 类型3,字段4 类型4,字段5 类型5) [charset utf8/gbk collate utf8_bin/utf8_general_ci] engine innodb/myisam;
drop table 表名;
alter table 表名 [charset utf8/gbk collate utf8_bin/utf8_general_ci engine innodb/myisam];
show create table 表名\G
rename table 旧表名 to 新表名;/alter table 旧表名 rename 新表名;
例子:
create table my_student(学号 int,姓名 varchar(20),性别 char(1),年龄 int,电话 int,身高 int unsigned,班级 varchar(20)) charset utf8 collate utf8_bin engine myisam;
drop table my_student;
create table my_student(学号 int,姓名 varchar(20),性别 char(1),年龄 int,电话 int,班级 varchar(20)) charset utf8 collate utf8_bin engine myisam;
show create table my_student\G
alter table my_student collate utf8_general_ci engine innodb;
alter table my_student rename student;
rename table student to my_student;
create table my_class(序号 int primary key auto_increment,专业 varchar(20) not null,教室 varchar(20) not null) charset utf8;
insert into my_class values(null,‘huawei’,‘001’),(null,‘redhat’,‘002’),(null,‘mysql’,‘003’);

四、字段基本操作(数据类型、字段属性和约束条件)
1.增删改查重命名
alter table 表名 add column 字段 类型 [first];
alter table 表名 drop column 字段;
alter table 表名 modify 字段 类型 [not null/default ‘boy’/comment ‘number’];
desc 表名;
alter table 表名 change 旧字段名 新字段名 新类型;
例子:
alter table my_student add column 序号 int first;
alter table my_student drop column 电话;
alter table my_student modify 学号 int not null;
alter table my_student modify 性别 enum(‘男’,‘女’) default ‘男’;
alter table my_student change 班级 教室编号 int;
2.数据类型(数值型、字符串型和日期时间型)
1)数值型
①整数型
create table my_int(int_1 tinyint,int_2 smallint,int_3 int,int_4 bigint) charset utf8;
alter table my_int add int_5 tinyint unsigned; #无符号
alter table my_int add int_6 tinyint zerofill; #零填充
注:零填充属性会附带无符号属性,因为负数没有零填充。
②小数型
create table my_float(f1 float,f2 float(10,2),f3 float(6,2)) charset utf8;
create table my_decimal(f float(10,2),d decimal(10,2)) charset utf8;
注:无论是整数型还是小数型默认都是带符号数值型。
2)字符串型
①可变长字符型
create table my_utf8(name varchar(65535)) charset utf8;
create table my_gbk(name varchar(65535)) charset gbk;
create table my_utf8(name varchar(21844)) charset utf8;
create table my_gbk(name varchar(32766)) charset gbk;
②枚举型
create table my_enum(性别 enum(‘男’,‘女’)) charset utf8;
enum(枚举)的作用:节省空间和相当于单选框
③集合字符串型
create table my_set(city set(‘changsha’,‘guangzhou’,‘shanghai’,‘hangzhou’,‘chongqing’)) charset utf8;
insert into my_set values(‘changsha,guangzhou,hangzhou’);
3)时间和日期型
create table my_date(d1 datetime,d2 date,d3 time,d4 year,d5 timestamp) charset utf8;
insert into my_date values(‘2021-4-17 12:00:00’,‘2021-4-7’,‘12:00:00’,‘69’,‘2000-01-01 00:00:00’);
select unix_timestamp();
alter table my_date modify d5 timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
3.字段属性(非空、默认、描述和索引)
1)非空
create table my_null(id int not null) charset utf8;
2)默认
create table my_default(性别 char(1) default ‘男’) charset utf8;
3)描述
create table my_comment(姓名 varchar(20) comment ‘学生姓名’) charset utf8;
4)索引
create table my_index(Num int,index idx_type(Num)) charset utf8;
drop index idx_type on my_index;
create index idx_type on my_index(Num);
#alter table my_index add index idx_type(Num);
show index from my_index\G
4.约束条件(主键、复合主键、逻辑主键、外键和唯一键)
1)主键
create table my_pri1(Num int primary key,name varchar(20));
alter table my_pri1 drop primary key;
alter table my_pri1 add primary key(name);
show create table my_pri1\G
注:alter table my_pri1 Num int primary key; 同样也可以创建主键。
2)复合主键
create table my_pri2(s_id int,c_id int,primary key(s_id,c_id));
alter table my_pri2 drop primary key;
alter table my_pri2 add primary key(s_id,c_id);
show create table my_pri2\G
3)逻辑主键
create table my_pri3(Num tinyint unsigned primary key auto_increment,name varchar(20));
alter table my_pri3 modify Num tinyint unsigned;
alter table my_pri3 drop primary key;
show create table my_pri3\G
alter table my_pri3 modify Num tinyint unsigned primary key auto_increment;
alter table my_student modify 序号 int primary key auto_increment;
desc my_pri3;
注:逻辑主键的删除比较特殊,并且要先删除自增长后才能删除主键,否则会删除失败。
4)外键
①外键基本应用
create table my_foreign1(序号 int primary

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值