2019-04-22-day037-数据库的安装

时间:2023-03-08 17:27:59
2019-04-22-day037-数据库的安装

内容回顾

  1. 进程 线程 协程之间的相同点和不同点
    • 进程 : 内存隔离 操作系统级别 开销大 可以利用多核 计算机中资源分配的最小单位
    • 线程 : 内存共享 操作系统级别 开销中 Cpython解释器下不能利用多核 计算机中CPU调度的最小单位
    • 协程 : 内存共享 用户级别 开销小 不能利用多核
    • 协程 : 生产者消费者模型 进程模块提供的队列joinablequeue
      • from queue imort Queue
    • 相同点 : 都能够帮助我们实现并发操作,规避IO时间,提高程序执行效率
  2. 进程内存之间是否共享,如何实现通信
    • 不共享
    • 基于文件
      • 队列 管道 manager
    • 基于网络
      • 第三方工具(redis kafka memcache rabbitMQ) socket
  3. 在python中是否线程安全
    • 不安全
    • python你写的python代码未来都会转换成机器码,机器码执行的过程中
    • 如果有一个非原子性操作,那么就会导致线程数据不安全
    • 需要手动加锁来解决问题
  4. 协程的本质是什么
    • 多个任务在一条线程上能够实现切换
  5. 线程池开启任务
    • 如何开启线程池,如何提交任务,获取返回值
from concurrent.futures import ThreadPoolExecutor
def func(arg):
    return arg * 20

tp = ThreadPoolExecutor(5)
ret_l = []
for i in range(100):
    ret = tp.submit(func,i)
    ret_l.append(ret)
for r in ret_l:
    print(r.result())
from concurrent.futures import ThreadPoolExecutor
def func(arg):
    return arg * 20

tp = ThreadPoolExecutor(5)
ret_l = tp.map(func,range(100))
for r in ret_l:
    print(r)

协程复习 :

数据是否安全 : 绝对安全

a = 1
def func1():
    global a
    a += 1

def func2():
    global a
    a += 1
  • 和线程的关系
    • 本质就是一条线程
  • gevent模块
    • g1 = spawn(协程函数,参数)
    • g1.join()
    • gevent.joinall([g1])
    • monkey.patch_all()
  • greenlet switch
  • 并没有减少io操作
import time
from gevent import monkey
monkey.patch_all()

print(time.sleep)
<built-in function sleep>
<function sleep at 0x0000023FEBF62378>

数据库

  • day1.介绍数据库\安装\基础的命令
  • day2.数据库的表操作
  • day3.数据库的数据操作,查询(单表\多表)
  • day4.查询和其他内容的拾遗
  • day5.索引原理和python操作mysql
  • 今天的内容
    • 介绍数据库\安装\基础的命令
  • 数据库在开发的过程中占据着什么样的位置?
  • 在整个项目中又有什么意义?
  • 我们把数据存储在文件里
    • 写 write
    • 读 read
    • 改 读->写->删->改

数据库 : 能够更加简单的 使用 存储在文件中的数据

  • 能够更好的解决并发问题
  • 数据的统一问题

数据

  1. alex,alex3714 * 一行内容就是一条数据
  2. python,19800,6 months * 一条数据

数据库 DataBase DB

  • 存储数据的地方,我们把所有的数据都存储在一个固定的
  • 地方,那么这个地方就是数据库

数据库管理系统 DBMS

  • 负责管理数据仓库中存储的所有文件中的内容
  • 能够更好(简单 高效 安全)的帮助我们完成数据的增删改查

数据库服务器

  • 什么是服务器 : 本质就是一台计算机
  • 当一台计算机上安装了某个软件能够对外提供服务的时候,那么这台机器就成为服务器
  • 数据库服务器
    • 当这台机器上安装的服务是一个数据库
    • server端的时候,我们就得到了一台数据库服务器

数据库管理员 DBA

  • 专门帮助我们管理数据库 并且优化数据库的工作人员
  • mysql就是一个DBMS(能够管理硬盘上数据文件的一个软件)
  • 通过一些固定的简单的指令 帮助我们完成从文件中查找对应数据的软件
  • oracle 也是一个DBMS

