MySql数据库

119 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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

img

解压即可 -- 配置环境遍历 -- 系统变量 --

新建 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

img

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 字段列表 from1,表2... where 条件;
 
 -- 显示内连接
 select 字段列表 from1 [inner] join2 on 条件;
 
 -- 内连接相当于查询A B表交集数据

外连接

 -- 左外连接
 select 字段列表 from1 left [inner] join2 on 条件;
 
 -- 右外连接
 select 字段列表 from1 right [inner] join2 on 条件;
 
 
 -- 左外连接:相当于查询A表所有数据和交集部分数据
 -- 右外连接:相当于查询B表所有数据和交集部分数据

子查询

 -- 概念:查询中嵌套查询,称嵌套查询为子查询
 -- 子查询根据查询结果不同,作用不同:
 -- 单行单列:作为条件值,使用 = != > < 等进行条件判断
 select 字段列表 fromwhere 字段名 = (子查询);
 -- 多行单列:作为条件值,使用in等关键字进行条件判断
 select 字段列表 fromwhere 字段名 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;