day02 MySQL基本操作
day02 MySQL基本操作
昨日内容回顾
数据库演变史
1、纯文件阶段
2、目录规范
3、单机游戏
4、联网游戏
# 数据库就是一款帮助我们管理数据的程序
软件开发架构及数据库本质
cs架构与bs架构
其实数据本质就是一款cs架构的软件
数据库的分类
1、关系型数据库  # 需要有表结构的
	MySQL、mariadb、oracle、db2、sql server 、sqlite、postgresql
	sql server:微软公司的产品,主要应用于大中型企业,如联想、方正等。
	Oracle:主要用于银行、铁路、飞机场等。该数据库功能强大,软件费用较高。甲骨文公司的。
	MySQL:主要用于大型门户,例如搜狗、新浪等,它的主要优势是开放源代码,并且免费。
2、非关系型数据库  # 不需要表结构
	redis、mongodb、memcache
数据库下载与安装
数据库版本问题:5.5之后的版本都可以
官网下载:https://www.mysql.com/
系统服务制作
1、加入环境变量
2、以管理员身份添加系统服务,并执行:
	mysqld --install
3、第一次需要自己启动
	net start mysql
4、其余操作:
	停止服务:net stop mysql
	移除服务:mysql --remove
基本操作命令
1、查找数据库
	mysql> show databases;
2、连接数据库
	用root用户登入:mysql -uroot -p密码 -hIP地址 -P端口   # 默认端口3306
3、取消命令
	\c
4、退出命令
	quit;
	exit;
密码相关操作
修改密码两种方式:
1、在cmd命令窗口修改密码
	C:\Users\Lenovo> mysqladmin -uroot -p password 111
2、在客户端修改
	set password=PASSWORD('新密码')
配置文件
# 1.查看编码信息
	\s
# 2.配置文件
	mysql默认的配置文件  my-default.ini
    拷贝my-default.ini文件并修改为my.ini
