背景

Mysql是一个关系型数据库,由瑞典Mysql AB开发,目前属于Oracle旗下的产品。Mysql是目前最流行的关系型数据库管理系统之一,在WEB方面,Mysql是最好的RDBMS(Relational Database Management System)。Mysql是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

其他类似软件:

关系型数据库:sqllite、db2、Oracle、access、sql sever、Mysql

非关系型数据库:MongoDB、redis

安装

在Windows系统上,我们下载完Mysql后安装到任意目录下,可以看到里面有一个bin文件,打开

里面有mysql.exe和mysqld.exe两个执行档,它们分别是客户端和服务端

启用

在取得bin目录路径后,初始化服务端

输入上面语句后我们会发现原目录下会多出一个data的文件夹

然后再启动服务端

之后我们再打开一个新的command,实现客户端连接到服务端

这里默认的用户名是root密码为空,执行时按回车跳过就好

使用show databases;去看data文件下的文件:

也可以创建一个新的db文件:

添加环境变量

如果觉得每次执行时都要加上一长串的路径很麻烦我们可以直接在系统上添加环境变量

获取bin的路径:F:\mysql-8.0.11-winx64\mysql-8.0.11-winx64\bin

然后右键计算机->高级系统设置->高级->环境变量->找到系统变量的Path在后面加上;路径

这样我们在执行服务端和客户端就不用再加上路径了

服务端:

客户端:

制作Windows上的Mysql服务

这样我们就可以在服务的进程上看到了Mysql服务,我们就可以点击左上的启动此服务

或者我们输入下面语句也可以启动服务

如果要停止Mysql服务

移除Mysql服务

创建用户及授权

首先在data文件夹下的文件夹(比如db1)我们可以称为数据库,而db1文件夹下的文件(Excel文件),我们称为表,在这个表中的一行行排列的就是数据行

默认的用户是root,那么这个root被放在哪里呢?

Mysql在一个用户登录的时候会在user中查看里面是否有这个用户的信息

那如何创建新的用户?

语法:

create user 'username'@'IP addres' identified by 'password';             #限制只能在这台机器上登录
create user 'username'@'192.168.43.%' identified by 'password';          #%表示在最后一位数没有要求,只需要考虑前三尾数相同即可
create user 'username'@'%' identified by 'password';                  #表示所有机器都可以登入

授权用户

grant 权限名 on db1.t1 to 'username'@'%';     #只能让该用户访问db1文件夹下的表t1
grant 权限名 on db1.* to 'username'@'%'; #能让该用户访问db1文件夹下的所有表
grant 权限名 on *.* to 'username'@'%'; #表示可以让该用户访问所有数据库的内容

权限名称:

all privileges  除grant外的所有权限
select 仅查权限
select,insert 查和插入权限
usage 无访问权限
alter 使用alter table
alter routine 使用alter procedure和drop procedure
create 使用create table
create routine 使用create procedure
create temporary tables 使用create temporary tables
create user 使用create user、drop user、rename user和revoke all privileges
create view 使用create view
delete 使用delete
drop 使用drop table
execute 使用call和存储过程
file 使用select into outfile 和 load data infile
grant option 使用grant 和 revoke
index 使用index
insert 使用insert
lock tables 使用lock table
process 使用show full processlist
select 使用select
show databases 使用show databases
show view 使用show view
update 使用update
reload 使用flush
shutdown 使用mysqladmin shutdown(关闭MySQL)
super 使用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆
replication client 服务器位置的访问
replication slave 由复制从属使用

使用

创建一个新用户并给他授权

然后我们重新开启一个客户端并登入新用户资料查看他能够看到的数据

其他用户管理语法:

删除用户:drop user 'username'@'IP address';
修改用户:rename user 'username'@'IP address';
修改密码:set password for 'username'@'IP address' = Password('new password')

其他授权语法:

查看权限:show grants for 'username'@'IP address';
取消授权:revoke 权限名 on 'Database'.'Table' from 'username'@'IP address';

查看用户登录资料

操作数据库及数据表

1.操作文件夹

<1>create database 新的数据库名; 创建一个新的数据库

增加编码的要求:create database 新的数据库名 charset utf8; 这样写这个数据库的默认编码是以utf-8

<2>show databases; 显示所有数据库

<3>drop database 数据库名; 删除现有数据库

2.操作文件

<1>show tables; 显示出所有表格

<2>create table 表名(第一列数据名 数据类型,第二列数据名 数据类型...); 创建一个新的表名

①增加编码要求:create table 表名(第一列数据名 数据类型,第二列数据名 数据类型...) default charset=utf8;

②增加引擎要求:create table 表名(第一列数据名 数据类型,第二列数据名 数据类型...) engine= innodb default charset=utf8;

