1 . 数据库的介绍

1.为什么要用数据库?

  • 很多功能如果只是通过操作文件来改变数据是非常繁琐的,程序员需要做很多事情
  • 对于多台机器或者多个进程操作用一份数据,程序员自己解决并发和安全问题比较麻烦
  • 自己处理一些数据备份,容错的措施

2.数据库的优势:

数据库是C/S架构的、操作数据文件的一个管理软件。

  • 1.帮助我们解决并发问题
  • 2.能够帮助我们用更简单更快速的方式完成数据的增删改查
  • 3.能够给我们提供一些容错、高可用的机制
  • 4.权限的认证

3.数据库管理系统 DBMS

  • 数据库管理系统是专门用来管理数据文件、帮助用户更简洁的操作数据的系统软件。

  • 数据 — data :描述事物的符号记录称为数据

  • 文件

  • 数据库 — database (简写:db) ,即文件夹

    数据库即存放数据的仓库,只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的

  • 数据库管理员 — DBA

4.数据库管理系统的两种类型:

  • 1.关系型数据库:

    • 1.sql server

    • 2.oracle 收费、比较严谨、安全性比较高

      主要用于:a.国企 事业单位 b.银行 金融行业

    • 3.mysql 是开源的,因为开源这个数据库是免费的,他现在是甲骨文公司的产品。

      主要用于:a.小公司 b.大型互联网公司

    • 4.sqllite(小的数据库)

  • 2.非关系型数据库

    • redis
    • mongodb

5.数据库的下载、安装

安装mysql遇到的问题:

  • 1.操作系统的问题:

    缺失dll文件

  • 2.安装路径:

    • 不能有空格
    • 不能有中文
    • 不能带着有转义的特殊字符开头的文件夹名
  • 3.安装之后发现配置有问题,再修改配置往往不能生效

  • 4.卸载之后重装:

    mysqld remove ==> 把所有的配置、环境变量修改到正确的样子 ==> 重启计算机 - 清空注册表 ==> 再重新安装

2. mysql

2.1 mysql的CS架构

  • mysqld install 安装数据库服务
  • net start mysql 启动数据库的server端
  • net stop mysql 停止数据库的server端
  • 客户端可以是python代码也可以是一个程序
    • mysql.exe是一个客户端
    • mysql -u用户名 -p密码 ,默认为:mysql -uroot -p(密码为空)回车+空格

2.2 mysql中的用户和权限

1.在安装数据库之后,有一个最高权限的用户root

  • mysql -uroot -p

2.我们的mysql客户端不仅可以连接本地的数据库,也可以连接网络上的某一个数据库的server端

  • mysql 192.168.12.87 eva/123
  • mysql -h192.168.12.87 -uroot -p123

3.常用语句:

  • 查看当前用户是谁 :mysql>select user();

  • 设置密码 :mysql>set password = password('密码')

  • 创建用户 :create user '用户名'@'网段.%' identified by '密码';

    • create user '用户名'@'%' 表示网络可以通讯的所有ip地址都可以使用这个用户名

    • create user '用户名'@'192.168.12.%' 表示192.168.12.0网段的用户可以使用这个用户名

    • create user '用户名'@'192.168.12.87' 表示只有一个ip地址可以使用这个用户名

      create user 's21'@'192.168.12.%' identified by '123';
      用户连接:mysql -us21 -p123 -h192.168.12.87
  • 数据库授权:

    grant all on day37.* to 's21'@'192.168.12.%';

  • 授权并创建用户

    grant all on day37.* to 'alex'@'%' identified by '123';

  • 查看文件夹 :show databases;

  • 创建文件夹 :create database day37;

4.SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,。

  • SQL语言分为3种类型:

    • 1.DDL :数据库定义语言,创建库、创建表
    • 2.DML :数据库操纵语言,存数据,删除数据,修改数据,查看
    • 3.DCL :数据库控制语言,grant/revoke
  • 库操作:

    • 创建库 :create database 数据库名;
    • 查看当前有多少个数据库 :show databases;
    • 查看当前使用的数据库 :select database();
    • 切换到这个数据库(文件夹)下 :use 数据库的名字;
  • 表操作

    • 查看当前文件夹中有多少张表 :show tables;

    • 创建表 :create table 表的名字(字段名 数据类型(长度),字段名 数据类型(长度),……);

      create table student(id int,name char(4));  # char()默认为放1个字符
    • 删除表 :drop table student;

    • 查看表结构 :desc 表名;

  • 操作表中的数据

    • 数据的增加 :insert into 表名字 values (数据格式);

      insert into student values (1,'alex');
      
      insert into student values (2,'wusir');
    • 数据的查看 :select * from 表名字;

      select * from student;
    • 修改数据 :update 表名字 set 字段名=值

      update student set name = 'yuan'; # 会全部被修改
      
      update student set name = 'wusir' where id=2;
    • 删除数据 :delete from 表名字;

      delete from student where id=1;

