目录
| 类型名称 | 含义 |
| tinyint(n) | 1个字节,范围(-128~127) |
| smallint(n) | 2个字节,范围(-32768~32767) |
| mediumint(n) | 3个字节,范围(-8388608~8388607) |
| int(n) | 4个字节(32个比特位),整数型,范围(-2147483648~2147483647) |
| bigint(n) | 8个字节,整数型,范围(+-9.22*10的18次方) |
| float(m,d) | 单精度浮点,8位精度,4字节32位。m数字总个数,d小数位 |
| double(m,d) | 双精度浮点,16位精度,8字节64位 。m总个数,d小数位 |
| char | 固定长度的字符类型 |
| varchar | 可变长度的字符类型 |
| text | 文本 |
| image | 图片 |
| decimal(5,2) | 5个有效长度数字,小数点后面有2位(例如123.56) |
| 值 | CHAR(4) | 存储需求 | VARCHAR(4) | 存储需求 |
| '' | ' ' | 4个字节 | '' | 1个字节 |
| 'ab' | 'ab ' | 4个字节 | 'ab' | 3个字节 |
| 'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
| 'abcdefgh' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
字节大小:
- char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节。
- varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节。
优劣比较:
- varchar比char节省磁盘空间。
- 但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,e而varchar在多次增删改查中会产生一些磁盘空间碎片
- 在数据库系统中,SQL 语句不区分大小写,建议用大写
- SQL语句可单行或多行书写,默认以 " ; " 结尾
- 关键词不能跨多行或简写
- 用空格和TAB 缩进来提高语句的可读性
- 子句通常位于独立行,便于编辑,提高可读性
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
- DDL: Data Defination Language 数据定义语言,用于创建数据库对象,用于数据库的操作,如库、表、索引等。eg:create、drop、alter。
- DML: Data Manipulation Language 数据操纵语言,用于对表中的数据进行管理,用来插入、删除、修改数据库中的数据。eg:insert、delete、update。
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录。eg:select。
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些 语句定义了数据库、表、字段、用户的访问权限和安全级别,如commit、follback、grant、revoke)
DDL: Data Defination Language 数据定义语言
CREATE,DROP,ALTER
DML: Data Manipulation Language 数据操纵语言
INSERT,DELETE,UPDATE
软件开发:CRUD
DQL:Data Query Language 数据查询语言
SELECT
DCL:Data Control Language 数据控制语言
GRANT,REVOKE
TCL:Transaction Control Language 事务控制语言
COMMIT,ROLLBACK,SAVEPOINT
SQL分类:
- 数据库:database
- 表:table,行:row 列:column
- 索引:index
- 视图:view
- 存储过程:procedure
- 存储函数:function
- 触发器:trigger
- 事件调度器:event scheduler,任务计划
- 用户:user
- 权限:privilege
- #help后面跟上具体命令可以查看帮助
- 例如:mysql> help create
- 1. #查看支持字符集
- show charset;
- 默认拉丁文字,需要修改为
-
- utf8 | UTF-8 Unicode
- #阉割版的
-
- utf8mb4 | UTF-8 Unicode
- #真实的版本
-
- 2. #修改字符集
- vim /etc/my.cnf
- [mysqld]
- character-set-server=utf8mb4
数据库的组件(对象):
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等
命名规则:
必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
不要使用MySQL的保留字,如tabble select show databases
| 类型 | 说明 |
| int | 整型,用于定义整数类型的数据 |
| fload | 单精度浮点4字节32位,准确表示到小数点后六位 |
| double | 双精度浮点8字节64位 |
| char | 固定长度的字符类型,用于定义字符类型数据 |
| varchar | 可变长度的字符类型 |
| text | 文本 |
| image | 图片 |
| decimal(5,2) | 5个有效长度数字,小数点后面有2位。指定长度数组 |
char
char的长度是不可变。char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度,低版本会被截取高版本会报错。
varchar
varchar长度是可变的,默认会加一个隐藏的结束符,因此结束符会多算一个字节。
参考链接:
选择正确的数据类型对于获得高性能至关重要,三大原则:
更小的通常更好,尽量使用可正确存储数据的最小数据类型
简单就好,简单数据类型的操作通常需要更少的CPU周期
尽量避免NULL,包含为NULL的列,对MySQL更难优化
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)
上述数据类型,如果加修饰符unsigned后,则最大值翻倍
如:tinyint unsigned的取值范围为(0~255)
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位, 注意: 小数点不占用总个数
double(m,d) 双精度浮点型16位精度(8字节) m总个数,d小数位, 注意: 小数点不占用总个数
设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位
在数据库中存放的是精确值,存为十进制
格式 decimal(m,d) 表示 最多 m 位数字,其中 d 个小数,小数点不算在长度内
比如: DECIMAL(6,2) 总共能存6位数字,末尾2位是小数,字段最大值 9999.99 (小数点不算在长度内)
参数m<65 是总个数,d<30且 d MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个字节存9个数字)。 例如: decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:其中,小数点前的9个数字用4个字节,小数点后的9个数字用4个字节,小数点本身占1个字节 浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储。double占用8个字节 因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时 char(n) 固定长度,最多255个字符,注意不是字节 varchar(n) 可变长度,最多65535个字符 tinytext 可变长度,最多255个字符 text 可变长度,最多65535个字符 mediumtext 可变长度,最多2的24次方-1个字符 longtext 可变长度,最多2的32次方-1个字符 BINARY(M) 固定长度,可存二进制或字符,长度为0-M字节 VARBINARY(M) 可变长度,可存二进制或字符,允许长度为0-M字节 内建类型:ENUM枚举, SET集合 方法一:先切换库,在查看指定表的字段 方式二:直接查看表结构 唯一键验证:6)字符串
3.2.查看数据库结构
1)查看库信息
show databases; #大小写不区分,分号“;”表示结束

2)查看表信息


3)查看表的字段结构


4)查看MySQL版本
mysql -V
3.3.创建、删除数据库和表
1)创建新的数据库(create database)

2)删除指定的数据库(drop database)
drop database 数据库名;

3)创建新的表 (create table)

4)删除指定的数据表(drop table)


3.4.管理表中的数据记录
1)向数据表中插入新的数据记录(insert into)

2)查询数据表内数据记录(select)




3)修改、更新数据表中的数据记录(update)

4)在数据表中删除指定的数据记录

3.5.修改表名和表结构(alter table)
1)修改表名(rename)

2)扩展表结构,增加字段(add)

3)修改字段(列)名,添加唯一键(change)



4)删除字段(drop)

3.6.查看、修改字符集(show)
1)查看MySQL支持的所有字符集
show charset;

2)查看数据库字符集

3)查看数据表的字符集

4)修改数据库字符集(character set)