MySQL基础----py全栈
MySQL基础----py全栈
一、引言
1、什么是数据?
描述事物的符号记录,可以使数字,也可以是文字,图形、图像等,数据有多种形式,它们都可以经过数字化存入计算机,数据的含义成为数据的语义
2、什么是数据库(DB)?
存储数据的仓库,是长期存放计算机内、有组织、可共享的大量数据的集合,数据库中的数据是按照一定数据模型组织的,描述和存储,具有较小的冗余度,较高的独立性和易扩展性,并为各种用户共享,即数据库有永久存储、有知识和可共享的三个基本特点。
3、什么是数据库管理系统(DBMS)?
数据库管理系统又称DBMS(Database Management System ),顾名思义,位于用户和操作系统之间的一层数据管理软件。数据库管理系统主要有以下功能:
- 数据定义功能:提供数据定义语言(DDL),让用户方便地对数据库中数据对象进行定义
- 数据组织、存储和管理:要提高存储空间利用率和存储效率
- 数据操纵功能:提供数据操纵语言(DML),实现对数据库基本操作,如增删改查
- 数据库的建立和维护功能:统一管理控制,以保证安全、完整、多用户并发使用。
- 其他功能:与网络中中的其他软件系统通信功能,异构数据库之间的互访和互操作功能。
常听说的数据库管理系统有MySQL、Oracle、SQLite、Access、MS SQL Server等,他们均是软件,它们属于关系型数据库。他们都有两个主要功能:
- 将数据保存到文件或内存
- 接受client特定的命令,然后对文件进行相应的操作
4、什么是数据库系统?
指的是计算机系统中引入数据库后的系统,一般有数据库、数据库管理系统、应用系统、数据库管理员(DBA)构成,常简称为数据库。
5、数据库管理系统由来
数据库管理系统由来
我们思考几个问题,在网络编程中我们的远端Client的用户产生的数据,我们要存放到什么地方,比较数据保存在本地硬盘,来分析,下面是分析过程:
数据存放位置 在本地管理数据 在远端管理数据 功能实现 1、创建本地目录、存放文件
2、有多个目录,用来归类存放不同类型的数据文件
3、不同用户有不同的权限,用户可以访问,修改自己的数据1、用户只要有socketClient客户端,就可以访问远端拿到数据
2、远端存放数据的位置有socket服务端接受数据,并保存数据。
3、不同用户可以在远端服务器通过socket执行命令(来操作保存数据文件)
4、不能 用户有不同的权限,对文件
6、什么是数据模型?
是对现实世界数据特征的抽象,是对现实世界的模拟,是数据库系统的核心和基础。数据模型应满足三方面需求:1.真是模拟现实世界;2.容易为人理解;3.便于在计算机上实现。数据模型按应用目的分为两类:
- 第一类是概念模型:按用户观点对数据和信息建模,主要用于数据库设计,也称信息模型。
- 第二类是逻辑模型和物理模型:逻辑模型是按计算机观点对数据建模,主要包括层次模型、网络模型、关系模型、面向对象模型、对象关系模型;物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法。
数据模型通常由数据结构、数据操作和完整性约束三部分组成,是严格定义的一组概念的集合,精确的描述了系统的静态特写、动态特性和完整性约束条件。
7、什么是概念模型?
用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力的工具,也是设计人员与用户之间进行交流的语言。信息世界涉及的概念主要有:
- 实体(Entity):客观存在并可相互区别的事物成为实体。可以是人、事、物,也可以是抽象的概念和联系。
- 属性(Attribute):实体所具有的某一特性。一个实体可以又若干个属性来刻画。
- 码(Key):唯一标识实体的属性集。
- 域(Domain):域是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。
- 实体型(Entity Type):具有相同属性的实体必然具有共同的特征和性质。用实体名和属性名集合来抽象和刻画同类实体,称为实体型。
- 实体集(Entity Set):同一类型实体的集合。
- 联系(Relationship):实体内部和实体之间的联系。实体之间的联系有一对一,一对多、多对多三种。
8、什么是关系型数据库?
指建立在关系模型基础上的,而关系模型本质上就是若干个存储数据的二维表。
二、MySQL数据库的安装以及服务配置
MySQL是一个关系型数据库管理系统,目前属于Oracle旗下,MySQL最流行的关系型数据库管理系统(又称RDBMS,Relational Database Management System),想要使用MySQL数据库我们需要以下步骤:
- 安装mysql服务端
- 安装mysql客户端
- 客户端连接服务端
- 客户端发送命令给服务端,服务端根据指令执行对数据的相应操作。
1、windows版本
windows下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads
安装
我们下载的是zip版本,解压之后,就可以了,即可。