show与select哪个后面加'()' ?

  • mysql中的函数:database(),user(),now(),concat(),password() —— 都是可以select的
  • show 后面跟的都不用加'()'

2.3 存储引擎

1.存储引擎

  • 什么是存储引擎?

    MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。

  • 常用存储引擎及其特点:

    • MyISAM :适合做读、插入数据比较频繁的、对修改和删除涉及少的,不支持事务、行级锁和外键,有表级锁,索引和数据分开存储的,mysql5.5版本以下默认的存储引擎

    • InnoDB :适合并发比较高的、对事务一致性要求高的,相对更适应频繁的修改和删除操作,有行级锁,外键且支持事务,索引和数据是存在一起的,mysql5.6版本以上默认的存储引擎

    • Memory :数据存在内存中,表结构存在硬盘上,查询速度快,重启数据丢失

2.表的存储方式:

  • 存储方式1:MyISAM 5.5版本以下 默认的存储方式

    • 存储的文件个数(3个):表结构、表中的数据、索引
    • 支持表级锁
    • 不支持行级锁 不支持事务 不支持外键
  • 存储方式2:InnoDB 5.6版本以上 默认的存储方式

    • 存储的文件个数(2个):表结构、表中的数据

    • 支持行级锁、支持表级锁

      行级锁 — 能够更好的处理并发的修改问题。

      注:在修改的数据行数比较多时,优先选择使用表级锁。

    • 支持事务

      把几句代码变成一个不可再分的原子型数据

      应用场景:用于与支付、金融相关

    • 支持外键

  • 存储方式3: MEMORY 存储到内存

    • 存储的文件个数(1个):表结构
    • 优势 :增删改查都很快
    • 劣势 :mysql服务端重启后数据消失、容量有限

索引(index) — 数据库的目录

查看配置项:show variables like '%engine%';

创建表:

  • create table t1 (id int,name char(4));
  • create table t2 (id int,name char(4)) engine=myisam; # 使用MyISAM存储引擎
  • create table t3 (id int,name char(4)) engine=memory; # 使用MEMORY存储引擎

2.4 数据类型

数据类型的种类:

  • 1.数值类型
  • 2.日期时间类型
  • 3.字符串类型
  • 4.ENUM和SET类型
2.4.1 数值类型

数值类型分为:整数 、小数

1.整数 int

create table t4 (id1 int(4),id2 int(11));

  • int默认是有符号的
  • 它能表示的数字的范围不被宽度约束
  • 它只能约束数字的显示宽度 ,如:显示范围—(-2 147 483 648,2 147 483 647)

create table t5 (id1 int unsigned,id2 int); # unsigned表示id1是没有符号的int

2.小数

<1.>float 是以二进制类型存储的

float(a,b) —— a:(不包含小数点)共保留几位 b:小数点后保留几位小数

create table t6 (f1 float(5,2),d1 double(5,2));

create table t7 (f1 float,d1 double);

create table t8 (d1 decimal,d2 decimal(25,20));

<2.>decimal 是以字符串的类型存储的

decimal 默认存储整数,所以一般会在后面加条件

2.4.2 日期时间类型

类型:

  • year 年
  • date 年月日
  • time 时分秒
  • datetime、timestamp 年月日时分秒

timestamp 默认不能为空,会自动填充时间

create table t9(
y year,d date,
dt datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
# 加上这句代码可以让datetime具有‘默认不能为空,会自动填充时间’的功能
ts timestamp);
2.4.3 字符串类型

常用字符串类型:

  • char(15) 定长的单位 (范围:0-255字节)

    alex:alex + 11个空(补够15位)

    alex 读取时会自动将空格去掉
  • varchar(15) 变长的单位 (范围:0-65535字节)

    alex:alex4 — 字符串后面跟一个字符串的长度,一共占用了5个字符

