MySQL基础 #MySQL概述 #MySQL安装 #图形化界面 #命令行与crud基础 #思维导图 #第一部分

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44925501/article/details/102598162

零、思维导图(关于公式的总结)

→高清大图点击这里
在这里插入图片描述

一、数据库简介

文件夹可以保存数据,但数据量庞大时,读写不易,不易扩展。有这样一种程序,可以帮助我们很快的取出某个文件群里的某些文件,并进行增删改查。这个程序就是数据库客户端,它访问服务器,然后获取其后的文件,也就是数据库。

1)数据库优点

  1. 持久化存储
  2. 读写速度极高
  3. 保证数据的有效性
  4. 对程序支持性比较好,容易扩展

2)数据库内涵

一种特殊的文件。存储在硬盘上,不因关机而造成数据丢失。有自己的写法和读法。

下面我们用一个工作簿来模拟MySQL

  1. 这里新建了一个活动表,命名为hero,用来存放英雄信息。每一行叫一条记录,每一列叫一个字段。也可以说,行就是记录,列就是字段。
  2. 由于在存放时,可能会输入重复,因此name和job都不能代替某一行数值,但是id是唯一的。所以id这个字段被称为主键。
  3. 可以看到,坦克的克被我打错了。现在还好说,只有两条数据,如果数据一多……
  4. 为此我们可以新建一个job工作表,再让原工作表中的内容与其对应。这样,只要修改job工作表中的一个数据,就可以实现批量修改。
  • 这种多个数据表有关联的,就叫关系型数据库。MySQL是关系型数据库中的代表。
  • 一堆字段和记录,组成一张数据表。多个数据表,组成一个数据库。EXcel中每一个表都可以类比为数据表,一个Excel就相当于一个数据库。

RDBMS

直接访问数据库,会得到一堆看不懂的代码。为了知道如果改动读取里面的数据,要用到RDBMS。

SQL
RDBMS-client
RDBMS-server
数据库1
数据库2
数据库3

RDBMS(关系型数据库管理系统)是一种程序。基于C/S架构。

  • B/S架构,即浏览器服务器架构.通过http来传输数据。
  • C/S架构,即客户端服务器架构,通过SQL语句传输数据。
  • SQL,即结构化查询语言。是一种用来操作RDBMS的数据库语言。
  • 我们不需要学习如何开发客户端,数据库。我们只要学习SQL语句即可。
  • SQL语句不止可以在MySQL上用。
  • 数据的增删改查,是重点。
  • SQL不区分大小写。

二、MySQL安装

MySQL官方下载

  1. 选择自己需要的版本下载。
  2. 下载完之后安装。
  3. 基本都是默认下一项,可以选个安装位置。
  4. 安装完成之后

1)安装数据库

cmd中

  1. create database 数据库名;
    (新建一个数据库)

安装过程中可能的错误

mysql ERROR 1045 (28000):错误解决办法

  1. 找到配置文件my.ini ,然后将其打开,可以选择用记事本打开
  2. 然后balabala添加一些东西?不不不,这个方法失效了。
    关掉那个my.ini吧,我们不需要它
  3. 打开一个cmd输入(启动服务器):

mysqld --console --skip-grant-tables --shared-memory

  1. 打开另一个cmd输入:

mysql -u用户名 -p密码

(mysql.connector.errors.ProgrammingError) 1064 (42000)错误解决办法

使用反引号(tab键上方的那个键)将表名扩起来,表头也要哦

2)使用图形化工具

下载navicat(腾讯应用商店里有)

  1. 安装。
  2. 点击试用。
  3. 点连接,输入用户名和密码(MySQL的)
    下载完之后,一般会面临两个问题

连接数据库登陆失败

新版本MySQL连接不了,原因是身份验证插件更新了,需要在cmd中(左侧的诸如cmd是标示位置的,不要复制)

  1. C:\user>mysql -u用户名 -p密码
  2. mysql>use mysql;
    (上面打开名为mysql的数据库)
  3. mysql>select user,host,plugin,authentication_string from user;
    (上面查询身份验证插件)
  4. mysql>alter user ‘用户名’@’%’ identified with mysql_native_password by ‘密码’;
    (上面改回老版身份验证插件)
  5. mysql>select user,host,plugin,authentication_string from user;
    (再次查询,发现已经修改成功)

只能试用两周

任何有试用期的东西,都一定在本地有一个记录开始时间的文件。只要删了它,就可以无限试用了。

  1. Win+R输入regedit
  2. 到HKEY_CURRENT_USER\Software\PremiumSof 删除Data。
  3. 然后到HKEY_CURRENT_USER\Software\ Classes\CLSID目录下。可以看到有许多子目录。点开这些子目录,如果某个子目录下,只含有一个info文件夹,就将这个子目录删除,直到删完所有这样的子目录。
  4. 然后,恩。试用时间就重置了。

