MySQL的sql语言-上篇(数据类型)

sql语言:

语句分类:

DDL(定义语言):

  • create、drop、alter

DML(操纵语言):

  • insert、delete、update

DQL(查询语言):

  • select

DCL(控制语言):

  • grant、revoke、commit、rollback

sql的简单使用:

查看字符集:

注意:

  • 除了 utf8mb4 字符格式能存入表情包数据,其他字符不支持

字符存放目录:

  • /usr/share/mariadb/charsets/
例:
#查看支持的字符集
show character set;		

#查看当前使用的字符集。character_set_server为服务端使用的字符集,更改时也会改database的字符
show variables like 'character%';		
更改字符集:
改文件方式:
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4

[mysql]
default-character-set=utf8mb4
命令方式:
create database db1 character set 'utf8';
查看字符排序方式:
show collation;
查看数据库版本:
select version();

数据类型选择:

用于提高数据库性能
建议:

  • 最小数据占用,使用最小数据类型
  • 简单数据类型使用更少cpu周期
  • 尽量避免null,有null的列、字段,不方便优化sql

mysql数据类型:

数值类型:

类型 数据
tinyint 1字节。(-128~127)
smallint 2字节。(-32768~32767)
mediumint 3字节。(-8388608~8388607)
int 4字节。(-2147483648~2147483647)
bigint 8字节。(+-9.22*10的18次方)
float 浮点,float(10.3),表示7位数字,3位小数,总占10位
decimal 定点型

日期/时间类型:

类型 数据
year 2020
data 2020-01-01
time 01:01:00
datetime 2020-01-01 10:10:30
timestamp 自动存储记录修改时间

字符串(字符)类型:

类型 数据
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 集合

varchar和text的区别:

  • varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n< n>255),text是实际字符数+2个字节。
  • text类型不能有默认值
  • varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text数据类型

二进制数据blob类型:

  • BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而Blob以二进制方式存储,不分大小写
  • BLOB存储的数据只能整体读出
  • TEXT可以指定字符集,BLOB不用指定字符集

bool类型:

boolean(布尔型),是tinyint(1)的同义词。0值为假,非0值为真

数据类型修饰符:

适用所有类型的修饰符:

修饰符 作用
null 数据列可包含NULL值,默认值
not null 数据列不允许包含NULL值,*为必填选项
default 默认值
primary key 主键,所有记录中此字段的值不能重复,不可null;单独行指定一个或两个字段的是复合主键;单独行,直接写的是主键
unique key 唯一键,所有记录中此字段的值不能重复,可null
character set name 指定一个字符集

适用数值型的修饰符:

修饰符 作用
auto_increment 自动递增,适用于整数类型
unsigned 无符号
查看当前的自增起始、步长:
show variables like 'auto_in%';		#查看全局自增设置
SET @@auto_increment_offset=10;		#起始数
SET @@auto_increment_increment=3;		#步长数
posted @ 2022-02-03 16:39  suyanhj  阅读(35)  评论(0)    收藏  举报