Mysql问题汇总&学习记录1:简单的sql语句;库、表操作以及Mysql基本数据类型

Mysql问题汇总&学习记录1

utf8和utf8mb4有什么区别? - 知乎 (zhihu.com)

设置Mysql永久统一编码问题:(2条消息) MySQL5.7永久统一编码/字符集为utf8(解决乱码)_mysql 5.7.29 utf8 乱码_NekoSheep的博客-CSDN博客

一篇搞懂mysql字符集编码配置及修改方法 - 掘金 (juejin.cn)

这里我暂时未修改,因为有的博主说不用修改,并且utf8存在一些问题,我就暂时没改。

我发现最新版本MySQL自带的Command Line Client 自带两种版本,一种是不带后缀的- Unicode版本,一种是自带-Unicode版本。原来-Unicode版本已经帮我们统一了编码。所以该问题我们现在是不需要去考虑的。(如下两张的对比图)

在这里插入图片描述
在这里插入图片描述
由此我们可以得知,我们在后续使用时,可直接使用-Unicode版本的操作台,以避免可能出现的字符乱码的问题。


sql语句:

操作文件夹(库)

​ 增:create database db1 charset utf8;

​ 查:show create database db1;

​ 改:alter database db1 charset gbk;

​ 删:drop database db1;

操作文件(表)

​ 切换文件夹:use db1;

​ 查看当前所在文件夹:select database();

​ 增:create table t1(id int,name char);

​ 查:show create table t1;

​ show tables;#查看所有

​ desc t1;

​ 改:alter table t1 modify name char(6);

​ alter table t1 change name NAME char(7);

​ 删:drop table t1;

操作文件内容(记录)

​ 增:insert t1(id,name)values(1,‘egon1’),(2,‘egon2’),(3,‘egon3’);#顺序一一对应

​ 查:select id,name from db2.t1;

​ select * from db2.t1;#查询所有文件,但不推荐使用

​ 改:update db2.t1 set name=‘SB’;

​ update db2.t1 set name='DUMP’where id = 2;

​ 查:delete from t1;

​ delete from t1 where id = 2;


库操作

SQL语言分为三种类型:

1、DDL语句 数据库定义语言:数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER

2、DML语句 数据库操纵语言:插入数据INSERT、删除数据DELETE、更新数据UPDATE

3、DCL语句 数据库控制语言:例如控制用户的访问权限GRANT、REVOKE

系统数据库

information_schema:虚拟库,不占磁盘空间,存储数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等

performance_schema:收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象

mysql:授权库,主要存储系统用户的权限信息

test:MySQL数据库系统自动创建的测试数据库

创建数据库

create database 数据库名 charset utf8

规则:可用字母、数字、下划线、@、#、&;区分大小写;唯一性;不能使用关键字;不能单独用数字;最长128位(类似python规则)

数据库相关操作:上一节SQL语句

*help xxx:可查看相关操作名字;使用规则等等。


表操作

存储引擎

存储引擎就是表的类型

查看MySQL支持的存储引擎:show engines;

在这里插入图片描述

指定表类型/存储引擎:

create table t1(id int)engine = innodb;#默认为innodb

create table t2(id int)engine = memory;#存在内存里,重启就没了

create table t3(id int)engine = blackhole;#垃圾数据往里丢就没了

create table t4(id int)engine = myisam;

插入表值

insert into t1 values(1);

insert into t2 values(1);

insert into t3 values(1);

insert into t4 values(1);

查看表数据:select * from tx;

表的增删改查

创建表:

create table 表名(

字段名1 类型[(宽度) 约束条件],

字段名2 类型[(宽度) 约束条件],

);#同一张表字段名不能相同,宽度和约束条件可选,字段名和类型必须有

desc 文件名字:查看表信息;

show create table t1\G;#查看表详细结构,可加\G,便于一行一行显示。

修改表结构

在这里插入图片描述
复制表

eg. create table t1 select host,user from mysql.user;#将mysql.user中包含host,user字段的数据放入t1表中去(既要表结构又要记录)

create table t2 select host,user from mysql.user where 1>5;#给一个错误的逻辑,可只复制表结构不复制内容。

另一种方法:create table t3 like mysql.user;#可直接复制表结构不复制内容

删除表:drop table 表名;


数据类型

整数类型

在这里插入图片描述

如不规定默认为有符号的范围

create table t2(x tinyint unsigned);#位无符号的范围

老版本超量程会直接显示最大数值,新版本超量程会报错。

在这里插入图片描述

create table t3(id int(1) unsigned);#(1)这个宽度指的是显示宽度,而不是存储宽度。存储宽度是固定死了的如上上个表。

显示宽度:如果数据量超过显示宽度数据了,则控制的显示宽度无效。
在这里插入图片描述

浮点型

float double decimal 精度不同

猜你喜欢

转载自blog.csdn.net/weixin_47723114/article/details/131731718