MySQL 数据库(一)—— MySQL 介绍、安装、基本操作指令、数据类型、约束条件、范式等

一、数据库概述

1、数据库介绍
(1)数据库模型

  • 层次模型
    所有的数据是有一个层次结构的,数据与数据之间是通过父子的层次关系进行链接的。
  • 网状模型
    比层次模型更为复杂,而且每一个数据之间会存在多个关系。
  • 关系对象模型
  • 关系模型数据库
    将世界看成实体与实体之间的联系,以二维表的形式存储数据,只要是使用的关系型数据库,那么一定遵循的是关系模型。

(2)分类
常见关系型数据库

  • MySQL
  • oracle
  • access
  • sqlite
  • DB2
  • sql server

按大小分类

  • 小型:access,sqlite
  • 中型:MySQL,sql server
  • 大型:oracle,DB2

2、MySQL 基本命令提示符

  • mysqld -install:安装免安装版数据库(从bin目录下以管理员方式运行cmd进入命令行);
  • net start mysql:开启数据库的服务,另外关闭服务命令是net stop mysql;
  • mysql -h主机地址 -P端口号 -u用户名 -p用户密码,如:mysql -h127.0.0.1 -P3306 -uroot - padmin 使用客户端进入MySQL连接(-h远程管理),端口号默认3306。如果是连接本机,且默认端口时,可以直接使用mysql -u root-p 登录到MySQL数据库;
  • mysqladmin -uroot -p12345 passworld "admin":修改root用户的密码从12345为admin;
  • use mysql:切换到MySQL核心数据库;
  • select Host,User,Password from user:查询MySQL数据库中的user表的三列数据;
  • exit:退出操作。

3、MySQL与SQL
(1)MySQL: DataBase Manager System
MySQL是关系型数据库管理系统(DBMS),一共分为四层:

  • 第一层:数据库管理系统
  • 第二层:库结构
  • 第三层:表结构(二维表)
  • 第四层:字段结构

(2)SQL
SQL是结构化查询(编程)语言,是制定数据库语言的标准,一共分为五类

  • DQL:数据查询语言 Data Query Language
    包括简单查询、条件查询、子查询、连接查询、联合查询。
    关键字:
select
from
where
group by
having
order by
distinct
limit
jion on
  • DDL:数据定义语言 Data Definition Language
    用于创建库、删除库、设置编码和校验,创建表、删除表、修改表、显示表、显示库。
  • DML:数据操作语言 Data Manipulation Language
    包括新增数据,修改数据,删除数据。
    关键字:
insert into
update
delete
  • DCL:数据控制语言 Data Control Language
    用于权限的控制。
    关键字:
grant
revoke
  • TPL:数据事务管理语言 Transaction Processing Language
    用于事务的操作。
    关键字:
transaction
commit
rollback
savepoint

二、数据库的数据类型

1、整形

tinyint  迷你整形  1个字节  数据范围 -128137
smallint  小整形  2个字节
mediumint  中整形
int  整形
bigint  大整形

2、小数(浮点数)

float  单精度浮点数  7位小数
double  双精度浮点数  15位小数
decimal(M,D)  大浮点数  30位小数,M是总位数,D是小数的位数,D必须小于M,decimal误差最小

3、字符串

