当前位置:   article > 正文

mysql数据库——思维导图_mysql数据库应用与设计任务驱动思维导图

mysql数据库应用与设计任务驱动思维导图

学完mysql后,自己弄得的思维导图。原图30.6MB,太大了放不上来,这里就放个链接吧。
欢迎大家去看,如果有需要改正的地方,请告诉我,谢谢。
链接:https://www.zhixi.com/view/718f3805
密码:6522

下面是MarkDown形式的的内容,但是缺少一些图片。完整的在思维导图上。

mysql数据库

使用DOS命令行窗口连接MySQL数据库

连接到mysql数据服务(mysql数据库)的指令:

mysql -h 主机IP -P 端口名 -u 用户名 -p密码
【注意事项】:

1、-p密码 之间不要有空格。
2、-p后面如果没有写密码,回车之后会要求输入密码。
3、如果没有写 -h 主机,则默认就是本机。
4、如果没有写 -P 端口名,则默认就是3306。
5、在实际工作中,为保证安全,一般会将3306改为其他端口号。

启动数据库 的常用方式

net start mysql服务名
net stop mysql服务名

安装图形化MySQL管理软件

Navicat

SQLyog

数据库的三层结构

1、所谓的安装mysql数据库,就是在主机安装一个“数据库管理系统(DBMS)”,这个管理程序可以管理多个数据库。

DBMS(Database manage system)

2、一个数据库可以创建多个表,以保存数据(信息)

3、数据库管理系统,数据库 和 表的关系。如上图所示

4、mysql数据库 – 普通表的本质仍然是文件。表的一行(row)称之为一条记录,在 Java 程序中,一行记录往往使用“对象”来表示。

SQL语句的分类

DDL:数据定义语句【create 表,库…】

DML:数据操作语句【增加 insert,修改 update,删除 delete】

DQL:数据查询语句【select】

DCL:数据控制语句【管理数据库:例如用户权限(grant,revoke)】

对数据库的增、删、查

创建数据库

create datebase [if not exists] 数据库名 [default] character set 字符集名 [default] collate 校对规则名;

显示数据库语句

show databases;

显示数据库创建(定义信息)语句

show create database 数据库名;

删除数据库

drop database [if exists] 数据库名;

备份恢复数据库

备份数据库(在DOS命令行)

mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql

恢复数据库(进入mysql命令行,然后执行)

source 文件名.sql
例如:source d:\bak.sql ;
直接将 bak.sql 的内容放到查询编辑器中,执行。

备份恢复数据库的“表”

备份库的表

mysqldump -u 用户名 -p密码 数据库1 表1 表2 表n > d:\文件名.sql

创建表

field: 指定列名

datatype: 指定列类型(字段类型)
character set: 如果不指定,则为所在数据库的字符集
collate: 如果不指定,则为所在数据库的校对规则
engine: 存储引擎

mysql表类型 和 存储引擎
基本介绍
  • 1、mysql的表类型由存储引擎(storage engines)决定,主要包括:MyISAM、innodb、Memory 等。
    2、MySQL数据表主要支持 6种类型,分别是:CSV、Memory、ARCHIVE、MGR MYISAM、MYISAM、InnoDB。
    3、这六种又分为2类:一类是“事务安全型”(transaction-safe),比如:innodb ;
    其余都属于第二类,称为“非事务安全”型(non-transaction-safe)【myisam 和 memory】
主要的 存储引擎/表 类型特点
细节说明
  • 1、MyISAM不支持事务,也不支持外键,但是其访问速度快,对事物的完整性没有要求。
    2、InnoDB存储引擎提供了具有 提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间,以保留数据和索引。
    3、Memory存储引擎使用“存在内存中的内容”来创建表。每个Memory 表只实际对应一个磁盘文件。Memory类型访问非常得快,因为它的数据是存储在内存中的,并且还使用Hash索引。但是一旦 MySQL服务关闭,表中的数据就会丢失掉,但是“表的结构”还在。
如何使用MyISAM、InnoDB、Memory三种存储引擎 ?
  • – 查看所有的存储引擎
    SHOW ENGINES;

  • – innodb存储引擎是前面使用过的。
    /* 1、支持事务;2、支持外键;3、支持行级锁 */

如何选择表的存储引擎
  • 1、如果你的应用不需要事务,处理的只是基本的CRUD操作,那么MylSAM
    是不二选择,速度快
    2、如果需要支持事务,选择lnnoDB。
    3.、Memory存储引擎就是将数据存储在内存中,由于没有磁盘I./O的等待,
    速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。(经典用法:用户的在线状态)
修改存储引擎
  • ALTER TABLE 表名 ENGINE = 存储引擎 ;

约束

primary key(主键)
用于唯一的标示表行的数据,当定义主键约束后,该列不能重复
【细节说明】:

1、primary key 不能重复,而且不能为null。
2、一张表最多只能有一个主键,但可以是复合主键。
3、主键的指定方式有两种
(1)在创建表时,直接在字段名后指定:字段名 字段类型 primary key
(2)在表定义的最后一行填写,此时还在()内部:primary key(列名),
4、使用 desc 表名 可以看到 primary key 的情况。
5、在实际开发中,每个表往往都会设计一个主键。

【举例】

