2021-7-27-python学习日志——MySQL

昨天内容回顾

  • 数据库分类

    	数据库的本质是一个C/S的架构软件,那就必须有服务端和客户端
    	
    	1. 关系型数据库
    		固定的表结构, 可以建立表与表之间的关系
    		常见数据库:MySQL(开源的, 硬盘), Oracle(商业版), sqllie,db2, SQLserver,access
    	2. 非关系型数据库
    		没有固定的表结构,以k:v键值对的形式存储
    		常见非关系型数据库:redis(缓存, 内存), memcache, mongodb
    	    
    	    热数据:经常被访问的
    	    冷数据:不经常用
    
  • 下载与安装

    	"""
    	1.官网下载安装包
    	2.解压zip文件
    		bin
    			mysql.exe  自带的客户端
    			mysqld.exe	服务端   
    			一定要先启动服务端,客户端去连接
    		data
    			文件夹,一个文件夹代表一个库
    			一个数据表有几个文件?
    			文件的数据取决于存储引擎
    	3.加入环境变量
    		把bin目录的路径加入到环境变量中,
    	4. 制作系统服务
    		添加服务:mysqld --install
    		删除服务:mysqld --remove
    		启动服务:
    				进入服务的三种方式:
    					1. 在任务栏右键
    					2. windows + r => services.msc
    					3. 在我的电脑 => 右键  => 管理
    				1. 鼠标点点点
    				2. net start mysql
    		关闭服务:
    			net stop mysql
    				
    	"""
    
  • 重要概念

    	数据库的组成部分:
    		库   =》文件夹
    	    表	=>  文件
    	    记录	=》 文件里的数据
    	    字段	=> 表头 
    
  • 配置文件

    	文件名:my-default.ini  =>  my.ini
    	
    	\s;  查看mysql的基本信息
    	
    	强调:只要改变了配置文件,都要重启服务端
    
  • 库的增删改查

    	注意: 每一个sql语句,都要以;结尾
    	1. 查看所有库:
    		show databases;
    	2. 创建库:
    		 create database  库名 charset='utf-8';
    	3. 删库:
    		 drop database 库名;
    
  • 表的增删改查

    	1. 查看所有表:
    		show tables;
    	2. 先切库:
    		use 库名;
    	   	如果不use, 指定库名,  mysql.user
    	3.  创建表:
    		create table t1 (id int, name varchar(4), age int);
    	4. 查看表结构
    		desc t1;
    	    show create table t1;
    	5.  修改:
    		alter table t1 rename userinfo;
    	    alter table t1 modify name varchar(16);
    	6.  删表:
    		drop table t1; 
    	    
    	面试题:
    		如何给已经存有100w的数据,增加一个字段?
    	    
    	上线流程:
    		1. 准备你的sql语句
    	    2. 把你的代码提交到git仓库中
    	    3. 注意:上线之前一定要先上表,在上代码。
    	 
    
  • 记录的增删改查

    	1. 查询数据
    		select * from t1;
    	    select id, name, age from t1;  (推荐)
    	2. 增加数据
    		insert into t1 (id, name, age) values (1, 'wkj', 18);
    	    insert into t1 (id, name, age) values (2, 'www', 19), (3, 'WWW', 20);
    	
    	3.修改数据
    		update `t1` set `name`='wkj' where id=1;
    	4. 删除数据
    		delete from t1 where id=1;
    