接下来

接下来双击链接的那个数据库,直到其变绿。如果它不变绿,说明mysql是关闭状态。

Win+R输入services.msc找到mysql,启动即可

三、图形界面工具

  1. 打开Navicat,右键,新建一个数据库。
  2. 点击数据库,右键,新建一个数据表。
  3. 然后中间的区域设置字段

    (区域下方是其附加属性)
    (插入字段是往前面插,添加字段是往后面加)
  4. 滑到最右边,点击那个空白的格子,会出现一个钥匙。那个这个字段就成为主键。
  5. 点击保存。输入表名。
  6. 在左侧导航栏双击该表。
    在这里插入图片描述
  7. 左下角:

+表示添加一行。
√表示保存(写完数据之后都要点这个,才能真正地保存下来)

  1. 我们会发现id列不用填,因为之前勾选了自动增长。(如果删除了一行,新行的ID,会从这行的下一个开始哦)
  2. 右键,点设计表,就可以进入字段设置的界面(就是之前的那个界面)。
    数据库有一个特点,就是插入的数据不符合要求,会保存不了,并且返回插入前的数据

要做一个数据表时,考虑两方面,一、每一个字段的类型是什么。二、其它的约束是什么。比如:主键列的类型是int,约束是不能重复,不能为零之类的.无符号范围的意思是,不带负号。

四、由图像操作向SQL语句

1)数据类型与条件

常用的数据类型如下

整数:int,bit
小数:decimal
字符串:varchar,char,text
日期时间:date,time,datetime
枚举类型(enum)–>python里没有枚举类型。

  • 特别说明
  • decimal(7,3)表示共存7位数,小数占3位。
  • char(3)固定长度为3,如果不足三位,在后面用空格补齐。
  • varchar(3)可变长度为3,不足不会补齐。
  • text表示存储大文本,当字符大于4000时推荐使用
  • 对于二进制文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径。
  • 更多数据类型:点击这里

约束

  • 主键primary key:物理上存储的顺序
  • 非空not null:此字段不允许填写空值
  • 唯一unique:此字段的值不允许重复
  • 默认default:当不填写此值时会使用默认值,填写时一填写为准
  • 外键foreign key:另一个关联表的主键
    (说明:外键约束可以保证数据有效性,但是在进行数据的curd(增删改查)时,都会降低数据库的性能,不推荐使用。可以在逻辑层进行控制以保证数据的有效性。)

五、命令行脚本(重点)

下面操作都在cmd中: 最前面有思维导图,不必担心记忆问题。

如果报错,可以试试在表名、数据库名两侧加反引号,特别是这些名字中有特殊字符的时候。

1)基本操作

  1. 命令行连接

mysql -u用户名 -p密码

  1. 退出exit或quit,Ctrl+D
  2. **注意sql语句要由 ; 结尾
  3. 显示当前有多少数据库

show databases;

红圈:查出信息的标题
蓝圈:查出的数据

注意: 语句敲enter换行不影响。记得保证语句完整即可。大小写不影响。

  1. 显示时间

select now();

  1. 显示版本

select version();

  1. 注释

-- 注释不会被运行,记得在注释内容间加空格
注意: 可以用上下键翻着选择哦

2)数据库中操作

  1. 创建数据库

create database 数据库名;

  1. 查看创建数据库的sql语句(python中的写法)

show create database 数据库名;
创建一个数据库时,如果不指定编码,那么默认是拉丁文

  1. 指定编码方式的创建数据库

create database 数据库名 charset=utf8;

查看创建数据库的sql语句,后面直接用数据库名即可,不能带charset=utf8之类的

  1. 删除数据库

drop database 数据库名;

  1. 使用某个数据库(如果要用到这个数据库的,后续操作都基于此)

ues 数据库名;

看到database changed就成功了
即使转到了这个数据库,也可以用use直接跳到别的数据库
6. 查看当前使用的数据库

select database();

3)数据表中基本操作

  1. 查看当前数据库中所有的表

show tables;

  1. 创建一个数据表

create table 数据表名(字段1 类型1 约束1,字段2 类型2 约束2);
例如: create table hero(id int,name varchar(4));

  1. 查看表的结构(字段,约束之类的)

desc 数据表名;

Type表示类型,其它几个都为约束。分别为:是否为空?是否为主键?有默认值吗?有额外的吗?

  1. 创建一个数据表(携带更多条件)

