python — mysql基础知识
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基础知识的更多相关文章
- MySQL基础知识:创建MySQL数据库和表
虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...
- Python数据挖掘——基础知识
Python数据挖掘——基础知识 数据挖掘又称从数据中 挖掘知识.知识提取.数据/模式分析 即为:从数据中发现知识的过程 1.数据清理 (消除噪声,删除不一致数据) 2.数据集成 (多种数据源 组合在 ...
- mysql基础知识大全
前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是 ...
- mysql基础知识语法汇总整理(二)
mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...
- mysql基础知识语法汇总整理(一)
mysql基础知识语法汇总整理(二) 连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...
- MySQL 基础知识梳理
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...
- MySQL基础知识:启动管理和账号管理
整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...
- MySQL基础知识:Character Set和Collation
A character set is a set of symbols and encodings. A collation is a set of rules for comparing chara ...
- python学习之-- Mysql 基础知识
数据库介绍及MYSQL基础操作了解 关系型数据库(RDBMS)是按照数据结构来组织,存储和管理数据的仓库.特点:1:数据以表格的形式出现2:每行为各种记录名称3:每列为记录名称所对应的数据域4:许多的 ...
随机推荐
- python ros 设置机器人的位置
#!/usr/bin/env python import rospy import math from tf import transformations from geometry_msgs.msg ...
- java编写网站数据抓取
来公司已经俩月了,每天加班平均工时11个小时的我又想起了老东家温馨舒适安逸的生活.已经有好久没时间读博客写博客了,我觉得我退步了,嗯嗯,我很不开心 今天记录下抓数据的一些东西吧. 数据抓取现在是很普遍 ...
- kali系统firefox浏览器默认语言改为中文设置方法
kali中的Firefox浏览器默认为英文,这对英语不够好的我来讲,自然是很麻烦的,下面讲一下如何将语言设置为中文. 1.打开终端,输入 apt -y install firefox-esr-l10n ...
- 5.3.3 自定义writable和RawComparatorWritable
5.3.3 自定义writable (1)构造员工writable Hadoop虽然已经实现了一些非常有用的Writable,而且你可以使用他们的组合做很多事情,但是如果你想构造一些更加复杂的结果,你 ...
- pwn学习日记Day9 基础知识积累
知识杂项 libc是Linux下的ANSI C的函数库. LOOKUP函数 数组形式:公式为= LOOKUP(lookup_value,array) 式中 array-包含文本.数字或逻辑值的单元格区 ...
- spring-boot学习 (Groovy与Spring Boot Cli)
一.使用idea创建一个spring-boot项目,选择groovy语言 二.编写相应代码 1.创建实例类 package com.zhi.example class Man { Long id St ...
- 黑马vue---31-32、vue过滤器实例
黑马vue---31-32.vue过滤器实例 一.总结 一句话总结: vue内部的东西,无论是过滤器还是组件,都是键值对的方式 1.过滤器的定义语法? Vue.filter('过滤器的名称', fun ...
- Truffle Smart Contract Error: Invalid number of parameter
I followed the tutorial of quorum with truffle: https://truffleframework.com/tutorials/building-da ...
- 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. ...
- 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 ...