本文已参与「新人创作礼」活动,一起开启掘金创作之路。
2.1 Mysql
2.1.1 数据库
DB
2.1.2 数据库管理系统
管理数据库的大型软件(MYSQL就是DBMS)
2.1.3 SQL
操作数据库的编程语言(操作市面上所有的关系型数据库)
-
关系型数据库
-
Mysql
-
Oracle
-
SQLite
-
SQL Server
-
-
非关系型数据库
- MangoDb
2.1.4 Mysql安装
MySQL :: Download MySQL Community Server (Archived Versions) Mysql5.7.24

解压即可 -- 配置环境遍历 -- 系统变量 --
新建 MYSQL_HOME = D:...
Path -- %MYSQL_HOME%\bin
在安装目录创建一个 my.ini
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,EEROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2.1.5 初始化Mysql
cmd中管理员窗口
mysqld --initialize-insecure
c/windows/system32/cmd.exe

2.1.6 注册Mysql的服务
cmd
mysqld -install
2.1.7 启动Mysql服务
net start mysql // 启动服务
net stop mysql // 停止服务
2.1.8 查看本机服务(windows)
services.msc
2.1.9 修改默认账户密码
mysqladmin -uroot password 1234
2.1.10 登录参数
mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口(默认3306)
mysql -ulaity -pLaity123? -h39.106.227.23 -P3306
2.1.11 cmd导入数据
首先创建数据库
create database mynewblog
把上传上去的sql导入到数据库中
传:将sql文件上传到root下
按照下面的三个步骤,快速导入这个sql文件
mysql>use mynewblog;
mysql>set names utf8;
mysql>source /root/database.sql;
然后屏幕上就会不断的滚,最后提示导入成功。
最后,记得将database.sql删除
确定数据表是否创建成功,即数据文件是否导入成功。
执行命令 show tables;查看数据库下的表。
删除数据库
drop database <数据库名>;
如果遇到 Unknown collation: 'utf8mb4_0900_ai_ci'
• 把文件中的所有的utf8mb4_0900_ai_ci替换为utf8_general_ci
• 以及utf8mb4替换为utf8
否则会报 COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'utf8mb4'
-- 向表中插入数据
CREATE TABLE 表名 {
id ...
username ...
password ...
};
INSERT INTO 表名(id,username,password) value(1,"Laity", 123456);
2.1.12 约束
概念:
- 约束是作用于表中列上的规则,用于限制加入表的数据。
- 约束的存在保证了数据库中数据的正确性、有效性和完整性。
约束的分类:
| 约束名称 | 描述 | 关键字 |
|---|---|---|
| 非空约束 | 保证列中所有数据不能有null值 | NOT NULL |
| 唯一约束 | 保证列中所有数据各个不同 | UNIQUE |
| 主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | PRIMARY KEY |
| 检查约束 | 保证列中的值满足某一条件 | CHECK |
| 默认约束 | 保存数据时,未指定值则采用默认值 | DEFAULT |
| 外键约束 | 外键用来让两个表的数据之间建立连接,保证数据的唯一性和完整性 | FOREIGN KEY |
MYSQL不支持检查约束
auto_increment :当列时数字类型并且 唯一约束
2.1.13 详解外键约束
概念: 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性
-- 创建表时添加外键约束
create table 表名 {
列名 数据类型
...
[constraint] [外键名称] foreign key(外键名) references 主表(主表列名)
};
-- 建完表后添加外键约束
alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表名称(主表列名称);
-- 删除外键
alter table 表名 drop foreign key 外键名称
2.1.14 数据库设计
- 一对多
- 一对一
- 多对多
2.1.15 多表查询
- 笛卡尔积:取A,B集合所有组合情况
- 多表查询:从多张表查询数据
- 连接查询
- 内连接:相当于查询A B交集数据
- 外连接:
- 左外连接:相当于查询A表所有数据和交集部分数据
- 右外连接:相当于查询B表所有数据和交集部分数据
- 子查询
- 连接查询
连接查询
内连接
-- 隐示内连接
select 字段列表 from 表1,表2... where 条件;
-- 显示内连接
select 字段列表 from 表1 [inner] join 表2 on 条件;
-- 内连接相当于查询A B表交集数据
外连接
-- 左外连接
select 字段列表 from 表1 left [inner] join 表2 on 条件;
-- 右外连接
select 字段列表 from 表1 right [inner] join 表2 on 条件;
-- 左外连接:相当于查询A表所有数据和交集部分数据
-- 右外连接:相当于查询B表所有数据和交集部分数据
子查询
-- 概念:查询中嵌套查询,称嵌套查询为子查询
-- 子查询根据查询结果不同,作用不同:
-- 单行单列:作为条件值,使用 = != > < 等进行条件判断
select 字段列表 from 表 where 字段名 = (子查询);
-- 多行单列:作为条件值,使用in等关键字进行条件判断
select 字段列表 from 表 where 字段名 in (子查询);
-- 多行多列:作为虚拟表
select 字段列表 from (子查询) where 条件;
2.1.16 事务
-- 事务: 广泛应用于银行系统和订单系统等 表的引擎类型必须是 innodb类型才可以使用事务,这也是MySQL默认引擎
所谓事务,它是一个操作系统,要么都执行,要么都不执行,是不可分割的单位。
事务四大特征:(ACID)
1.原子性(A) :整个事务中的所有操作要么成功要么不成功
2.一致性(C) :最终执行的结果是一样的 中间出了问题也不会出现数据丢了的情况
3.隔离性(I) :当事务开启之后:一个事务所做的修改在最终提交前,对其它事务是不可见的(一个sql的执行不会影响到另外一个sql)
4.持久性(D) :一旦事务提交 commit,则其所做的修改会永久保存到数据库 (此时即使数据库系统崩溃,修改的数据也不会丢失)
-- 事务开启 :begin; / start transaction; 中间:sql语句 事务提交 ,结束: commit; 回滚事务:放弃缓存中变更的数据: rollback;