innodb:支持事务,能恢复到之前的状态,原子性操作

myisum

③null、not null、default、auto_increment:

null->就是我的数据可以为空

not null->就是我的数据不可以为空

default->可以为我的数据设置一个默认值

auto_increment->用于自增,一般来说要搭配primary key使用;primary key的作用为约束(不能重复也不能为空)、加速查找,一个表里面只能有一个自增列,并且要有一个主键

3.操作文件中的内容 

<1>insert into 表名(第一列数据名,第二列数据名...) values(值1,值2...); 往表内插入数据

<2>selcet * from 表名; 查看表内所有信息

接上1的步骤结果

再添加一条信息

<3>解决中文数据问题

<4>delete from 表名; 清空这个表的数据

若一个表只有一个自增数,它的id已经增加到3,若使用delete from 去清空这个表,再之后又新增了一笔资料后,它的自增值不重新开始

<5>truncate table 表名; 清空这个表的数据,执行速度快

使用trucate table就不会出现自增值不会不重新计算的情况

<6>drop table 表名; 删除这个表

数据表基本数据类型

按整数去分:

1.int  

int unsighed:无符号整数 范围:0 ~ 4294967295

int sighed:有符号整数 范围:-2147483648 ~ 2147483647

2.tinyint

tinyint unsighed:无符号小整数 范围:0 ~ 255

tinyint sighed:有符号小整数 范围:-128 ~ 127

3.bigint

bigint unsighed:无符号大整数 范围:0 ~ 18446744073709551615

bigint sighed:有符号大整数 范围:-9223372036854775808 ~ 9223372036854775807

按小数去分:

1.FLOAT[(m,d)] 

并不准确的小数 数值越大越不准确,m是数字总个数,d是小数点后个数

FLOAT unsighed:无符号单精度浮点数 范围:

-1.7976931348623157E+308 ~ -2.2250738585072014E-308
0
2.2250738585072014E-308 ~ 1.7976931348623157E+308 FLOAT sighed:有符号单精度浮点数 范围:
0
1.175494351E-38 to 3.402823466E+38

2.DOUBLE[(m,d)]

并不准确的小数 数值越大越不准确,m是数字总个数,d是小数点后个数

DOUBLE unsighed:无符号双精度浮点数 范围:

-1.7976931348623157E+308 to -2.2250738585072014E-308
0
2.2250738585072014E-308 to 1.7976931348623157E+308

DOUBLE sighed:有符号双精度浮点数 范围:

 0
2.2250738585072014E-308 to 1.7976931348623157E+308

3.decimal[(m[,d])]

精准的小数值,m是数字总个数(负号不算),d是小数点后个数,m最大值为65,d最大值为30

按字符串去分:

1.char(m)

char数据类型用于表示固定长度的字符串,可以包含最多达255个字符.其中m代表字符串的长度。即使数据小于m长度,也会占用长度。

2.varchar(m)

varchars数据类型用于变长的字符串,可以包含最多达255个字符。其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。

虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡

创建数据表时把定长的数据往前放置,把不固定长度的数据往后放

3.text

text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符

4.mediumtext

范围:16,777,215 (2**24 − 1)个字符

5.longtext

范围:4,294,967,295 or 4GB (2**32 − 1)个字符

将上传文件存硬盘,DB存路径

按时间类型分:

1.DATE

YYYY-MM-DD(1000-01-01/9999-12-31)

2.TIME

HH:MM:SS('-838:59:59'/'838:59:59')

3.YEAR

YYYY(1901/2155)

4.DATETIME

YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)

5.TIMESTAMP

YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

按二进制数据分:

1.TinyBlob

2.Blob

3.MediumBlob

4.LongBlob

其他:

1.bit[(m)]

二进制位(101001),m表示二进制位的长度(1-64),默认m=1

2.enum