查 name,id 从 userinfo 条件 age = 83

查 number 从 userinfo 条件 name='wusir'

数据库管理系统的作用:

  • 关系型数据库
  • 非关系型数据库

mysql 开源的软件 - 小公司 各种互联网公司(二次开发之后的mysql)

  • oracle 付费的 - 金融行业 国企事业单位
  • sql server 在学校里教学使用的

数据库的安装与卸载

问题

  1. D:\mysql\mysql-5.6.43-winx64安装目录中不能有空格和中文
  2. my.ini文件是不是utf-8
  3. 配置文件里的每一个路径的最后 是不是有看不见的空格
  4. 文件的名 my.ini
  5. 安装包

卸载

  1. D:\mysql\mysql-5.6.43-winx64\mysqld remove 移出服务
  2. 把mysql整个文件都删掉\环境变量也删掉
  3. 重启电脑

最后的两招

  1. 换一个目录装
  2. vc运行库

一堆命令

什么是环境变量?

当我们执行一个系统中的可执行文件的时候
例如 mysql.exe或者 mysqld.exe或者python.exe
如果我们不配环境变量,
那么就需要进入mysql.exe所在的目录去执行
或者带着这个文件的绝对路径去执行
我们经常要执行这些文件
所以把文件的路径添加到环境变量中
就可直接输入文件名来执行程序了

mysqld install
mysqld.exe install  要安装mysql的server端
net start mysql 启动server端
mysql -uroot -p 启动client端

#重启server
net stop mysql
net start mysql

client端的启动

c://>mysql -uroot #表示没有密码的情况下用root用户登录
c://>mysql -uroot -p #表示使用密码登录
Enter password:#输入密码,如果没有密码直接回车

mysql > select user(); #查看当前用户
set password = password('123');#给当前用户设置密码

#查看当前的所有数据库
mysql > show databases;

#root用户在mysql当中相当于管理员用户
#其他的程序员想要使用数据库来存储项目数据,不能给他权限最高的管理员用户

可以创建用户 并且给用户授权

create user 'eva@192.168.16.%';
create user 'eva@192.168.16.%' identified by '123';

#既可以给一个已经存在的用户授权,也可以给一个不存在的用户创建并授权
grant 权利 on 数据库名.表名 to '用户名@ip地址'
grant 权利 on 数据库名.表名 to '用户名@ip地址' identified by '123';
   * 权利 : SELECT INSERT UPDATE DELETE ALL

#创建一个数据库 s20_day1
create database s20_day1;

#创建一个stu用户 密码是123 ip地址是192.168.16网段的所有机器
能对这个数据s20_day1做增删改查的所有操作
grant all on s20_day1.* to 'stu@192.168.16.%' identified by '123';

192.168.16.13
mysql -ustu -h192.168.16.13 -p
123

grant all on s20_day1.* to 'stu'@'192.168.16.%' identified by '123';
#用户名 密码 ip地址
mysql -u用户名 -hip地址 -p 密码

ddl语言

  • 文件夹(数据库)的增删改查
    • 创建数据库
      • create database 数据库名;
    • 使用数据库
      • use 库名;
    • 查看数据库下有哪些表
      • show tables;
  • 表的增删改查
    • 创建表
      • create table 表名(字段名 数据类型(长度),字段名2 数据类型(长度),..)
    • 查看表结构
      • desc 表名;
    • 修改表
      • alter table t1 change name username char(12);
    • 删除表
      • drop table t1;

dml语言

  • 数据的增删改查
    • 增加
    • insert into 表名 values (值1,值2,...); 插入一条数据
    • insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...); 插入多条数据
    • 查看数据
    • select * from 表名;
    • 修改数据
    • update 表 set 字段名=值 where 条件;
    • 删除数据
    • delete from 表 where 条件;

my.ini

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir = D:\mysql\mysql-5.6.43-winx64
# 设置mysql数据库的数据的存放目录
datadir = D:\mysql\mysql-5.6.43-winx64\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB(base)