一、数据的演变

在python学习的过程中,我们一开始的数据是存放在文件中的,这都是按照自己的习惯风格去定制的。后来为了更规范的记录数据,有了一条软件开发目录规范。

Foo/
|-- core/
| |-- core.py
|
|-- api/
| |-- api.py
|
|-- db/
| |-- db_handle.py
|
|-- lib/
| |-- common.py
|
|-- conf/
| |-- settings.py
|
|-- run.py
|-- setup.py
|-- requirements.txt
|-- README

但这也只是对我们本地的数据做一些操作,真正要联网统一管理数据,需要用到数据库

二、数据库

数据库的本质是一款基于网络通信的应用程序

数据库大致上分为两种:

  • 关系型数据库

    • MySQL、oracle、db2、access、sql sever
  • 非关系型数据库
    • redis、mongodb、memcache

关系型数据库和非关系型数据库的区别

  • 关系型:

    • 数据之间有彼此的关系或者约束
    • 存储数据的表现形式通常是以表格存储
      • 字段名: name pwd age
      • 数据 : hz 123 18
      • 数据 : lxt 123 18
      • 每个字段都可以设定不同的存储类型限制
  • 非关系型:
    • 储存数据通常是以kv键值对的方式存储

三、MySQL

1 基本原理

任何基于网络通信的应用程序底层都是用socket

  • 服务端

    • 基于socket通信
    • 收发消息
    • SQL语句
  • 客户端
    • 基于socket通信
    • 收发消息
    • SQL语句

MySQL能支持其他编程语言当成客户端来操作,用的是统一的SQL语言

2 重要概念介绍

  • 数据库 = 文件夹
  • 表 = 文件
  • 数据 = 文件内的一行行数据
  • 表头 = 表格内的第一行数据
  • 字段 = 第一行数据的元素

3 安装

参考网站:https://www.mysql.com/

4 启动

MySQL要在终端启动,要先启动一个服务端,然后我们在客户端对数据进行操作

  • 先切换到mysqld所在的bin目录下,然后输入mysqld即可

  • 保留原来的cmd窗口重新打开一个

    """
    常见软件的默认端口号
    MySQL 3306
    redis 6379
    mongodb 27017
    django 8000
    flask 5000
    ... MySQL第一次以管理员身份进入是没有密码的 直接回车即可 客户端连接服务端完整命令
    mysql -h 127.0.0.1 -P 3306 -uroot -p
    """

5 sql基本语句

MySQL的sql语句都是以;最为结束的标志

  • 查看所有的库名: show databases
  • 连接服务端的命令简写: mysql -uroot -p
  • 如果不想让服务端执行自己写的错误命令:\c
  • 客户端退出:quit 或者 exit
  • 如果输入mysql也连接到了服务端,这只是游客模式,不是管理员模式,功能阉割。

6 环境变量的配置及系统服务制作

小知识点补充

  • 如何查看具体进程

    • 查看全部进程:tasklist
    • 查看具体进程:tasklist | findstr mysqld
  • 如何杀死具体进程(必须在管理员cmd窗口下才能成功)
    • taskkill/F / PID号

环境变量配置

每次启动mysqld服务端都要在mysql的bin文件目录下才能启动,这样的方式明显很麻烦,我们可以通过把mysqld文件所在路径添加到系统的环境变量中

这样虽然不用到特定目录下启动服务,但是还是要启动两个cmd

最优解是把mysql服务端制作成系统服务(开机自启动)

  • 查看当前计算机运行的进程数

    • services.msc
  • 把mysql制作成系统服务
    • mysqld -- install
  • 移除mysql系统服务
    • mysqld -- remove

7 关于密码

设置密码指令

mysqladmin -uroot -p原密码 passwprd 新密码

直接终端修改即可,不需要进入客户端

破解密码

  • 先关闭mysql服务端

    • mysql获取账号密码的效验可以看做是一个装饰器,装饰在客户端访问的功能上
    • mysqld --skip-grant-tables
  • 直接以无密码的方式连接
    • mysql -uroot -p 直接回车
  • 修改当前用户的密码
    • update mysql .user set password = password(123456)where user='root' and host = 'localhost'
  • 立刻修改数据刷新到硬盘
    • flush privileges
  • 关闭当前服务器,以正常授权形式启动

mysql的密码储存是密文形式,如果忘记了就必须重置

8 统一编码

mysql在主文件下有一个ini后缀的配置文件

这个配置文件会在程序刚开始运行的时候先加载,再启动

但是一般情况不会再这个自带的ini文件内对mysql配置信息进行修改,通常是自己写一个ini文件让程序运行前加载

my.ini

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
user="root"
password=123456
default-character-set=utf8

9 基本sql语句

ps:大部分的程序的业务逻辑都是增删改查

针对库的增删改查(文件夹)

# 增加数据库
create database db2;
create database db2 charset = 'gbk';
# 查询数据库
show databases; # 查所有
show create database db2; # 查询指定的数据库
# 修改数据库属性
alter database db2 charset = ‘utf8’;
# 删除数据库
drop database db2

针对表的增删改查(文件)

我们要修改表/文件的时候,先要找到这个表/文件所在的数据库/文件夹