create table 数据表名(id int unsigned primary key not null auto_increment,name varchar(5));

给id的条件依次是 数字(这里设置为无符号,是约束的属性,必须得紧跟这个约束的后面),主键,非空,自动增长填充。顺序可以调换哦。

太长了可以换行,最后一个千万不能加逗号

  1. 创建一个数据表(多行多条件)

create table 数据表名(
id int unsigned not null auto_increment primary key,
name varchar(5),
age TinyInt unsigned default 0,
height decimal(5,2),
cls_id int unsigned
);
关于默认的语法注意一下即可

  1. 往数据表中插入数据

insert into 数据表名 values(0,“老张”,18,188.88,0);

  1. 查看表中数据

select * from 数据表名;

4)数据表中操作进阶(修改表结构alter table)

  1. 添加字段

alter table 数据表名 add 字段名 字段类型约束;

  1. 修改某字段类型约束(不修改字段名)

alter table 数据表名 modify 该字段名 类型约束;

  1. 修改字段名及类型约束

alter table 数据表名 change 原字段名 新字段名 类型及约束;

  1. 删除字段

alter table 数据表名 drop 字段名;
在这里插入图片描述

  1. 从删库到跑路

--删库
drop database 数据库名;
在这里插入图片描述
--删表
drop table 数据表名;
在这里插入图片描述
6.查看表的创建语句(python中就用这个哦,中间红圈)
show create table 数据表名;
在这里插入图片描述

注意:

ENGINE=InnoDB表示引擎是innoDB,它支持事务处理、外键和行级锁(一个用户操作行时,另一个用户不能操作这行)。还有一个常见的引擎是MylSAM,它性能更好。
AUTO_INCREMENT=2,自动增长的默认值,表示添加下一行数据,主键为2。
DEFAULT CHARSET=utf8mb4,默认编码是utf8mb4。这个是从数据库继承来的。utf8mb4是支持中文和emoji的(MySQL中的utf8是阉割版,只能显示3字节。而utf8mb4其实是完全版的utf8。)。

5)增删改查(CURD)(!最常用!)

create创建
update更新
Retrieve读取
delete删除

增加

1.单行全列插入(插入的记录的值,必须与字段个数相等)

insert into 数据表名 values(记录);
--主键列除了填0,还可以填null,default。都可以让其自动填列。
--若某键是枚举类型,可以直接用数字进行插入等修改(从1开始)。

2.部分插入

insert into 数据表名 (字段i,字段j…) values (对应的记录);
--没写的会显示默认值。不许为空的列必须插入。

3.多行插入

insert into 数据表名(字段i,字段j…) values (对应的记录1),
  (对应的记录2), (对应的记录3)…;
在这里插入图片描述

修改

1.修改某字段在全部位置的值为

update 数据表名 set 字段名=字段值;

2.修改某字段在某个位置的值为

--找到字段名1=值名1的那一条数据,并修改字段2的值为
--那个字段名1,最好为主键,这样可以起到唯一修改的效果
update 数据表名 set 字段名2=字段值2 where 字段名1=值名1;

!  !  ! 我们称where 字段名1=值名1叫定位条件。不只是=哦,定位条件也可以用>或<等来,用的是布尔值。

3.修改某些字段在某个位置的值为

--定位条件只能一个,老师我试过了。
update 数据表名 set 字段名1=字段值1,字段名1=字段值2 定位条件;

查询

1.查询整个表

select * from 数据表名;

2.查询某条数据

select *from 数据表名 定位条件;
在这里插入图片描述

3.查询某条数据的某些字段(普通)

select 字段1,字段2 from 数据表名 定位条件;
在这里插入图片描述
从这里可以看出 * 表示全部的字段

4.查询某条数据的某些字段(给字段取别名,增加可读性)

select 字段1 as 别名1,字段2 as 别名2 from 数据表名 定位条件;
在这里插入图片描述
先写的字段,会显示在前面

物理删除(忘了它吧,不要学)

1.删除数据表

delete from 数据表名;
在这里插入图片描述

2.删除数据表中某条记录

delete from 数据表名 定位条件;
在这里插入图片描述

逻辑删除

--添加一个字段,根据字段里面的值来判断,有没有删除。
alter table 数据表名 add is_delete bit default 0;
在这里插入图片描述
为什么is_delete字段没东西?因为起码要一个字节我们才看得到,而这里只有一个bit。但是该怎么用还怎么用,定位条件为is_delete=0
update 数据表名 set is_delete=1 定位条件;

猜你喜欢

转载自blog.csdn.net/weixin_44925501/article/details/102598162
今日推荐