枚举类型An ENUM column can have a maximum of 65,535 distinct elements.(The practical limit is less than 3000.)
示例:
CREATE TABLE shirts (
name VARCHAR(40),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');

3.set

集合类型A SET column can have a maximum of 64 distinct members.
示例:
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

基本的增删改查

1.插入

insert into 表名(第一列数据名,第二列数据名...) values(值1,值2...);

2.删除

delete from 表名 where id<6; 只删除id小于6的数据

3.修改

①让表中所有的这个列下的值都改成一个固定数据:update 表名 set 列名=修改的固定值;

②基于①但有条件得去修改update 表名 set 列名=修改的固定值 where 列名=值;

4.查看

select * from 表名; 

Python学习日记(三十三) Mysql数据库篇 一的更多相关文章

  1. Python学习日记(三十七) Mysql数据库篇 五

    pymsql的使用 初识pymysql模块 先在数据库中创建一个用户信息表,里面包含用户的ID.用户名.密码 create table userinfo( uid int not null auto_ ...

  2. Python学习日记(四十) Mysql数据库篇 八

    Mysql存储过程 存储过程是保存在Mysql上的一个别名(就是一堆SQL语句),使用别名就可以查到结果不用再去写SQL语句.存储过程用于替代程序员写SQL语句. 创建存储过程 delimiter / ...

  3. Python学习日记(四十一) Mysql数据库篇 九

    前言 索引的主要作用是起到约束和加速查找,ORM框架(sqlalchemy)是用类和对象对数据库进行操作 索引的种类 按种类去分 1.普通索引:能够加速查找 2.主键索引:能够加速查找.不能为空.不能 ...

  4. Python学习笔记9-Python 链接MySql数据库

    Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...

  5. python学习笔记之——操作mysql数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  6. Python学习日记(三十六) Mysql数据库篇 四

    MySQL作业分析 五张表的增删改查: 完成所有表的关系创建 创建教师表(tid为这张表教师ID,tname为这张表教师的姓名) create table teacherTable( tid int ...

  7. Python学习日记(三十八) Mysql数据库篇 六

    Mysql视图 假设执行100条SQL语句时,里面都存在一条相同的语句,那我们可以把这条语句单独拿出来变成一个'临时表',也就是视图可以用来查询. 创建视图: CREATE VIEW passtvie ...

  8. Python学习日记(三十九) Mysql数据库篇 七

    Mysql函数 高级函数 1.BIN(N) 返回N的二进制编码 ); 执行结果: 2.BINARY(str) 将字符串str转换为二进制字符串 select BINARY('ASCII'); 执行结果 ...

  9. Python学习日记(三十五) Mysql数据库篇 三

    使用Navicate 创建一个连接去使用Mysql的数据库,连接名可以取任意字符但是要有意义 新增一个数据库 填写新数据库名,设置它的字符集和排序规则 新建一个表 增加表中的信息 点击保存再去输入表名 ...

随机推荐

  1. 在线visio软件,在线流程图软件,在线绘图、在线画图

    1. https://www.bullmind.com/ 推荐bullmind的在线visio软件,一种低成本的Visio替代品.bullmind是基于 网络的绘图工具,具有出色图表功能.您可以使用b ...

  2. Android android:allowBackup waiting for backup

    在Google settings 中,有个backup 选项,在里面选择开启 如果开启vpn,还是在setting里面还是waiting for backup, 就通过手机链接电脑,安装android ...

  3. .net framework msbuild环境搭建 (不装vs)

    1. 安装 .net framework sdk 小于等于 .net framework 4.5 版本的 .net framework sdk 通过 windows sdk 工具安装 从下面额链接找到 ...

  4. postman 测试Excel文件导入导出功能

    1.导入的测试方法 选择form-data,key值填写方法对应的参数,选择File,Value处上传文件即可. 2. 导出的测试方法 在导出文件的时候,响应结果是乱码,然后在测试的时候选择下载,下载 ...

  5. 词向量 词嵌入 word embedding

    词嵌入 word embedding embedding 嵌入 embedding: 嵌入, 在数学上表示一个映射f:x->y, 是将x所在的空间映射到y所在空间上去,并且在x空间中每一个x有y ...

  6. Flask 学习(二)jinja2模板介绍

    控制语句和表达式 举例 Flask Python代码 from flask import Flask, render_template, redirect, request app = Flask(_ ...

  7. python 解决 idea 或者 pucharm 编译器在引入自定义的 py 文件的类时,没有提示的问题

    1,问题描述: 假设我们有两个问价  a.py 和 b.py 其中分别有 A 类 和 B 类,现在我们想在 b.py 中引用 A 类 语法为 from a import A  虽然这是正确的语法,但是 ...

  8. WPF--控件模板的视觉效果呈现流程及逻辑

    外部通过属性把数据--传递给-->(破拆后)内部可视化树 ----> 内部可视化树呈现出视觉效果 ----> 各种内部可视化组件的视觉效果组合  --- 呈现 -->  外部的 ...

  9. sqlserver 创建分区表

    我们知道很多事情都存在一个分治的思想,同样的道理我们也可以用到数据表上,当一个表很大很大的时候,我们就会想到将表拆 分成很多小表,查询的时候就到各个小表去查,最后进行汇总返回给调用方来加速我们的查询速 ...

  10. Cannot get a STRING value from a NUMERIC cell问题的解决办法

    遇到以下错误的解决办法: 在cell加个setCellType()方法就可以了 cell.setCellType(CellType.STRING);