首页 > 数据库 >python四十期--mysql

python四十期--mysql

时间:2022-11-23 17:48:11浏览次数:39  
标签:insert python create -- values mysql table into

昨日内容回顾

  • 存取数据演变史

    1.文本文件
    2.目录规范
    3.数据库
    ps:数据处理统一
    
  • 数据库应用史

    1.本地存储
    2.网络存储
    ps:数据库集群
    
  • 数据库本质

    数据库在不同的场景下可能表达的意思不一样 一般情况下指代的是数据库软件
    数据库软件的本质其实就是CS架构的应用程序
    
  • 数据库的分类

    1.关系型数据库
    	固定的表结构、数据可以建立数据库层面的关系
    		MySQL、Oracle、PostgreSQL、MariaDB、sqlite、sql server
    2.非关系型数据库
    	没有固定的表结构、数据无法建立数据库层面的关系
        	redis、mongoDB、memcache
    
  • MySQL简介

    1.版本问题
    2.下载与安装
    3.目录介绍
    
  • MySQL基本使用

    1.先启动服务端
    2.再启动客户端
    ps:启动过程中可能会报错
    
  • 系统服务制作

1.bin目录添加环境变量
2.执行添加系统服务的命令
	mysqld --install
3.首次需要人为启动
	net start mysql
"""
  net stop mysql
  mysqld --remove
"""
  • 密码相关操作

    1.修改密码
    	mysqladmin -u用户名 -p旧密码 password 新密码
    	set password=password('新密码')
    
    2.忘记密码
    	net stop mysql
    	mysqld --skip-grant-table
    	mysql -uroot -p
    	update mysql.user set password=password('新密码') where Hots='localhost' and User='root';
     	exit
     	net start mysql
    
  • SQL与NoSQL

    SQL语句
    	统一操作
    NoSQL语句
    	统一操作
    
  • 数据库重要概念

    库、表、记录
    
  • 基本SQL语句

1.SQL语句以分号结束
2.数据展示错乱可以在SQL语句结尾加\G
-----------------------------------------
show databases;
create database db1;
show create database db1;
alter database db1 charset='gbk';
drop database db1;
-----------------------------------------
use db1;
show tables;
create table t1(id int);
show create table t1;
desc t1;
describe t1;
alter table t1 rename userinfo;
-----------------------------------------
select * from userinfo;
select id,name from userinfo;
insert into userinfo values(1,'jason');
insert into userinfo values(1,'jason'),(2,'kevin'),(3,'tony');
update userinfo set name='jason666' where id=1;
delete from userinfo;
delete from userinfo where id > 3;

.
.

今日内容概要

  • 字符编码与配置文件
  • 数据库存储引擎
  • 创建表的完整语法
  • MySQL字段基本数据类型
  • MySQL字段常见约束条件

补充:windows cmd 窗口中
cls命令是清屏命令,一般是在屏幕窗口中的内容较多的时候使用。
执行该命令后,屏幕上的所有信息都被清除,光标重新定位至屏幕左上角。

今日内容详细

字符编码与配置文件

1.\s查看MySQL相关信息

	当前用户、版本、编码、端口号
MySQL5.6及之前的版本编码需要人为统一,之后的版本已经全部默认统一
-------------------------------------------
如果想要永久修改编码配置 需要操作配置文件
2.默认的配置文件是  my-default.ini
	拷贝上述文件必须并重命名为  my.ini
-------------------------------------------
直接拷贝字符编码相关配置即可无需记忆
[mysqld]    # 表示服务端的配置
    character-set-server=utf8mb4  # 服务端将来采用utf8的编码方式
    collation-server=utf8mb4_general_ci
[client]   # 表示第三方的客户端
    default-character-set=utf8mb4  # 客户端将来采用utf8的编码方式
[mysql]   # mysql自己的客户端
    default-character-set=utf8mb4  # 客户端将来采用utf8的编码方式
补充:
1.utf8mb4能够存储表情 功能更强大
2.utf8与utf-8是有区别的 MySQL中只有utf8
-------------------------------------------
修改了配置文件中关于[mysqld]的配置,需要重启服务端!!!
管理员模式重新打开cmd,  net stop mysql 先停止服务端的运行
再启动服务端 net start mysql
再重新登录客户端,就能看成编码被改掉了
---------
修改了配置文件中关于[client]的配置或者[mysql]的配置,就不需要重启服务端
-------------------------------------------

.
mysql 5.6 版本内部默认编码就是混乱的,既有拉丁编码又有gbk编码,会可能产生乱码
image
.修改配置文件,先停止mysql的系统服务,再启动mysql的系统服务。再登录客户端,\s查看信息时就能看到编码被改掉了!!!就不会出现乱码的情况了!!!
image
.
在服务端的配置文件里面加一行 print('hello world'),退出服务端,在进入服务端

.
image