# 查看当前所在的库的名字
select database();
# 切换库
use db2;
# 增加表
create table t1(id int,name char(4)) # 内涵字段名和字段的数据类型
# 查询表
show tables # 查询当前库所有的表
show create table t1;# 查询当前库指 定名称的表
# 这种语句查出来的结果是select语句的形式
describe t1; # 支持简写 desc t1;
# 这种语句的查询结果是以表格的形式
# 修改表
alter table t1 modify name char(16) # 修改表某一字段的数据类型
# 删除表
drop table t1;
'''
可以用绝对路径操作不同库的表进行操作
create table db1.t1(id int);
'''

针对数据的增删改查(一行行数据)

# 对数据的操作一定要先有库,有表,最后才能操作

# 增加数据
insert into t2 values(1,'hz'),(2,'egon'); # 查询数据
select * from t2; # 修改数据
update t2 set name=‘hzdsb’ where id= 1; # 删除数据
delete from t2 where id = 1; # 清空表数据
delete from t2;

day44 初识数据库的更多相关文章

  1. 第一章 初识数据库Mysql

    初识数据库Mysql(my)   在企业中 percona: 一.数据库基础知识 Mysql是一个开放源代码的数据库管理系统(DBMS),它是由Mysql AB公司开发.发布并支持的.Mysql是一个 ...

  2. Task01:初识数据库

    本章主要讲解数据库安装和数据库基本介绍,考虑易用性及普及度,本课程采取mysql进行教学. 1.1 初识数据库 数据库是将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.该数据集合称 ...

  3. Mysql(一):初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  4. MySQL之初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  5. 【MySQL】初识数据库及简单操作

    一.数据库概述 1.1 什么是数据(Data) 描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字.图片,图像.声音.语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机. ...

  6. 初识数据库、初识MySQL

    一.为什么要用数据库 # 1.将文件和程序存在一台机器上是很不合理的. # 2.操作文件是一件很麻烦的事. 所以就出现了一个新的概念 —— 数据库 你可以理解为 数据库 是一个可以在一台机器上独立工作 ...

  7. MySQL 第一篇:初识数据库

    一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上. 如果我们暂且忽略直接基于文件来存取数据的效率问题,并且假设程序所有的组件 ...

  8. SQL学习笔记一之初识数据库

    阅读目录 一 数据库管理软件的由来 二 数据库概述 三 mysql介绍 四 下载安装 五 mysql软件基本管理 六 初识sql语句 一 数据库管理软件的由来 基于我们之前所学,数据要想永久保存,都是 ...

  9. Mysql初识数据库《五》初识sql语句

    初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写 mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要 ...

随机推荐

  1. 基于EntityFramework 6 Code First实现动态建库,分库,数据库自动迁移

    一.前言 公司原本有一个"xx系统",ORM使用EntityFramework,Code First模式.该系统是针对某个客户企业的,现要求该系统支持多个企业使用,但是又不能给每个 ...

  2. java8 Date相关工具

    自己整理的java8 常用的工具类 /** * @Author taozhaoyang * @Description 结合 java8 线程安全 * @Date 9:55 2018/7/30 **/ ...

  3. C# 9.0 新特性之参数非空检查简化

    阅读本文大概需要 1.5 分钟. 参数非空检查是缩写类库很常见的操作,在一个方法中要求参数不能为空,否则抛出相应的异常.比如: public static string HashPassword(st ...

  4. python基础内容整理(一)

    基本数据类型 字符串 String 字符串是不可变类型 字符串的分割: s.split(sep)以给定的sep为分隔符对s进行分割. In [4]: s = "hello world&quo ...

  5. Laya 吐槽日志.

    新换了一个公司,公司有两个产品都是用的laya, 一个as写的2D游戏, 一个ts写的3D游戏 as写小游戏,各种不舒服啊,  一堆 __JS这样的代码,   体验极差. laya IDE 按钮只能做 ...

  6. cb01a_c++_数据结构_顺序容器_STL_deque类

    /*cb01a_c++_数据结构_顺序容器_STL_deque类deque是一个动态数组,比vector更加灵活.两者都属于动态数组deque与vector非常类似deque可以在数组开头和末尾插入和 ...

  7. Andrew Ng - 深度学习工程师 - Part 1. 神经网络和深度学习(Week 1. 深度学习概论)

     =================第1周 循环序列模型=============== ===1.1 欢迎来到深度学习工程师微专业=== 我希望可以培养成千上万的人使用人工智能,去解决真实世界的实际问 ...

  8. RocketMQ(1)---架构原理及环境搭建

    一.架构简述 RocketMQ阿里开源的一个分布式消息传递和流媒体平台,具有低延迟,高性能和可靠性, 万亿级容量和灵活的可伸缩性.跟其它中间件相比,RocketMQ的特点是纯JAVA实现,在发生宕机和 ...

  9. Hibenate面试

    5. 对比总结 返回值: get()返回的是查询出来的实体对象,而load()查询出来的是一个目标实体的代理对象. 查询时机: get()在调用的时候就立即发出SQL语句查询,而load()在访问非I ...

  10. 前端笔记(关于解决打包时报node-sass错误的问题)

    这个问题之前反复出现,试过重新从其他同事将node_modules拿过来用,但是过了几天又出同样的问题 去网上百度了好久,大多数都说是node-sass重装一下就行.可是我这边卸载都无法卸载,何谈重装 ...