MySQL中的表操作,配置文件,储存引擎,数据类型

MySQL中的表操作

1 查库(已密码登陆mysql)

show databases;

2 添加库

 create database t1;

3 表操作

1选定操作库

use t1

2在库里添加表格式

create table t1(id int, name varchar(32), gender varchar(32),age int);

3往表里添加具体元素

insert into t1 values(1, 'kevin', 20,20);

4往表里添加多组数据

 insert into t1 values(2, 'kevin1', 20,20),(3, 'kevin2', 20,20),(4, 'kevin3', 20,30),(5, 'kevin4', 20,20),(6, 'kevin5', 20,20);

4 修改表中数据

1修改单个值

 update t1 set name='tank' where id=1;

2把表中2个不同的值改为1个

 update t1 set name='oscar' where name='kevin3' or name='kevin4';

3修改所有值为同一值(危险操作)

update t1 set name='tony';

5 删除表数据

delete from t1 where id=1;
delete from t1 where id=2 or id=7;
delete from t1;  # 这是清空表

6 流程一览

C:\Users\艾森豪>mysql -u root -p  # 先登录
mysql> show databases;   # 查看所有库
mysql> create database db1;   # 创造库
mysql> use db1;   # 引用这个db1库
mysql> show tables;    # 查看所有表
mysql> create table t1(id int,name varchar(3),age int);    # 创造表
mysql> show tables;   # 看是否创造表成功
mysql> insert into t1 values(1,'zhoujiaqi',21);  # 插入记录
mysql> select * from t1;   # 查看所有记录

MySQL配置文件的使用

"""mysql的配置文件是:my-default.ini"""
# 修改了配置文件,一定别忘了重启服务端才能生效
"""把一下内容加到配置文件中"""
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

MySQL存储引擎的使用(理论,重要)

存储引擎就是存储数据的方式!
**MySQL支持多少种存储引擎方式

  1. 如何查看存储引擎
    show engines;
    """一共九种存储引擎,重点学习:MyISAM MEMORY InnoDB"""
    MyISAM:
    它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是它的数据安全性较低,相对于InnoDB存储引擎
    """不支持事务、支持的是表锁"""
    InnoDB:
    它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些
    """它支持:事务、行锁、外键"""
    MEMORY:
    它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失**
# 演示
create table t2 (id int, name varchar(64)) engine=MyISAM;
create table t3 (id int, name varchar(64)) engine=InnoDB;
create table t4 (id int, name varchar(64)) engine=MEMORY;

对于不同的存储引擎,硬盘中保存的文件个数也是不一样的

对于不同的存储引擎,硬盘中保存的文件个数也是不一样的

MyISAM:3个文件

.frm 存储表结构

.MYD 存储的是表数据

.MYI 存索引(当成是字典的目录,加快查询速度)

InnoDB:2个文件

.frm 存储表结构

.ibd 存储数据和索引

MEMORY:1个文件

.frm 存储表结构

MySQL数据类型

1 整型: 存储整数的

整型: 存储整数的

tinyint smallint int bigint

不同的数据类型区别就是所存储的范围不一样

tinyint: 它是使用一个字节来保存数据,

一个字节代表8位 11111111--->256种情况(0-255) (-128-127)

smallint :2个字节, 代表16位, 65536(0-65535) (-32768-32767)

mediumint : 3个字节

int : 4个字节,2**32=42....(-21...- 21...)

bigint :8个字节(最大的) 可以存手机号(11)

怎么选数据类型:看你这一列存什么数据

比如:age int

整型默认情况下带不带符号?

create table t5 (id tinyint);

insert into t5 values(256);

结论是:带符号的,所有的整型默认都是带符号的 减半

怎么样去掉符号

create table t6 (id tinyint unsigned);

2 浮点型

float double decimal

float(255, 30) # 总位数是255位、小数点后60位

double(255, 30) # 总位数是255位、小数点后60位

decimal(65, 30) # 总位数是255位、小数点后60位

他们三个区别是什么呢?

create table t7 (id float(255, 30));

create table t8 (id double(255, 30));

create table t9 (id decimal(65, 30));

insert into t7 values (1.11111111111111111111111111);

insert into t8 values (1.11111111111111111111111111);

insert into t9 values (1.11111111111111111111111111);

结论:

三者的精确度不一样:decimal >>> double >>> float(精确到7位了)

以后到底是选哪个更好呢

多年的经验来看,大家都选decimal

3 字符串(重要)

char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充 abc helloworld

varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位 abc a

create table t10 (id int, name char(4));

create table t11 (id int, name varchar(4));

insert into t10 values(1, 'jerry');

insert into t11 values(1, 'jerry');

如果你想超出范围之后,直接报错,需要设置严格模式!!!

sql_mode

show variables like "%mode%";

设置严格模式

  1. 命令行模式:临时修改

set global sql_mode='STRICT_TRANS_TABLES'; # 不区分大小写

  1. 配置文件修改:永久修改

研究定长和不定长

create table t12 (id int, name char(4));

create table t13 (id int, name varchar(4));

insert into t12 values(1, 'ke');

insert into t13 values(1, 'ke');

验证是否补充了空格

select char_length(name) from t12;

select char_length(name) from t13;

默认情况下,没有对char类型填充空格,如果想看填充了空格,需要设置严格模式

设置严格模式

  1. 命令行模式:临时修改

set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH'; # 不区分大小写

  1. 配置文件修改:永久修改

4 日期

date datetime time year

年月日 年月日 十分秒 十分秒 年

create table t14 (

id int,

reg_time date,

reg1_time datetime,

reg2_time time,

reg3_time year

);

insert into t14 values(1, '2023-10-1', '2023-11-11 11:11:11', '11:11:11', 2023);

5 枚举

多选一

enum

create table t15 (id int, hobby enum('read', 'music', 'tangtou', 'xijio'));

insert into t15 values(1, 'read');

多选多:包含多选一

set

create table t16 (id int, hobby set('read', 'music', 'tangtou', 'xijio'));

insert into t16 values(2, 'read,music1');

END


相关推荐
环能jvav大师2 分钟前
基于R语言的统计分析基础:使用SQL语句操作数据集
开发语言·数据库·sql·数据分析·r语言·sqlite
骆晨学长22 分钟前
基于springboot的智慧社区微信小程序
java·数据库·spring boot·后端·微信小程序·小程序
@月落28 分钟前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
楠枬38 分钟前
MySQL数据的增删改查(一)
数据库·mysql
goTsHgo43 分钟前
从底层原理上解释 clickhouse 保证完全的幂等性
数据库·clickhouse
hayhead2 小时前
高频 SQL 50 题(基础版)| 626. 换座位
sql·力扣
阿华的代码王国2 小时前
MySQL ------- 索引(B树B+树)
数据库·mysql
Hello.Reader3 小时前
StarRocks实时分析数据库的基础与应用
大数据·数据库
执键行天涯3 小时前
【经验帖】JAVA中同方法,两次调用Mybatis,一次更新,一次查询,同一事务,第一次修改对第二次的可见性如何
java·数据库·mybatis
liupenglove3 小时前
golang操作mysql利器-gorm
mysql·golang