注意在配置文件中[mysql]下面,针对mysql的配置,每一次输入mysql客户端相关的命令时,都会加载配置文件中[mysql]下面的配置,所以一旦加载到不认识的命令时,就会报错!!导致登录不进去了

image
.
.

利用配置文件我们可以偷懒!!!!!!

	将管理员登录的账号密码直接写在配置文件中,这样使用mysql登录就直接变成管理员登录了,而不是游客模式登录了!!!
[mysql]
	default-character-set=utf8mb4
	user='root'
	password=222

image
.
.
.

数据库存储引擎

补充:MySQL默认忽略英文的大小写,也可以改,但不推荐改!

存储引擎:  数据库针对数据采取的多种存取方式
-----------------------------
查看mysql能够切换的引擎名称 的命令     show engines;
-----------------------------
需要了解的四个存储引擎
MyISAM
	MySQL5.5之前默认的存储引擎!!!!!!
	存取数据的速度快 但是功能较少 安全性较低!!!!!!
-------------------------------------------
InnoDB
	MySQL5.5之后默认的存储引擎!!!!!!
	支持事务、行锁、外键等操作 存取速度没有MyISAM快 但是安全性更高!!!
--------------------------------------------
Memory
	基于内存存取数据 仅用于临时表数据存取!!!!!!
--------------------------------------------
BlackHole
	任何写入进去的数据都会立刻丢失!!!!!!
	主要做一些集群备份的时候数据的处理(了解即可)
--------------------------------------------

查看mysql能够切换的引擎名称!!!
image
.

了解不同存储引擎底层对应的文件个数

create database helloworld;
use helloworld;
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=memory;
create table t4(id int) engine=blackhole;
-------------------------------------------------------
1.innodb引擎 对应两个文件
	.frm	表结构
	.ibd	表数据与表索引(加快数据查询的)
------
2.myisam引擎 对应三个文件  由于分工分的更细,所以速度比innodb快点
	.frm	表结构
	.MYD	表数据
	.MYI	表索引
------
3.memory引擎 对应一个文件 由于是基于内存存储数据的,所以不需要有表数据文件,有一个表结构文件就行了
	.frm	表结构
------
4.blackhole引擎 对应一个文件
	.frm	表结构
-------------------------------------------------------
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);  # 内存清掉,插入的数据就没了
insert into t4 values(1);  # 往里面插入任何数据,数据都会丢!!!

image
.
image
.
.表t3由于用的引擎是memory,该引擎是基于内存的,所以把服务端关掉内存就清掉了,再重新登录一下,t3里面刚刚插入的数据就没了!!!
image
.
.
文件:是操作系统暴露给用户操作硬盘的快捷方式!!!
.
.
.

创建表的完整语法

create table 表名(
	字段名 字段类型(数字) 约束条件,
	字段名 字段类型(数字) 约束条件,
	字段名 字段类型(数字) 约束条件
);
-------------------------------
字段比较多可以换行编写!!!
注意事项:
1.字段名和字段类型是必须的!!!
2.数字和约束条件是可选的!!!
3.约束条件也可以写多个,空格隔开即可!!!
4.最后一行结尾不能加逗号!!!
--------------------------------
ps:编写SQL语句报错之后不要慌 仔细查看提示 会很快解决
	near ')' at line 7





。。

字段类型之整型

tinyint			1bytes			正负号(占1bit)
smallint		2bytes			正负号(占1bit)
int			   4bytes		   正负号(占1bit)
bigint			8bytes			正负号(占1bit)

验证整型默认是否携带正负号
	create table t5(id tinyint);
	insert into t5 values(-129),(128);
结果是-128和127 也就意味着默认自带正负号

我们也可以取消正负号
	create table t6(id tinyint unsigned);
 	insert into t6 values(-129),(128),(1000);

严格模式

当我们在使用数据库存储数据的时候 如果数据不符合规范 应该直接报错而不是擅自修改数据 这样会导致数据的失真(没有实际意义)
	正常都应该报错 但是我们之前不小心改了配置文件
 
show variables like '%mode%';

1.临时修改
	set session sql_mode='strict_trans_tables';
    	在当前客户端有效
 	set global sql_mode='strict_trans_tables';
    	在当前服务端有效
2.永久修改
	直接修改配置文件

字段类型之浮点型

float(20,10)
	总共存储20位数 小数点后面占10
double(20,10)
	总共存储20位数 小数点后面占10
decimal(20,10)
	总共存储20位数 小数点后面占10

create table t7(id float(60,20));
create table t8(id double(60,20));
create table t9(id decimal(60,20));
insert into t7 values(1.11111111111111111111);
insert into t8 values(1.11111111111111111111);
insert into t9 values(1.11111111111111111111);

三者的核心区别在于精确度不同
	float	<	double  < 	decimal

字段类型之字符类型

char
	定长
    	char(4)  最多存储四个字符 超出就报错 不够四个空格填充至四个
