DB:数据库(Database)
即存储数据的“仓库”,其本质是一个文件系统。它保存了一系列有组织的数据。比如mysql的data目录、或者说是.doc文件
DBMS:数据库管理系统(Database Management System)
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。比如mysql本身,或者说类似wps软件
SQL:结构化查询语言(Structured Query Language)
专门用来与数据库通信的语言。
关系型数据库(RDBMS)
是把复杂的数据结构归结为简单的二元关系 (即二维表格形式)。以 行(row) 和 列(column) 的形式存储数据,以便于用户理解。这一系列的行和列被称为 表(table) ,一组表组成了一个库(database);表与表之间的数据记录有关系(relationship)。关系型数据库,就是建立在 关系模型 基础上的数据库。
优点:
- 复杂查询 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
- 事务支持 使得对于安全性能很高的数据访问要求得以实现。
非关系型数据库(非RDBMS)
可看成传统关系型数据库的功能 阉割版本 ,基于键值对存储数据,不需要经过SQL层的解析, 性能非常高 。
NoSQL 泛指非关系型数据库,包括了榜单上的键值型数据库、文档型数据库、搜索引擎和列存储等,除此以外还包括图形数据库。
表之间四种关系:一对一关联、一对多关联、多对多关联、自我引用
一对一
原则:一张表拆成两张表,比如学生表拆分为 基础信息表 与 档案信息表
- 主表的主键和从表的外键(唯一),形成主外键关系,外键唯一。
- 主表的主键和从表的主键,形成主外键关系。
一对多
客户表和订单表 , 分类表和商品表 , 部门表和员工表 。
原则:在从表(多方)创建一个字段,该字段作为外键指向主表(一方)的主
多对多
原则:需要创建第三张表,该表通常称为 联接表 (或说 中间表),它将多对多关系划分为两个一对多关系,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键(理解为将这两个表的主键都插入到第三个表中)。
学生信息表 与 选课信息表
产品表 与 订单表
用户 与 角色
自我引用
-
show databases;
- “information_schema” 系统自带,主要保存 MySQL 数据库服务器的系统信息,比如数据库的名称、数据表的名称、字段名称、存取权限、数据文件 所在的文件夹和系统使用的文件夹,等等
- “performance_schema” 系统自带,可以用来监控 MySQL 的各类性能指标。
- “sys” 系统自带,主要作用是以一种更容易被理解的方式展示 MySQL 数据库服务器的各类性能指标,帮助系统管理员和开发人员监控 MySQL 的技术性能。
- “mysql”数据库保存了 MySQL 数据库服务器运行时需要的系统信息,比如数据文件夹、当前使用的字符集、约束检查信息,等等
创建数据库:create database 数据库名
使用数据库:use 数据库名;
查看数据库中的表:show tables; #要求前面有use语句
创建表:
create table student(
id int,
name varchar(20) #说名字最长不超过20个字符
);
查看表数据:select * from 数据库表名称;
插入数据到表中:insert into student values(1,'张三'); # 如果插入的中文变为乱码,则说明 表或数据库 可能是 拉丁latin1 而不是 utf8
查看student表的详细创建信息:show create table student;
查看数据库的详细创建信息:show create database 数据库名;
删除表:drop table 表名称
删除数据库:drop database 数据库名;
mysql5.7 或以下中文乱码解决:
1、查看编码命令
show variables like 'character_%';
show variables like 'collation_%'
2、用notepad++(防止 含BOM头 导致改后无法重启)修改mysql的数据目录下的my.ini配置文件[mysql] #大概在63行左右,在其下添加
...
default-character-set=utf8 #默认字符集
[mysqld] # 大概在76行左右,在其下添加
...
character-set-server=utf8
collation-server=utf8_general_ci
重启服务并按第一步命令查看;
修改已有 表/数据库 的拉丁编码:alter table student charset utf8; alter database 数据库名 chatset utf8;
mysql8之后的字符集为 utf8mb4,字符排序为 utf8mb4_0900_ai_ci
mysql8前,默认字符集为latin1,utf8字符集指向的是utf8mb3,从MySQL 8.0 开始,数据库的默认编码改为 utf8mb4 |