哪一个存储方式好?

  • varchar :节省空间、存取效率相对低,用于长度变化大的情况
  • char :浪费空间,存取效率相对高,用于长度变化小的情况

例:手机号码、身份证号 — 用 char

用户名、密码(限制在几位-几位之间,区间小) — 用 char

评论 、微博 、说说 、微信状态 — 用 varchar

create table t11 (name1 char(5),name2 varchar(5));

2.4.4 enum 和 set类型

enum:枚举类型,单选

set:多选、去重

create table t12(
name char(12),
gender enum('male','female'),
hobby set('抽烟','喝酒','烫头','洗脚')
); insert into t12 values('alex','不详','抽烟,喝酒,洗脚,洗脚,按摩');

python — mysql基础知识的更多相关文章

  1. MySQL基础知识:创建MySQL数据库和表

    虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...

  2. Python数据挖掘——基础知识

    Python数据挖掘——基础知识 数据挖掘又称从数据中 挖掘知识.知识提取.数据/模式分析 即为:从数据中发现知识的过程 1.数据清理 (消除噪声,删除不一致数据) 2.数据集成 (多种数据源 组合在 ...

  3. mysql基础知识大全

    前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是 ...

  4. mysql基础知识语法汇总整理(二)

    mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...

  5. mysql基础知识语法汇总整理(一)

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  6. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  7. MySQL基础知识:启动管理和账号管理

    整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...

  8. MySQL基础知识:Character Set和Collation

    A character set is a set of symbols and encodings. A collation is a set of rules for comparing chara ...

  9. python学习之-- Mysql 基础知识

    数据库介绍及MYSQL基础操作了解 关系型数据库(RDBMS)是按照数据结构来组织,存储和管理数据的仓库.特点:1:数据以表格的形式出现2:每行为各种记录名称3:每列为记录名称所对应的数据域4:许多的 ...

随机推荐

  1. python ros 设置机器人的位置

    #!/usr/bin/env python import rospy import math from tf import transformations from geometry_msgs.msg ...

  2. java编写网站数据抓取

    来公司已经俩月了,每天加班平均工时11个小时的我又想起了老东家温馨舒适安逸的生活.已经有好久没时间读博客写博客了,我觉得我退步了,嗯嗯,我很不开心 今天记录下抓数据的一些东西吧. 数据抓取现在是很普遍 ...

  3. kali系统firefox浏览器默认语言改为中文设置方法

    kali中的Firefox浏览器默认为英文,这对英语不够好的我来讲,自然是很麻烦的,下面讲一下如何将语言设置为中文. 1.打开终端,输入 apt -y install firefox-esr-l10n ...

  4. 5.3.3 自定义writable和RawComparatorWritable

    5.3.3 自定义writable (1)构造员工writable Hadoop虽然已经实现了一些非常有用的Writable,而且你可以使用他们的组合做很多事情,但是如果你想构造一些更加复杂的结果,你 ...

  5. pwn学习日记Day9 基础知识积累

    知识杂项 libc是Linux下的ANSI C的函数库. LOOKUP函数 数组形式:公式为= LOOKUP(lookup_value,array) 式中 array-包含文本.数字或逻辑值的单元格区 ...

  6. spring-boot学习 (Groovy与Spring Boot Cli)

    一.使用idea创建一个spring-boot项目,选择groovy语言 二.编写相应代码 1.创建实例类 package com.zhi.example class Man { Long id St ...

  7. 黑马vue---31-32、vue过滤器实例

    黑马vue---31-32.vue过滤器实例 一.总结 一句话总结: vue内部的东西,无论是过滤器还是组件,都是键值对的方式 1.过滤器的定义语法? Vue.filter('过滤器的名称', fun ...

  8. Truffle Smart Contract Error: Invalid number of parameter

      I followed the tutorial of quorum with truffle: https://truffleframework.com/tutorials/building-da ...

  9. How to Publish a NuGet Package

    How to Publish a NuGet Package Command line To push packages to nuget.org you must use nuget.exe v4. ...

  10. How do negative margins in CSS work and why is (margin-top:-5 != margin-bottom:5)?

    How do negative margins in CSS work and why is (margin-top:-5 != margin-bottom:5)? 解答   Negative mar ...