扫描二维码关注公众号,回复: 9348657 查看本文章
char  定长字符型(定长255varchar(长度)  可变字符型(边长065535)
tinytext  文本型
text  文本型(无默认值)
binary  0—M变长字符串
varbinary  0—M边长字符串

char和varchar区别:

  • char 定长,只要在255范围以内,不管存多少个数据,都分配255个内存空间,会造成空间浪费;varchar是变长的,在65535以内,系统会根据存入的数据所需内存大小分配,节约空间。
  • char 在存入数据的时候只要在255以内,就直接存储,效率较快;varchar在存储的时候会运行两次,第一次获取长度,第二层才存入数据,效率较慢。

4、二进制

tinyblob  二进制大对象
blob  二进制大对象
mediumblob  二进制大对象
longblob  二进制大对象

5、日期和时间

year  格式YYYY  记录年份
date  格式YYYY-MM-DD  记录当前年月日
time  格式HH-MM-SS  记录当前时间
timestamp  格式YYYY-MM-DD HH:MM:SS  记录日期+时间
datetime  格式YYYY-MM-DD HH:MM:SS  记录日期+时间,按照计算机元年开始,误差小一点

特别的: MySQL中无布尔值,可以使用tinyint(1)构造。

三、数据库的七大约束

1、 检查约束

  • 以数据类型以及数据的长度进行约束,在一个表中, 所插入的数据,必须和数据类型匹配,并且范围不能超过指定的长度。

2、非空约束 not null

  • 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
  • 如果有非空约束,那么在插入插入数据时,必须插入一条数据,非空约束一般用于收集并存储的字段数据。
  • 所有的类型的值都可以是null,包括int、float 等数据类型。

3、默认值约束 default

  • 创建列时可以指定默认值,当插入数据时如果未主动设置数据,则自动添加该默认值。

4、主键约束 primary key

  • 确保每一行唯一,主键约束相当于唯一约束 + 非空约束的组合,是用于唯一识别一个实体的字段,不允许有空值,当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
  • 如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。

5、唯一约束 unique

  • 保证每一行的数据是唯一的,没有重复的数据,保证数据的唯一性。
  • 唯一约束不允许出现重复的值,但是可以为多个null。
  • 同一个表可以有多个唯一约束,多个列组合的约束。
  • 在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
  • 唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。

6、外键约束 foreign key

  • 用于表与表之间的关联,一张表中的外键一般都是另一张表中的主键, 并且加上外键约束之后,插入的数据就必须是该主键存在的值。

7、自增长约束

  • 如果为某列设置自增列,插入数据时无需设置此列,默认将自增(一个表只能有一个自增列)。

8、自定义约束

  • 自定义约束是使用存储过程或者触发器来进行约束。

四、数据库的范式

1、确保每列保持原子性(不可拆分性)

  • 确保一列只存放一个数据,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。
  • 如果实体中的某个属性有多个值时,必须拆分为不同的属性。

2、确保每一行的唯一性

  • 满足第一范式的基础上,确保每一行数据的唯一,能够唯一区分一个实体,实现的方式可以是主键。

3、确保每列都和主键列直接相关,而不是间接相关

  • 第三范式需要确保数据表除外键外,其他非主键属性不得重复出现在第二张表上。

五、表与表之间的关系

1、一对一

  • 从实体看,一张表中的一个实体,唯一对应另一张表中的一个实体。

2、一对多

  • 从实体看,一张表中的一个实体,对应另一张表中的多个实体。如一个课程可以被多个学生选择。

3、 多对多

  • 一张表中的一个实体,对应另一张表中的多个实体,反过来,另一张表中的一个实体对应这张表中的多个实体。如果是多对多的关系,最好生成第三张表作为中间表用于关联。

六、E-R图

1、概念

  • 用于表示实体的属性,以及实体与实体之间的关系图

2、画法
(1)矩形:表示实体,在框中记入实体名。
(2)椭圆:表示实体所具备的属性(字段),将属性名记入框中。对于主属性名,则在其名称下划一下划线。
(3)菱形:表示实体与实体联系,在框中记入联系名.
(4)连线:实体与属性之间、实体与联系之间、联系与属性之间用直线相连,并在直线上标注联系的类型。

  • 对于一对一联系,要在两个实体连线方向各写1;
  • 对于一对多联系,要在一的一方写1,多的一方写N;
  • 对于多对多关系,则要在两个实体连线方向各写N,M。
发布了29 篇原创文章 · 获赞 0 · 访问量 207

猜你喜欢

转载自blog.csdn.net/baidu_27414099/article/details/104432615