MySQL数据库的安装以及python的调用

MySQL数据库安装

MySQL官网
下载地址

免安装

1、在官网上下载此版本
在这里插入图片描述
2、解压放入无中文路径下,以管理员身份在bin目录下运行命令提示符,输入mysqld --install,如下图为安装成功提示(如果出现提示缺少库,可以使用工具everything查找,尝试放入bin下,再执行)
在这里插入图片描述
3、输入mysqld --initialize --console,下图蓝框为初始化产生的随机密码,需要记住
在这里插入图片描述
4、输入net start mysql,开启MySQL服务
在这里插入图片描述
5、登录验证,输入mysql -u root -p,再输入刚刚产生的随机密码,如下图则表示成功
在这里插入图片描述
6、修改密码,输入alter user ‘root’@‘localhost’ identified by ‘root’,修改密码为root
在这里插入图片描述
7、再次验证
在这里插入图片描述
8、配置系统变量
创建系统变量:
在这里插入图片描述
在path中添加变量:
在这里插入图片描述
9.创建配置文件
在这里插入图片描述

[mysqld]
character-set-server=utf8mb4
bind-address=0.0.0.0
port=3306
default-storage-engine=INNODB
[mysql]
default-character-set=utf8mb4
[client]
default-character-set=utf8mb4

mysql数据库概念

数据类型:

数值类型大小范围用途
tinyint1字节(-128,127)或(0,255)小整数值
int4字节(-2147483648, 2147483647) 或 (0,4294967295)大整数值
float4字节单精度浮点型
double8字节双精度浮点型
字符串类型大小用途
char0-255字节定长字符串
varchar0-255字节变长字符串
text0-65535字节长文本数据
longtext0-4294697295字节极大文本数据

char和varchar的区别

  • char执行效率高于varchar
  • varchar相对于char节省空间
  • varchar类型传入的值小于给定的长度 不会使用空格填充

约束条件:

  • primary key 主键, 全表唯一值. 就像学号. 身份证号. 能够唯一的确定一条数据
  • auto_increment 主键自增.
  • not null 不可以为空.
  • null 可以为空
  • default 设置默认值

数据库与表的关系
在这里插入图片描述

MySQL数据库命令

基本命令
// 显示所有数据库
show databases;

// 创建数据库 testdatabase
create database testdatabase;

// 使用数据库testdatabase
use testdatabase;

// 显示所有表
show tables;
创建表
mysql> create table testnum(
    -> ttinyint tinyint,
    -> tint int,
    -> tfloat float(6,2),
    -> tdouble double(6,2)
    -> );            # 加分号表示结束
'''
> create table if not exists 表名(
>
> 字段名称 字段类型 约束条件 字段说明,
>
> 字段名称 字段类型 约束条件 字段说明,
>
> ...
>
> )
'''
插入数据
  1. 指定字段添加值
insert into 表名(字段1,字段2....) values(1,2...)
insert into user(sex,username) values(0,'lucky');
  1. 不指定字段添加值
insert into 表名 values(1,2...)
insert into user values(null,0,'lucky','hello');
  1. 指定字段添加多个值
insert into 表名(字段1,字段2....) values(1,2...),(1,2...)...
insert into user(sex,username) values(1,'苍苍'),(0,'蒹葭');
  1. 不指定字段添加多个值
 insert into 表名 values(1,2...),(1,2...)...
 insert into user values(null,1,'xxx','xxx'),(null,0,'xxl','xxl');

指定字段与不指定字段在添加值的时候 按照从左至右依次对应给值

查询数据
  1. 不指定字段的查询(查看全部)
   select * from 表名
  1. 指定字段的数据查询
  select 字段名1,字段名2... from  表名
  select  username,userinfo from user;
  1. 对查询的字段起别名
  select username as u from user;
  select username  u from user;
修改数据
  1. 修改一个字段的值
	update 表名 set 字段名=;
	update user set username='lucky' where id = 3;
  1. 修改多个字段的值
	update 表名 set 字段名1=1,字段名2=2...;
	update user set sex=0,userinfo='xxx的个人简介' where id=7;
  1. 给字段的值在原有的基础上改变值
	update user set sex=sex+2;