MySQL目录解释:
bin -----存放mysql的可执行文件,如:mysql、mysqld等。
data -----用于防止一些日志文件以及数据库,默认没有,初始化之后生成
docs ------存放,mysql用法的说明文档
include ----用于放置一些头文件
lib -----用于放置一些mysql要用到的库文件
share ------用于放置一些字符集、语言等信息。
服务配置
初始化mysql数据库,生成data目录
cd D:\Download\mysql-5.7.25-winx64\bin
mysqld --initialize-insecure
启动MySQL服务端
#----------------------方法一-----------
#打开命令窗口
#进入可执行文件目录
cd D:\Download\mysql-5.7.25-winx64\bin
#启动mysql服务
mysqld #-------------------方法二----------------
#将mysql的可执行文件目录添加到系统的环境变量PATH中
#步骤:
#控制面板->系统和安全->系统->高级系统设置,打开【系统属性】面板
#在【系统属性】面板中,选中高级选项卡,点击环境变量,打开【环境变量】面板
#在【环境变量】面板中,在【系统变量】里查找选中变量为PATH的一行,点击编辑,
#在变量值得末尾,添加值【;D:\Download\mysql-5.7.25-winx64\bin】,注意一点要加上分号。 # 在任意目录,打开命令窗口,直接输入mysqld命令,即可开启服务 #---------------------方法三------------
#步骤:
#在命令窗口执行以下命令,注册mysqld为windows服务
"D:\Download\mysql-5.7.25-winx64\bin" --install
#执行以下命令,移除mysqld服务。
"D:\Download\mysql-5.7.25-winx64\bin" --remove
#注册成功之后,以后再启动和关闭mysql服务时,仅需在命令行输入
#启动服务
net start mysqld
#关闭服务
net stop mysqld
对比三种方法:
1、方法一:在命令行开启服务,关闭命令窗口,服务停止,并且每次需要进入到bin目录下执行命令
2、方法二:不需要进入bin目录下执行命令,但是关闭命令窗口,服务也停止
3、方法三:不需要进入并bin目录下执行命令,并且关闭命令窗口,服务仍然在执行。
总结:
最佳方式是结合方法二和方法三,
将bin目录添加到path路径下,然后注册mysqld为windows服务。
启动MySQl客户端
我们下载的软件中,包含了mysql服务端程序,也包含了客户端程序,统一放到了bin目录下,如果我们已经将bin添加到path路径下的话,我们执行下面的命令去连接数据库:
#连接MySQL服务器,之后敲两个回车就行了,一开始默认没有设置密码
mysql -u root -p #本地登陆(客户端和服务端在一起) #命令解释:
#mysql -u 用户名 -h 服务器ip地址 -p 密码
2、linux系统
安装
这里我们介绍CentOS7以上系统,默认自带yum包管理工具。
yum install mariadb-server mariadb
# mariadb-server 主要提供mysql服务
# mariadb 主要提供一些客户端命令行工具
配置
#初始化数据库,
mysql_secure_installation #设置root密码。删除车市数据库,修改匿名用户等操作。
#启动服务
systemctl start mariadb
3、client端连接远程数据库(Mysql数据库)
使用命令行工具
#命令解释:
mysql -u 用户名 -h 服务器ip地址 -p 密码 -P 端口号
# 注意前提是安装mysql自带的客户端工具。windows默认安装,linux只需要安装mariadb这个包
#默认端口号3306
#默认本地ip地址
使用一些数据库连接软件
windows:phpMyAdmin、Navicat 、DBeaver
一些库支持
python语言版本:pymysql、MySQLsb、mysqlclient
三、MySQL数据库
1、一些概念解释
什么是SQL?
MySQL、Oracle等软件可以接受命令,并作出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是SQL语句。SQL是结构化语言的缩写,用来专门与数据库进行通信的语言。
2、数据库基本命令
显示数据库
show databases;
#显示当前登录用户可以查看的数据库列表。
默认root用户有四张表:
information_schema :提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”。)
mysql :mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息
performance_schema :主要用于收集数据库服务器性能参数。主要用于收集数据库服务器性能参数。
sys:Sys库所有的数据源来自:performance_schema。目标是把performance_schema的把复杂度降低创建数据库:
# utf8编码
CREATE DATABASE test1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#整条语句语义:创建数据库名为test1,设置缺省的编码格式(字符集)为utf8,按照utf8进行排序,比较等操作。 #gbk编码
CREATE DATABASE test DEFAULT CHARACTER SET gbk COLLATE gbk_general_ci;
#整条语句语义:创建数据库名为test1,设置缺省的编码格式(字符集)为gbk,按照gbk编码进行排序 #字段解释:
#collate:设置比较操作,用什么编码方式进行比较。
#charset utf8 :设置数据库使用utf8字符集
#character set gbk:设置数据库使用gbk字符集 #sql语句不强制使用大小写,但是为了便于观看,我们将系统字段写成大写,用户输入写成小写
数据表简单操作
#进入数据库
USE test1;
#显示test2数据库中所有的表
SHOW TABLES;
3、数据库用户管理
创建用户
#格式:
create user '用户名'@'ip地址' identified by '密码';
#例子
create user 'dman'@'localhost' identified by 'password';
#创建用户名为dman,密码为password。该用户只能通过在本地登陆。删除用户
#格式
drop user '用户名'@'IP地址';
#例子
drop user 'dman'@'localhost';修改用户
#格式
rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
#例子
rename user 'dman'@'localhost' to 'test'@'localhost';修改密码
#格式
set password for '用户名'@'IP地址' = password('新密码')
#例子
set password for 'test'@'localhost' = password('redhat');注意事项:
1、用户权限相关数据保存在mysql数据库的user表中,在root用户下可以对其直接进行操作,但是不建议这样做。
2、当用户创建之后,用户只能登陆到mysql,但是不能干任何事情,需要我们去授权之后才可以。
4、数据库用户授权
查看用户权限
show grants for '用户'@'IP地址';授予某用户什么权限
grant 权限 on 数据库.表 to '用户'@'IP地址'取消某用户权限
revoke 权限 on 数据库.表 from '用户'@'IP地址'立刻刷新数据到内存,使权限更改立刻生效
flush privileges #将数据读取到内存中,从而立即生效。 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)
superMySQL基础----py全栈的更多相关文章
- MySQL进阶(视图)---py全栈
目录 mysql进阶(视图)---py全栈 一.什么是视图? 二.视图的特性 三.视图的优点 四.使用场合 五.视图基本操作 六.案例 mysql进阶(视图)---py全栈 一.什么是视图? 视图是从 ...
- 一个关于vue+mysql+express的全栈项目(一)
最近学了mysql数据库,寻思着能不能构思一个小的全栈项目,思来想去,于是就有了下面的项目: 先上几张效果图吧 目前暂时前端只有这几个页面,后端开发方面,有登录,注册,完善用户信息,获取用 ...
- MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- (转载)MySQL基础(非常全)
MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...
- 一个关于vue+mysql+express的全栈项目(三)------ 登录注册功能的实现(已经密码安全的设计)
本系列文章,主要是一个前端的视角来实现一些后端的功能,所以不会讲太多的前端东西,主要是分享做这个项目学到的一些东西,,,,, 好了闲话不多说,我们开始搭建后端服务,这里我们采用node的express ...
- 一个关于vue+mysql+express的全栈项目(六)------ 聊天模型的设计
一.数据模型的设计 这里我们先不讨论群聊的模型,指讨论两个人之间的聊天,我们可以把两个人实时聊天抽象为(点对点)的实时通讯,如下图 我们上面的所说的模型其实也就是数据包的模型应该怎么设计,换句话说就是 ...
- 一个关于vue+mysql+express的全栈项目(五)------ 实时聊天部分socket.io
一.基于web端的实时通讯,我们都知道有websocket,为了快速开发,本项目我们采用socket.io(客户端使用socket.io-client) Socket.io是一个WebSocket库, ...
- 一个关于vue+mysql+express的全栈项目(四)------ sequelize中部分解释
一.模型的引入 引入db.js const sequelize = require('./db') sequelize本身就是一个对象,他提供了众多的方法, const account = seque ...
- 一个关于vue+mysql+express的全栈项目(二)------ 前端构建
一.使用vue-cli脚手架构建 <!-- 全局安装vue-cli --> npm install -g vue-cli <!-- 设置vue webpack模板 --> vu ...
随机推荐
- 应用ArcGIS Server JavaScript API实现地图卷帘效果实现
var maskDynamicMapServiceLayer = null; var maskDynamicMapServiceLayerDiv = null; var pointNumb = 0; ...
- C# SqlConnection连接sql server
try { SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=127.0.0.1; ...
- mocha、chai、sinon和istanbul实现100%单元测试覆盖率
敏捷软件开发中,最重要实践的就是测试驱动开发,在单元测试层面,我们试着实现一个重要的指标就是测试覆盖率.测试覆盖率衡量我们的代码是否已经全部被测试到了. 但是指标本身不是目的,借助测试覆盖率检查,我们 ...
- 从AggregateException看异常类的设计
异常是程序在有bug时最直观的表现形式,不担心有bug存在,而担心bug埋没在大堆的代码中而发现不了. 这篇随笔简单谈谈从AggregateException类源码(http://www.projky ...
- springMVC入门-08
这一讲介绍用户登录实现以及两种异常处理controller控制器的方法,最后提一下在springMVC中对静态资源访问的实现方法. 用户登录需要一个登录页面login.jsp,对应代码如下所示: &l ...
- HBase HA的分布式集群部署(适合3、5节点)
本博文的主要内容有: .HBase的分布模式(3.5节点)安装 .HBase的分布模式(3.5节点)的启动 .HBase HA的分布式集群的安装 .HBase HA的分布式集群的启动 .H ...
- 函数的调用 and 打印返回值 ret= mai() print(ret)
def mai(): # mai 函数名 (yan) 形式参数 print("老板,给我一包中华") return"给你" # 返回值-- 给你ret = ma ...
- print in或者not in, 判断在不在里面
print("不疼" in "麻花疼") # 结果False print("不疼"in "真不疼") # ...
- Alpha 冲刺报告(9/10)
Alpha 冲刺报告(9/10) 队名:洛基小队 峻雄(组长) 已完成:角色属性功能的测试版 明日计划:准备α版本的ppt 剩余任务:尽量完成角色属性功能 困难:缺乏编程经验,很难自己独立完成编写,只 ...
- JDK1.6在LINUX下的安装配置[转]
JDK1.6在LINUX下的安装是如何进行的呢,让我们开始我们的演示: Ubuntu Linux下jdk的安装与配置 1.JDK1.6安装准备 从sun公司网站www.sun.com下载linux版本 ...
- MySQL进阶(视图)---py全栈