背景

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:有符号双精度浮点数 范围:

 02.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 表名; 

转载于:https://www.cnblogs.com/Fantac/p/11563528.html

Python学习日记(三十三) Mysql数据库篇 一相关推荐

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

    外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务 ...

  2. Python学习日记(二十三) 类命名空间和组合

    类命名空间 在一个类中它的函数(方法)属于动态属性,直接定义的变量属于静态属性 首先先定义一个类,并在这个类里面加入静态变量.属性等然后将一个对象实例化 class Fighter: #定义一个战机的 ...

  3. Python学习日记(三) 学习使用dict

    数据按类型可划分为: 不可变数据类型(可哈希):元祖.string.int.bool 可变数据类型(不可哈希):dict.list 集合本身是可变数据类型,元素是不可变数据类型 字典中的key必须是不 ...

  4. Python学习日记-第二十三天-飞机大战(游戏背景设计思路)

    系列文章目录 目标 ·背景简体滚动的思路确定 ·显示游戏背景 前言 这一章节是讲述的飞机大战游戏背景的设计思路细节. 一.背景简体滚动的思路确定 ·游戏启动后,背景图像 会连续不断的向下移动 ·视觉上 ...

  5. Python学习日记(三十) Socket模块使用

    Socket(套接字) 套接字是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像文件一样的打开.读写和关闭等操作.套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信.网 ...

  6. Python学习日记(三十一) 黏包问题

    import subprocessres = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PI ...

  7. Python学习日记(三十二) hmac检验客户端的合法性和socketsever模块

    Hmac模块 其实这个模块类似hashlib模块,它能将一些重要的信息通过算法加密成密文,让信息更具有安全性. 关于hmac加密算法的了解:它的全名是哈希运算消息认证码(Hash-based Mess ...

  8. [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD

    javaweb学习总结(三十三)--使用JDBC对数据库进行CRUD 一.statement对象介绍 Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过 ...

最新文章

  1. 如何用php采集照片,使用PHP采集远程图片
  2. wxWidgets:wxFilterClassFactory类用法
  3. C# Winform 使用二维码
  4. ue查找文件中每行第二个单词_UI设计和UE/UX设计有什么区别?它们的晋升路径是什么?...
  5. 如何动态在maven插件中加载项目及第三方类
  6. Linux编程(9)_进程
  7. java编程工具 初学者_面向初学者的Java编程在线课程
  8. carrot2中lingo实现总结(一)
  9. 安装webpack上
  10. 使用 Django 实现私有云盘
  11. C/C++中CRT表示什么意思?
  12. 提前还贷怎样才划算 多还本金减少期限最划算
  13. 博雅数智|3.23直播笔记
  14. stack、queue和priority_queue
  15. R329开发板根目录 ls 命令文件和文件名乱码其他目录不乱码问题解决
  16. 软件测试行业现状分析(三)
  17. put命令here are 2 datanode(s) running and 2 node(s) are excluded in this operation.的解决方法
  18. 重装系统windows10/8/7,绝对纯净版永久激活的详细步骤和固态硬盘找不到分区的原因...
  19. python主成分分析(PCA)
  20. 苹果Facebook介入:移动AR市场2021年或达600亿美元

热门文章

  1. 数据库连接对象Connection对象的获取及相关知识总结
  2. 解决无法删除文件 rm -rf
  3. [转帖]Cacls和ICacls
  4. 如何使用手机免费将PDF转Word还不限页数
  5. 【C#语言】ToolStrip控件
  6. 中医大计算机考试内容,中医医师二试考试计算机化考试系统考生操作流程说明...
  7. 零基础学习软件测试,掌握四点就够了
  8. Redis 锁的过期时间小于业务的执行时间该如何续期?
  9. adb bugreport保存位置的控制
  10. 使用 DCIM 实现能效目标