CREATE TABLE t17(
id INT PRIMARY KEY, – 表示 id 列是主键
name VARCHAR(32),
email VARCHAR(32)
);

复合主键
  • 一张表最多 只能有一个主键,但是可以是复合主键(那也只能有1个)。
    CREATE TABLE t18(
    id INT PRIMARY KEY,
    name VARCHAR(32) PRIMARY KEY,-- 错误
    email VARCHAR(32)
    );

  • /* 演示复合主键的使用(id和name做成复合主键) */
    CREATE TABLE t18(
    id INT,
    name VARCHAR(32),
    email VARCHAR(32),
    PRIMARY KEY (id,name) – 这里就是复合主键,以后添加数据时,只有id和name同时发生重复时,才会报错。
    );

not null(非空)
如果在列上定义了not null,那么插入数据时,必须为列提供数据。

字段名 字段类型 not null

自增长
基本介绍
  • 在某张表中,存在一个id列(整数),我们希望在添加记录的时候,该列从 1 开始,自动增长。
使用细节
  • 1、一般来说,自增长和 primary key 配合使用。
    2、自增长也可以单独使用(但是需要配合一个 unique)
    3、自增长修饰的字段为整数型的。(虽然小数也可以但是很少这样使用)
    4、自增长默认从1开始,也可以通过下列命令来修改
    alter table 表名 auto_increment = 新的开始值 ;
    5、如果添加数据时,给自增长字段(列)指定的有值,则以指定的值为准。如果指定了自增长,就按照自增长的规则来添加数据。
添加 自增长的的字段方式
  • (1)insert into xxx(字段1,字段2,…) values(null,‘值’,…) ;

– null对应字段1,如果字段1是自增长的,那么添加之后就是1,之后2,3。

  • (2)insert into xxx(字段2,…) values(‘值1’,‘值2’,…) ;

– 直接从字段2开始写,值1对应字段2,…不给字段1赋值,它会自己从1开始增长。

  • (3)insert into xxx values(null, ‘值1’,…)

– 前面直接什么都不写,然后把所有数据的值都写清楚,它会自动的添加。

举例
  • 创建表

  • 测试自增长的使用

    • INSERT INTO t24
      VALUES(NULL, ‘tom@qq.com’,‘tom’);

这里的null给的是id,因为id是自增长的,所以虽然写的是null,但是实际上给的是1。再执行一次,给tom分配的id为2。

  * 执行一次,给hsp分配的id为3
  • 1

INSERT INTO t24
(email,name) VALUES(‘hsp@123.com’,‘hsp’);

  • 修改默认的自增长开始值

unique(唯一)
在定义了唯一约束后,该列的值是不能重复的。

字段名 字段类型 unique

【细节】:

1、如果没有指定 not null,则unique字段可以有多个 null。
2、一张表可以有多个 unique字段。
3、unique not null 使用效果类似 primary key

foreign key(外键)
用于定义 主表 和 从表 之间的关系:

1、外键约束要定义在“从表”上,“主表”则必须要有“主键约束”或者“unique”约束。这样形成的外键约束关系才是唯一的。
2、当定义外键约束后,要求外键列数据必须在主表的主键列存在或是为null。

【举例】学生表(从表,即:外键所在的表) 班级表(主表)
           id, name, class_id                                  id, class_name
  • 1

1、学生表的class_id为300的,在班级表中并不存在,所以就会添加失败,这叫外键约束.
2、如果学生表的jack和班级表已建立联系再删除班级表的id就会失败,得先删除学生表的jack才行,也叫外键约束

【基本语法】

foreign key(本表字段名) references 主表名(主键名或者unique字段名)

【细节说明】

1、外键指向的主表的字段,必须是primary key 或者 unique;
2、表的类型(存储引擎)是“innodb”,这样的表才支持外键
3、外键字段的类型和关联的主键字段的类型要一致,长度可以不一样。
4、外键字段的值,必须在主键字段中出现过,或者为“null”【前提是:外键字段允许为null】
5、一旦建立了 主键、外键的关系,数据就不能随意删除了。
6、删除主表的记录能否成功,要看是否有从表的外键指向它。如果有,则把从表中的相关记录全部删掉,然后再删主表的记录

check
check:用于强制行数据必须满足的条件。
假定在sal列上,定义了check约束,并要求sal列的值在1000~2000之间。如果不在这个范围内就会报错。
【老韩提示】oracle和sql server均支持check,但是MySQL5.7 目前还不支持check,只做语法校验,但不会生效。
		即:语法上支持,但运行不会生效, 如果不满足check的条件,语句也会执行。
  • 1
  • 2
  • 3
【基本语法】:列名 类型 check (check的条件)
【举例】

CREATE TABLE t23(
id INT PRIMARY KEY,
name VARCHAR(32),
sex VARCHAR(6) CHECK (sex IN (‘man’,‘woman’)),
sal DOUBLE CHECK (sal>1000 AND sal<2000)
);

mysql常用的的“数据类型”(列类型)

数值型(整数)的基本使用

使用规范:在满足需求的情况下,尽量选择占用空间小的。
#1. 如果没有指定 unsinged , 则 Ttinyint 就是有符号

#2. 如果指定 unsinged , 则 tinyint 就是无符号 0-255

【举例】

create table t01(id tinyint); # 有符号的
create table t01(id tinyint unsigned); # 无符号的

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号