概述
目录
- 1 . 数据库的介绍
- 2. 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','不详','抽烟,喝酒,洗脚,洗脚,按摩');
转载于:https://www.cnblogs.com/yangjie0906/p/11312268.html
最后
以上就是单纯水壶为你收集整理的python — mysql基础知识的全部内容,希望文章能够帮你解决python — mysql基础知识所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复