varchar
	变长
    	varchar(4) 最多存储四个字符 超出就报错 不够则有几位存几位
    
create table t10(id int, name char(4));
create table t11(id int, name varchar(4));
insert into t10 values(1, 'jason1');
insert into t11 values(1, 'jason2');

ps:char_length()获取字段存储的数据长度
默认情况下MySQL针对char的存储会自动填充空格和删除空格

set global sql_mode='strict_trans_tables,pad_char_to_full_length';



char VS varchar
    char
        优势:整存整取 速度快
        劣势:浪费存储空间
	 varchar
    	  优势:节省存储空间 
       	 劣势:存取数据的速度较char慢
jacktonyjasonkevintomjerry
1bytes+jack1bytes+tony1bytes+jason1bytes+kevin1bytes+tom1bytes+jerry
"""
char与varchar的使用需要结合具体应用场景
"""

数字的含义

数字在很多地方都是用来表示限制存储数据的长度 
	但是在整型中数字却不是用来限制存储长度
 
create table t12(id int(3));  不是用来限制长度
insert into t12 values(12345);

create table t13(id int(5) zerofill);  而是用来控制展示的长度
insert into t13 values(123),(123456789);

create table t14(id int);

"""以后写整型无需添加数字"""

字段类型之枚举与集合

枚举
	多选一
	create table t15(
    	id int,
      	name varchar(32),
       gender enum('male','female','others')
    );
 	insert into t15 values(1,'tony','猛男');
  	insert into t15 values(2,'jason','male');
 	insert into t15 values(3,'kevin','others');

集合
	多选多(多选一)
	create table t16(
    	id int,
      	name varchar(16),
       hobbies set('basketabll','football','doublecolorball')
    );
 	insert into t16 values(1,'jason','study');
 	insert into t16 values(2,'tony','doublecolorball');
	insert into t16 values(3,'kevin','doublecolorball,football');

字段类型之日期类型

datetime		年月日时分秒
date			年月日
time			时分秒
year			年

create table t17(
	id int,
  	name varchar(32),
 	register_time datetime,
 	birthday date,
 	study_time time,
 	work_time year
);
insert into t17 values(1,'jason','2000-11-11 11:11:11','1998-01-21','11:11:11','2000');
ps:以后涉及到日期相关字段一般都是系统自动回去 无需我们可以操作

标签:insert,python,create,--,values,mysql,table,into
From: https://www.cnblogs.com/tengyifan888/p/16919148.html

相关文章

  • 补档--【THM】SSRF(服务器端请求伪造漏洞)-学习
    本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/ssrfqi通过学习相关知识点:了解如何利用服务器端请求伪造(SSRF:Server-SideRequestForgery)漏洞,从而允许......
  • isBlank、isEmpty的关于String字符串进行判空的区别(源码角度分析)
    现在判空一般都用StringUtils这个工具类,是apache.lang包下面的一般是isBlank用的会多一点但是我们先看看isEmpty()的源码1publicstaticbooleanisEmpty(finalCharS......
  • 安卓读取手机短信
    上次接了一个项目,大致意思是一个页面,有六个输入(EditText),以及两个Button,一个button用于读取短信,并处理读取的信息填充至六个EditText里面,另外一个按钮用于清除掉六个EditTe......
  • 核心交换机配置DHCP服务,这篇文章有详细的步骤和命令
    动态主机配置协议DHCP(DynamicHostConfigurationProtocol)是一种用于集中对用户IP地址进行动态管理和配置的技术。 下面我为大家整理了非常详细的配置步骤和命令,仅供......
  • js011-添加标签的两种方式
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>添加标签</title></head><bodystyle="width:1080px;margin:0auto;"><divid="i1">......
  • 配置文件 数据库存储引擎 严格模式 MySQL字段基本数据类型
    目录字符编码与配置文件\s查看MySQL相关信息修改配置文件my-default.ini解决5.6版本字符编码问题配置文件什么时候加载?偷懒操作:输入mysql直接登录root账户数据库存储引擎存......
  • ES集群中出现UNASSIGNED分片时的解决思路
    原文:https://www.modb.pro/db/182864引入此问题的原因,是因为在单节点的ES部署策略中,如果在设置某个ES索引的replica不为零,你会发现。存在Unassigned的状态出现。一般开发......
  • 内部类
    我们把一个类放在另一个类的内部定义,称为内部类(innerclass)。内部类的两个要点:内部类提供了更好的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。......
  • 运行AWS报错:No module named awscli.clidriver
    Windows环境安装了AWSCLI,python3暗转了awscli但是powershell运行awshelp报错:Nomodulenamedawscli.clidriver打开报错源头:@echoOFFREM="""setlocalsetPython......
  • FastAPI项目的Nginx配置
    前景:已经使用supervisor把FastAPI开发的后端服务挂载到端口上Nginx的配置如下:upstreamhuiyuan_api{server127.0.0.1:9120;}server{server_namehui.wak......