在进行数据的修改的时候 一定记得给定where条件 如果没有给定where条件 则修改的为整张表当前字段的值

删除数据
delete from 表名 [where ...]
delete from user; // 删除user表中所有的数据 
truncate 表名;    // 清空表数据 

删除 一定注意添加 where 条件 否则会删除整张表中的数据 并且auto_increment自增所记录的值不会改变 所以需要将自增归位

where条件
比较运算符
  1. >
 // 将id大于5 的性别 更改为0 年龄改为20岁
 update user set sex=0,age=20 where id>5;
  1. <
   // 将id小于3 的性别 更改为0 年龄改为23岁
   update user set sex=0,age=23 where id<3;

   // 查看id小于4的 性别和用户名的字段数据
   select sex,username from user where id<4;
  1. >=
  // 删除 id大于等于6的数据
  delete from user where id>=6;
  1. <=
	// 查询年龄小于等于23的数据
    select * from user where age<=23;
  1. =
	//查询性别为0的数据
    select * from user where sex=0;
  1. !=/<>
	// 查询 用户名不等于lucky的所有数据
    select * from user where username!='lucky';
    select * from user where username<>'lucky';
逻辑运算符
  1. and 逻辑与 俩侧为真结果为真
// 查询年龄在18到23之间 不包括本身
select * from user where age>18 and age<23;

// 修改年龄为30 id大于1 小于等于2
update user set age=30 where id>1 and id<=2;
  1. or 逻辑或运算 俩侧条件满足一侧就可以
  select * from user where age=10 or age=30;
  select * from user where age>=10 or age<=30;
升序/降序
// 查询数据 按照年龄升序(默认)
select * from user order by age;
select * from user order by age asc;

// 查询数据 按照年龄降序
select * from user order by age desc;
limit 取值
// 取出3条数据
select * from user limit 3;

// 取出年龄最大/最小的一条数据
select * from user order by age desc limit 1;
select * from user order by age limit 1;
like 模糊查询
// 查询以三字为结束的username的数据
select * from user where username like '%三';

// 查询以赵字为开头的username的数据
select * from user where username like '赵%';

// 查询 userinfo中包含的数据
select * from user where userinfo like '%sea%';
聚合函数
  1. count 统计个数
  2. max 最大值
  3. min 最小值
  4. Sum 求和
  5. avg 求平均数
select count(*) as count,max(age),min(age),avg(age),sum(age) from user;
数据库的导入导出
// 导入
mysql -uroot -p 库名<demo.sql  

// 导出
mysqldump -uroot -p 库名>demo.sql

MySQL的图形化界面工具 推荐用Navicat

python操作数据库

1、下载模块pymysql

pip3 install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述
2、代码案例

import pymysql

# 连接数据库
db = pymysql.connect(host='localhost', port=3306, user='root', password=, database='test')

# 设置字符编码
db.set_charset('utf8')

#创建游标对象  用于下面的操作
cursor = db.cursor()
# sql语句执行
# 查询
sql = 'select * from user'
# 执行SQL语句
cursor.execute(sql)
# 获取所有
print(cursor.fetchall())
# 获取一条
print(cursor.fetchone())

try:
    # 插入数据
    sql = 'insert into user values(null, "sea", 18, 1)'
    cursor.execute(sql)
    print(cursor.rowcount)  # 受影响的行数
    db.commit()             # 提交事务
except:
    db.rollback()   # 回滚事务

navicat的使用

在这里插入图片描述
1、下载navicat
2、连接MySQL数据库,如果提示错误代码为1251的提示,原因如下:

# mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password

解决方案
1、输入命令 mysql -u root -p 登录MySQL数据库
2、更改加密方式

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

3、由于加密规则更改,所以需要重新设置密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

4、刷新数据库

FLUSH PRIVILEGES;

5、navicat重新连接数据库

之后的增删改查较简单,不再赘述。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值