MySQL基础知识

MySQL基础知识

1.数据库简介

1.1 使用数据库的原因

Windows、Linux、MacOS :三个都是基于文件的操作系统。

文件可以保存数据,但难管理(CRUD),Excel可以保存数据,但是不支持关联表查找。数据库系统虽也用文件保存数据,在此之上还提供了一个系统,并且提供了SQL语言便于管理。比如使用了关系模型的数据库系统的关系型数据库系统(RDBMS) Relational Database Management System

1.2 RDBMS关系型数据库系统

关系模型:数据分类存放,数据之间可以有联系

第一个关系型数据库是Oracle数据库,主流的有 DB2, Oracle,MySQL,SQL Server

1.3 NoSQL非关系型数据库

数据分类存放,数据之间没有联系,适用于秒杀库存,登陆信息,消息通知等业务场景,读写快,没有明显的表结构,单线程的,是关系型数据库的一种补充。主流的有redis、MongoDB。

2.Windows系统下MySQL数据库安装

安装版本 8.0.23 MSI ,下载页面 注意到这个版本似乎是 x86 32位的。

2.1安装步骤:

  1. Chooseing a Setup Type:选择 Server only;
  2. Check Requirements:需要安装一个 Visual C++ 2015(联网);
  3. Installation;
  4. Group Replication 默认是单机;
  5. Type and Networking:首次安装无需修改,若之前安装过则修改一下端口号,如5001;
  6. Authentication Method:选择 Use Legacy Authentication Method (Retain MySQL5.x Compatibility)
  7. Accounts and Roles:设置初始 root密码;
  8. Windows Serivce:默认,注意确保勾选 Start the MySQL Server at System Startup,会省很多麻烦;
  9. 最后安装完成。

2.2 添加环境变量

将MySQLbin目录添加到环境变量

2.3 cmd命令行登陆

电脑重启后,MySQL服务器应该就会随系统启动而运行

Win10 在管理员权限下打开PowerShell,切换到mysql安装bin目录下:

mysqld --install
# Serivce successfully installed
net start mysql
# 请求的服务已经启动
# 请键入NET HELPMSG 2182以获得更多的帮助

# 初始化mysql数据库,记住输出的最后一行的密码
mysqld --initialize --user=root --console
# A temporary password is generated for root@localhost:oOawMFhRr6*g

# 用上述的密码成功登陆,并手动修改root密码
mysql -u root -p
# Enter password:xxxxxxxxxxxx
mysql> set password="sbt123";

2.4 MySQL8.0配置文件

MySQL的软件安装路径与数据存放路径不在一处。由于是默认安装,估计位置都一样。以笔者操作为例,MySQL软件安装目录在 C:\Program Files\MySQL\MySQL Server 8.0\bin。而数据存放路径是位于C:\ProgramData\MySQL\MySQL Server 8.0,其中 ProgramData目录是隐藏目录,因此需要设置文档管理器中的 隐藏文件可见 。其中Data存放这数据库文件,而my.ini就是配置文件。

2.5 使用 Navicat premium 数据库图形化管理软件

学习交流版下载地址:链接: https://pan.baidu.com/s/1E2onRsbbD2IoD55UFqII1A 提取码: u8ku

使用方法:确保MySQL正在运行,且可以在cmd中连接。连接→MySQL连接→正确填写端口,账号,密码。

3.SQL语言

SQL是访问和处理数据的标准的计算机语言

分类

  • DML:增删改查
  • DCL:用户,权限,事务
  • DDL:逻辑库,数据表,视图,索引

3.1 数据类型

3.1.1 数字

FLOAT 和 DOUBLE 可以保存精确度要求不高的数据,但是对于高精度的数据保存要用DECIMAL,因为十进制浮点数转成二进制浮点数会丢数据,而DECIMAL用保存字符串的方式来保存数据

3.1.2 字符串

VARCHAR(10),更长的字符串使用NoSQL来保存。
在 MySQL5.0以后,varchar(50), 指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个。参考 mysql varchar(50)到底能存多少个汉字

3.1.3 日期类型

4. MySQL常用命令

WAMP单独调用MySQL 参考 。命令严格上要大写,便于与变量区分。下面的代码都是在MySQL的默认客户端中运行的,也可以在Navicat上运行

4.1 创建-查看-删除

# 查看
SHOW DATABASES;                                     
USE sys;
SHOW TABLES;
DESC host_summary;
SHOW CREATE TABLE SUMMARY # 表名不要加 引号
# 创建逻辑库
CREATE DATABASE test;
# 删除逻辑库
DROP DATABSE test
# 创建表
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 删除表
DROP TABLE table_name;

4.2 更改表结构

# 1.添加字段(列)
ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home_tel CHAR(11) NOT NULL,
# 2.修改已有的字段
MODIFY home_tel CHAR(12) NOT NULL,
# 3.修改字段名称
CHANGE address home_address VARCHAR(200) NOT NULL;
# 4.删除字段
DROP home_address,
DROP home_tel;

4.3 编辑-更新

# 插入
INSERT INTO runoob_tbl
(runoob_title,runoob_author,submission_date)
VALUES
("学习JAVA","张三",NOW())
# 更新/修改
UPDATE runoob_tbl SET runoob_title = '学习Python' WHERE runoob_id=2;
# 删除
DELETE FROM runoob_tbl WHERE runoob_id=2;   

5.理论知识

5.1 数据库几大范式

  • NO.1 原子性:每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性

  • NO.2 唯一性:表中每条记录都是唯一的,为了区分,通常要为表加一个列用来存储唯一标识,该列被称作主键列

  • NO.3 关联性:每列都与主键有直接关系,不存在间接传递依赖。复杂的表可以拆分保存到不同的数据表,彼此保持关联(外键)

5.2 字段约束

外键约束:保证关联数据的逻辑关系,定义写在子表上,不推荐,因为存在外键约束的闭环问题,导致无法删除任何一张表的记录。

5.3 索引

索引:数据排序,方便查询

INDEX [index_name] (字段)
CREATE TABLE t_message(
	id INT UNSIGNED PRIMARY KEY,
	content VARCHAR(200) NOT NULL,
	type ENUM("公告","个人通知","通报") NOT NULL,
	create_time TIMESTAMP NOT NULL,
	INDEX idx_type(type)
);
## 展示表中的索引
SHOW INDEX FROM t_message;
## 已存在的表添加索引
CREATE INDEX idx_content ON t_message(content);
# ALTER TABLE t_message ADD INDEX idx_content(content);
## 删除索引
DROP INDEX idx_content ON t_message;

主键默认具有索引功能

索引使用原则

  • 数据量很大,经常被查询的数据表可以设置索引
  • 索引只添加在经常被用作检索条件的字段上面
  • 不在长字段上创建索引
posted @ 2021-02-22 22:13  又一个蛇佬腔  阅读(265)  评论(0编辑  收藏  举报