字符编码与配置文件
| 1.\s 查看MYSQL相关信息 |
| 当前用户、版本、编码、端口号 |
| MySQL5.6及之前的版本编码需要人为统一 之后的版本已经全部默认统一 |
| |
| 如果想要永久修改编码配置 需要操作配置文件 |
| 2.默认的配置文件时my-default.ini |
| 拷贝上述文件并重命名为my.ini |
| |
| 直接拷贝字符编码相关配置即可 无须记忆 |
| [mysqld] |
| character-set-server=utf8mb4 |
| collation-server=utf8mb4_general_ci |
| [client] |
| default-character-set=utf8mb4 |
| [mysql] |
| default-character-set=utf8mb4 |
| ps: |
| 1.utf 8mb4能够存储表情 功能更加强大 |
| 2.utf8与utf-8是有区别的 MySQL中只有utf8 |
| |
| 修改了配置文件中关于[mysqld]的配置 需要重启服务端 |
| |
| """ |
| 利用配置文件我们可以偷懒 |
| 将管理员登录的账号密码直接卸载配置文件中之后使用mysql登录即可 |
| [mysql] |
| user='root' |
| password=123 |
| """ |
数据库存储引擎
| 存储引擎 |
| 数据库针对数据采取的多种存取方式 |
| |
| 查看常见存储引擎的方式 |
| show engines; |
| |
| 需要了解的四个存储引擎 |
| MyISAM |
| MySQL5.5之前默认的存储引擎 |
| 存取数据的速度快 但是功能较少 安全性比较低 |
| |
| InnoDB |
| MySQL5.5之后默认的存储引擎 |
| 支持事务、行锁、外键等操作 存储速度没有MyISAM快 但是安全性更高 |
| |
| Memory |
| 基于内存存取数据 仅仅用于临时表数据存取 |
| BlackHole |
| 任何写入进去的数据都会立刻丢失 |
| |
| |
| 了解不同存储引擎层文件个数 |
| create database db2; |
| use db2; |
| 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=blankhole; |
| ''' |
| 1.innodb 两个文件 |
| .frm 表结构 |
| .ibd 表数据(表索引) |
| 2.myisam三个文件 |
| .frm 表结构 |
| .MYD 表数据 |
| .MYI 表索引 |
| 3.memory一个文件 |
| .frm 表结构 |
| 4.blackhole一个文件 |
| .frm 表结构 |
| ''' |
| insert into t1 values(1); |
| insert into t2 values(2); |
| insert into t3 values(3); |
| insert into t4 values(4); |
| |
| ps:MySQL默认忽略大小写 |
| |
创建表的完整语法
| create table 表名( |
| 字段名 字段类型(数字) 约束条件, |
| 字段名 字段类型(数字) 约束条件, |
| 字段名 字段类型(数字) 约束条件 |
| ); |
| 1.字段名和字段类型是必须的 |
| 2.数字和约束条件是可选的 |
| 3.约束条件也可以写多个 空格隔开即可 |
| 4.最后一行结尾不能加逗号 |
| ps:编写SQL语句报错之后不要慌 仔细查看提示 会很快解决 |
MySQL字段类型之整型
| tinyint 1bytes 正负号(占1bit) |
| |
| smallint 2bytes 正负号(占1bit) |
| |
| int 4bytes 正负号(占1bit) |
| |
| bigint 8bytes 正负号(占1bit) |
| |
| |
| 验证整形默认是否携带正负号 |
| create table t5(id tinyint); |
| insert into t5 value(-129),(128); |
| 结果是-128和127 也就意味着默认自带正负号 |
| |
| 我们也可以取消正负号 |
| create table t6(id tinyint unsigned); |
| insert into t6 values(-129),(128),(1000) |
| |
严格模式
| 当我们在使用数据库存储数据的时候 如果数据不符合规范 应该直接报错而不是擅自修改数据 这样会导致数据的失真(没有实际意义) |
| 正常都应该报错 但是我们之前不小心修改了配置文件 |
| |
| show variadbles like '%model%'; |
| |
| 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(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_lengrh'; |
| |
| |
| 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('baskerball','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, |
| wordk_time year |
| ); |
| insert into t17 values(1,'jason','2000-11-11 11:11:11','1998-01-21','11:11:11','2000'); |
| ps:以后涉及到日期相关字段一般都是系统自动回去 无需我们可以操作 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构