今日内容概要

	1.存储引擎

	2.数据类型
	3.整型:
	  	tinyint   smallint  int  bigint
	4.浮点型
	  	float  double  decimal 
	5.字符串
	  	char  varchar
	6.日期类型
	  	datetime   年月日  时分秒
	      time		时分秒
	      date		年月日
	      year		年份
	7.枚举和集合
	     enum  set 
	8.创建表的完整语句

  • 约束条件

    		 在已有条件的基础上在做限制
    		 1.zerofill
    		 2.unsigned
    		 3.not null 
    		 4.primary key 
    		 5.auto_increment
    		 6.foreign_key
    		 7.unique 
    		 8.default
    
  • 存储引擎

    	# 就是存储数据的方式
    	# 如何查看存储引擎?  都有哪些存储引擎?
    		show engines;
    	   
    	MyISAM:
    		mysql5.5版本及之前的版本默认引擎
    	    查询速度比InnoDB快, 安全性低
    		# 不支持事务
    	    # 表级锁
    	    
    	InnoDB
    		mysql5.6及之后的版本默认引擎
    	    查询速度比MyISAM慢, 安全性高
    	    # 功能:
    	    	1. 支持事务
    	        2. 行级锁
    	        3. 外键
    	        
    	MEMORY  => 内存
    		# 数据是在内存中
    	    
    	面试题:
    		MyISAM和InnoDB引擎的区别?
    			 
    	# 指定引擎
    		create table t2 (id int) engine='MyISAM';
    	    create table t3 (id int) engine='InnoDB';
    	    create table t4 (id int) engine='MEMORY';
    	    
    	MyISAM
    		.frm  =>  表结构
    	    .MYD  =>   表数据
    	    .MYI  =>   索引(目录)优点:查询速度快
    	
    	InnoDB
    		.frm  => 表结构
    	    .ibd  => 表数据和索引
    	
    	MEMORY
    		.frm  => 表结构
    
  • 数据类型之整型

    	tinyint smallint int bigint
    	# 他们之间的区别就是存储数据的范围不一样
    	
    	# 验证整型默认是否带符号
    		create table t6 (id tinyint);
    	    insert into t5 values(-129), (256);
    	# 结论:所有的整型默认都是带符号的。
    
    
  • 数据类型之浮点型

    
    	float double decimal
    	
    	# float(8, 2)  999999.99
    	float(255,30)
    		总共255位,小数30位
    	double(255,30)
    		总共255位,小数30位
    	decimal(60,30)
    		总共60位,小数30位
    	    
    	    
    	create table t6 (id float(255,30));
    	create table t7 (id double(255,30));
    	create table t8 (id decimal(60,30));
    	
    	
    	insert into t6 values(1.11111111111111111111111111);
    	insert into t7 values(1.11111111111111111111111111);
    	insert into t8 values(1.11111111111111111111111111);
    	
    	# 精确度不一样
    	decimal > double > float
    	
    	
    	设计表注意:
    		1、 表结构中的数据类型
    	    2、该表中上线之后可能会产生多少数据量?order
    
    
  • 数据类型之字符串

    	# 两种字符串括号中的数字必须写, 代表存储字符串的长度
    	char(4)
    	存储4位,不够的空格补齐4位,超过4位的报错
    	# 优点
    		查询速度快, 整存整取
    	# 缺点
    		浪费空间
    	varchar(4)
    	存储4位,有几位存几位,超过的报错
    	
    	# 优点:
    		节省空间
    	# 缺点
    		查询速度比char慢
    	
    	    char(4)  varchar(4)
    	   
    	   pack(2) => 1  pack(10) => 1
    		
    	    unpack(1) => 2   unpack(1) => 10
    	1byteskevin1bytesegon1bytesjasonlytom
    	    
    	
    	# 验证
    	create table t10 (id int, name char(4));
    	create table t9 (id int, name varchar(4));
    	
    	insert into t10 values(1, 'wkj');
    	insert into t9 values(1, 'wkj');
    
    
  • 数据类型之日期类型

    	datetime
    	date
    	time
    	year
    	
    	# 
    	create table t12 (id int,  r1_time datetime, r2_time date, r3_time time, r4_time year);
    	
    	#
    	insert into t12 values (1, '2021-7-27 11:11:11','2021-7-27','11:11:11','2021');
    
  • 数据类型之枚举

    	# 枚举  多选一
    	
    	create table t13 (
    		id int,
    	    gender enum('male', 'female', 'other')
    	);
    	
    	# 
    	insert into t13 values (1, 'male');
    
  • 数据类型之集合类型

    	# 集合
    	create table t14 (
    	   	id int,
    	       hobby set('read', 'music', 'football', 'lm')
    	   );
    	#
    	insert into t14 values(1, 'read');
    
    
  • 创建表的完整语句

    	create table 表名 (
    		字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3,
    		字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3,
    	    字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3,
    	    字段名  数据类型(长度) 约束条件1 约束条件2 约束条件3
    	)
    	
    	# 注意:
    		1. 表中字段名和数据类型是必填项, 约束条件是可选的
    	    2. 约束条件可以有多个,依次往下写
    	    3. SQL语句的最后一个不能加逗号(,

参考:存储引擎:https://www.cnblogs.com/linhaifeng/articles/7213670.html
数据类型:https://www.cnblogs.com/linhaifeng/articles/7233411.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值