一、数据的演变

在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. Spring Cloud 系列之 Alibaba Nacos 注册中心(一)

    前言 从本章节开始,我们学习 Spring Cloud Alibaba 相关微服务组件. Spring Cloud Alibaba 介绍 Spring Cloud Alibaba 致力于提供微服务开发 ...

  2. Html/css 水平布局居中

    如何设置水平居中显示? 一般的方法是设置宽高,然后以margin去控制,比如:DIV居中的经典方法 本章介绍需要宽度自适应时如何水平居中,以及居中失效的几个点 水平自适应居中 比如设置一个列表水平居中 ...

  3. Swift Core Data 图片存储与读取

    1.首先推出选择拍照还是相册的alert,代码如下: UIAlertController *alert = [UIAlertController alertControllerWithTitle:ni ...

  4. Mariadb 10.14 mysqldump error: 1049

    Mariadb 10.14 mysqldump error: 1049 Table of Contents 1. 错误信息 2. 解决方法 1 错误信息 执行表导出: mysqldump -uroot ...

  5. qemu-guest-agent详解

    qemu guest agent简称qga, 是运行在虚拟机内部的一个守护程序(qemu-guest-agent.service),他可以管理应用程序,执行宿主机发出的命令. QEMU为宿主机和虚拟机 ...

  6. 重学 Java 设计模式:实战代理模式「模拟mybatis-spring中定义DAO接口,使用代理类方式操作数据库原理实现场景」

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 难以跨越的瓶颈期,把你拿捏滴死死的! 编程开发学习过程中遇到的瓶颈期,往往是由于看不 ...

  7. 多页面共用sessionStorage的实现(转载)

    sessionStorage的局限: sessionStorage是页面级别的,仅在一个标签页生效,如果同一个浏览器同时打开多个标签页,且都访问同一个域名,sessionStorage是不会在这多个标 ...

  8. Windows安装C的编译环境

    对于java开发者来说安装C的编译环境不是非常熟悉,因此本文对C的安装环境进行介绍以及windows编译Redis和Zookeeper的过程.MinGW主要用于按照gcc.make等环境,cywin用 ...

  9. window 开机重启运行bat文件(运行java的jar包)

    1:直接打开电脑的目录:(记得勾选查看隐藏项目) C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,在里面新建start.bat ...

  10. java scoket aIO 通信

    AsynchronousServerSocketChannel assc.accept(this, new ServerCompletionHandler()); 第一个参数是服务器的处理类,第二个参 ...