# 3.添加配置信息,复制到my.ini
	[mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
# 4.重新服务端才能生效
	net stop mysql
    net start mysql
    mysql> \s  # 查看编码信息
主要概念
库		:文件夹
表		:文件夹里面的文件
记录		:文件夹里面的文件里面的一行行数据
数据		:事物的状态
今日内容
1、基本SQL语句
2、存储引擎
3、MySQL基本数据类型
基本SQL语句之库操作
1、增加
	create database 数据库名称;
	mysql> create database mqq;
2、查询
	mysql> show databases;   # 查所有
	mysql> show create database mqq;  # 指定数据库查询
3、修改
	alter database 数据库名称 charset='编码';  # 修改编码
	mysql> alter database mqq charset="gbk";   # 修改字符编码
4、删除
	drop database 数据库名称;    # 删除数据库
基本SQL语句之表操作
# 查看当前所在库名称
	mysql> select database();
# 切换数据库
	use 数据库名称;
1、增加
	# 格式:create table 表名(字段名称 字段类型)  # 创建表一定要给字段
	mysql> create table m1(id int);
2、查询
	mysql> show tables;           # 查询当前库下面所有的表名称
	mysql> show create table m1;  # 指定查询
	describe m1;  简写:desc 表名  # 查询表内容
3、修改
	alter table 表名 rename 新表名;
	mysql> alter table m1 rename m2;  # 修改表名称
	rename table m1 to m2;  # 修改表名称
4、删除
	drop table 表名;
	drop table m2;   # 删除表
基于SQL语句之记录操作
# 操作之前必须创建库和表
1、增加
	# 格式:insert into 表名 values('按照字段顺序一一传值(逗号隔开)');
	mysql> alter table m1 rename m2;   # 插入单条记录
	mysql> insert into m1 values(2,'dfdf'),(3,'hhh');   # 插入多条记录
2、查询
	# 格式:
        select * from 表名;  # 查询所有字段数据
        select 字段名1,字段名2 from 表名;  # 也可以通过库名.表名跨库
        '''如果字段过多导致展示错乱 还可以使用\G结尾分行展示'''
	select * from m1;  # 查询所有字段数据
	mysql> select * from mysql.user;   # 通过库名.表名跨库查询
	mysql> select * from mysql.user\G; # 通过\G格式化输出
3、修改
	update 表名 set 字段名=新值 where 字段名=存在的值  # where筛选条件
	mysql> update m1 set name='bai' where id=3;   # 修改距离
4、删除
	delete from 表名 where 字段名=存在的值  # where筛选条件
	mysql> delete from m1 where id=3;     # 删除数据
存储引擎
存储引擎:存储引擎就是处理数据底层逻辑 不同的引擎底层处理方式有所不同
1、查看存储引擎信息命令:
	show  engines;
2、需要掌握的引擎:
    (1)MyISAM
        是MySQL5.5版本之前默认的存储引擎
        该引擎存取数据的速度都很快
        但是安全性较低 不支持很多额外的功能
    (2)InnoDB
    	是MySQL5.5版本之后默认的存储引擎
        	该引擎支持事务、行级锁、外键
            存取数据的速度没有MyISAM快但是功能和安全性更高
    (3)memory
    	数据全部存储在内存中 速度很快但是断电立刻丢失
    (4)blackhole
    	黑洞 任何放入其中的数据都会消失(类似于垃圾处理站)
3、比较存储引擎之间的差异
	'''创建表可以指定存储引擎
	create table t1(id int) engine=存储引擎;
	'''
    create table t2(id int) engine=MyISAM;
    create table t3(id int) engine=InnoDB;
    create table t4(id int) engine=memory;
    create table t5(id int) engine=blackhole;
# 不同存储引擎文件后缀名
	MyISAM
		三个文件
        	.frm	表结构
            .MYD	表数据
            .MYI	表索引
   InnoDB
		两个文件
    		.frm	表结构
        	.ibd     数据与索引
   memory
		.frm	表结构
   blackhole
		.frm	表结构
# 插入数据演示
    insert into t2 values(1);
    insert into t3 values(1);
    insert into t4 values(1);   # 重启会消失数据
    insert into t5 values(1);   # 放入黑洞会消失
创建表的完整语法
create table 表名(
	字段名1 字段类型(数字) 约束条件,
    字段名2 字段类型(数字) 约束条件,
    字段名3 字段类型(数字) 约束条件
);
# 注意事项
	1.字段名和字段类型是必须的 数字和约束条件是可选
    2.约束条件可以有多个
    3.最后一个字段结尾不能有逗号(不容易发现)
数据类型
数据类型之整型
# 整型
	tinyint		1bytes
    smallint	2bytes
    int			4bytes
    bigint		8bytes
    '''不同类型的int能够存储的数字范围不一样'''
	# 验证不同类型的int是否会空出一个存储正负号
	create table m3(id tinyint);
	insert into m3 values(256),(-129); 
    # 得出结论:tinyint默认就会空出一位存储正负号
    # 结论:tinyint最大只能存储127字节,最小可以存储-128字节。
    """其实所有的int类型默认都是空出一位存储正负号"""
    # 约束条件:不加-符号
	create table m4(id tinyint unsigned);  # 约束条件
	insert into m4 values(256),(-129);
数据类型之浮点型
# 浮点型
	float(255,30)
    	总共255位小数位占30位
    double(255,30)
    	总共255位小数位占30位
    decimal(65,30)
    	总共65位小数占30位
例子:精确度不一样
    create table m5(id float(255,30));
    create table m6(id double(255,30));
    create table m7(id decimal(65,30));
    insert into m5 values(1.11111111111111111111111);
    insert into m6 values(1.11111111111111111111111);
    insert into m7 values(1.11111111111111111111111);
    # 结论
    '''三者精确度不同
    	decimal > double > float
    具体使用结合实际情况
    '''
数据类型之字符类型
char(4)  # 定长
最多存储四个字符 超出了则报错 没超出则用空格填充
varchar(4)  # 变长
最多存储四个字符 超出了则报错 没超出有几个存几个
案例:
    create table m8(id int,name char(4));
    create table m9(id int,name varchar(4));
    insert into m8 values(1,'mengqq');
    insert into m9 values(1,'mengqq');
SQL_MODE
1、模糊查询
	show variables like '%mode%';
2、修改
	set session
    set global
    直接修改配置文件  # 开启严格模式
    mysql> set global sql_mode='STRICT_TRANS_TABLES';  # 修改之后退出从新进,生效
研究数字在数字类型与字符类型中的区别
# 验证数字在数字类型中是否是用来限制存储长度
	create table m10(id int(3));
    insert into m10 values(111111);
# 结论:数字在数字类型中并不是用来限制存储长度 而是用来控制展示长度
	create table m11(id int(8) unsigned zerofill); # zerofill:零填充  当数字不够时,用零填充。
    insert into m11 values(1111);
    insert into m11 values(111111111);
结论:以后遇到数字类型不要指定数字 让他使用自带的即可
    create table m12(id int);  # int最多存10位。
char与varchar差异
# 1.验证char定长特性
	create table m11(id int,name char(5));    # 不足用0填充
    insert into m11 values(1,'tom');
    create table m12(id int,name varchar(5));  # 有几位存几位
    insert into m12 values(1,'tom');
1、统计某个字段数据对应的长度:char_length
	select char_length(name) from m11;
2、上述方法还是无法验证 需要先取消底层优化操作
	set global sql_mode='strict_trans_tables,pad_char_to_full_length'
3、重新插入一条到m11表
    insert into m11 values(2,b);
    select char_length(name) from m11;   # 查到是5
    select char_length(name) from m12;    # 查到是3
# 2.到底哪个好
	char
    	优势:整存整取 速度快
      	劣势:浪费存储空间
    varchar
    	优势:节省存储空间
    	劣势:存取数据的时候都需要先考虑报头 速度较于char慢
    char(6)  varchar(6)
    1bytes+jason1bytes+tony1bytes+jack1bytes+kevin
day02 MySQL基本操作的更多相关文章
- mysql 基本操作语句
		mysql 基本操作笔记: 创建表demo:CREATE TABLE `role` ( `role_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMME ... 
- css属性编写顺序+mysql基本操作+html细节(个人笔记)
		css属性编写顺序: 影响文档流的属性(比如:display, position, float, clear, visibility, table-layout等) 自身盒模型的属性(比如:width ... 
- 【mysql】mysql基本操作
		mysql基本操作 1.mysql表复制 mysql 表结构的复制 create table t2 like t2 mysql 表数据的复制 insert into t2 select * from ... 
- 数据库相关 Mysql基本操作
		数据库相关 设计三范式: 第一范式: 主要强调原子性 即表的每一列(字段)包含的内容,不能再拆分.如果,某张表的列,还可以细分,则违背了数据库设计的第一范式. 第二范式: 主要强调主键,即:数据库中的 ... 
- Mysql基本操作、C++Mysql简单应用、PythonMysql简单应用
		MySql基本操作 -- 当指定名称的数据库不存在时创建它并且指定使用的字符集和排序方式 CREATE DATABASE IF NOT EXISTS db_name CHARACTER SET UTF ... 
- day02 mysql基本语句 存储引擎 数据类型 完整性约束
		day02 mysql 一.sql的基本语句 系统数据库 information_schema: 虚拟库, 不占磁盘空间(在内存汇中): 存的是数据库启动后的一些参数, 如 ... 
- MySQL必知必会笔记-Mysql基本操作
		Mysql基本操作 mysql的基本操作包括增.删.改.查,本书中前三章简单的介绍MySQL为何物,查是mysql中非常重要的功能,4-6章展示了mysql的查(查询--select)的简单实现,my ... 
- MYSQL基本操作(上)
		很久之前,就想做个Mysql的小结,毕竟数据库知识是软件研发的基本技能,这里话不多说,开始总结一波. 数据库基本概念 数据库为高效的存储和处理数据的介质(主要分为磁盘和内存两种),一般关系型数据库存储 ... 
- MySQL(二) MySQL基本操作
		数据库的基本操作 启动关闭 MySQL 服务 MySQL 安装好后,默认是当 Windows 启动.停止时,MySQL 也自动.停止.不过,用户可以使用 Windows 下的服务管理器或从命令行使用 ... 
随机推荐
- 全志Tina_dolphin播放音视频裸流(h264,pcm)验证
			最近在验证tina对裸流音视频的支持,主要指h264视频裸流及pcm音频裸流. 在原始sdk中有针对很多video和audio类型的parser,但就是没有找到pcm和h264的parser,所以需要 ... 
- Kill杀死Linux中的defunct进程(僵尸进程)
			一.什么是defunct进程(僵尸进程)? 在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状 ... 
- Python 调用上级目录的文件
			程序结构如下: – src |-- mod1.py |-- lib | |-- mod2.py |-- sub | |-- test.py 具体代码如下: 在test.py里调用mod1 mod2 i ... 
- 前端面试手写代码——JS数组去重
			目录 1 测试用例 2 JS 数组去重4大类型 2.1 元素比较型 2.1.1 双层 for 循环逐一比较(es5常用) 2.1.2 排序相邻比较 2.2 查找元素位置型 2.2.1 indexOf ... 
- crond 任务调度
			crontab 进行定时任务的设置 任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: 系统工作:有些重要的工作必须周而复始地执行.如病毒扫描等 个别用户工作:个别用户可能希望执行某 ... 
- 『学了就忘』Linux基础命令 — 34、配置网络相关命令
			目录 1.配置网络常用命令 2.ifconfig命令 3.ping命令 4.netstat 命令 使用1:查看本机开启的端口 使用2:查看本机有哪些程序开启的端口 使用3:查看所有连接 使用4:查看网 ... 
- Vue.js教程  2.体验Vue
			Vue.js教程 2.体验Vue <!DOCTYPE html> <html lang="en"> <head> <meta charse ... 
- 【JAVA】编程(1)---计算器
			作业要求: 制作一个简易计算器,支持加,减,乘,除,取余五则运算:支持小数运算:一次运行支持无限次运算:可以人为控制程序的结束: import java.util.*; public class 计算 ... 
- Docker部署 Mysql .Net6等容器
			Centos8安装Docker 1.更新一下yum [root@VM-24-9-centos ~]# yum -y update 2.安装containerd.io # centos8默认使用podm ... 
- [cf1209E]Rotate Columns
			题意也可以理解为这样一个过程: 对于每一列,将其旋转后选出若干行上的数,要求与之前的行都不同 用$g_{i,S}$表示第$i$列选出的行数集合为$S$的最大和,$f_{i,S}$表示前$i$列$S$中 ... 
