IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL2_字符集及数据类型 -> 正文阅读

[大数据]MySQL2_字符集及数据类型

MySQL_字符集及数据类型

1.字符集

字符集在什么时候可以发挥作用?

1.保存数据的时候需要使用字符集

2.数据传输的时候也需要使用字符集

  • 在存续的时候使用字符集
    1. 在MySQL的服务器上,在数据库中,在表的使用上,在字段的设置上.
    2. 在服务器安装的时候,可以指定默认的字符集
#mysql中创建一个远程连接的用户并且授权
#root不可以执行远程连接
grant all privileges on *.* to 'admin'@'%'identified by '123456' with grant option;
  • gbk,utf8,utf8mb4的一个区别
gb2312:简体中文字符,一个汉字最多占用2个字节
gbk:只是所有的中文字符,一个汉字最多占用2个字节
utf8:国际通用编码,一个汉字最多占用3个字节
utf8mb4:国际通用编码,在utf8的基础上加强了对新文字识别,一个汉字最多占用4个字节
#65535/2 -1 
create table test(
	text varchar(32766)
)charset=gbk;

#65535/3 -1
create table test1(
	text varchar(21844)
)charset=utf8;

#65535/4 -1
create table test2(
	text varchar(16382)
)charset=utf8mb4;
  • 在传输的时候使用字符集
#查看当前mysql系统支持的字符集
show variables like 'character_%';

+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | gbk  #服务器接收终端传输的编码格式 |
| character_set_connection | gbk                              |
| character_set_database   | utf8mb4 #数据库支持的编码         |
| character_set_filesystem | binary                           |
| character_set_results    | gbk #服务器返回的字符编码          |
| character_set_server     | utf8mb4 #mysql服务器支持的编码    |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
#修改当前的mysql系统的字符集编码的
#它是一次性命令,mysql链接断开以后,再次链接就不好使了
set names gbk;
#修改系统的字符编码
set character_set_client = gbk;
set character_set_results = gbk;

2.校对集

在某一种字符集下,让字符和字符形成一种关系的集合称之为校对集,

比如说ASCLL中的a和B,如果区分大小写a>B,如果不区分a<B;

#数据库默认的排序方式,是升序
create table t1(
	str char(1)
)charset=utf8mb4 collate=utf8mb4_general_ci;
#在排序规则上看到带有_general_ci 尾缀的都是不区分大小写的

create table t2(
	str char(1)
)charset=utf8mb4 collate=utf8mb4_bin;
#看到尾缀边是_bin的都是区分大小的
#Linux中Mysql是区分大小的
#需要自己去配置
#vim /etc/my.cnf
#找到[mysqld]
#1是不区分大小写,0是区分大小写
lower_case_table_names=1
#查看字符集+校对集
show character set;

#显示所有的校对集
show collation;

3.MySQL的数据类型–值的类型

(1)整型
类别占用字节范围
tinyint1-27-27-1 [-128~127]
smallint2-215-215-1 [-32768-32767]
mediumint3-223-223-1
int4-231-231-1 [长度为10]
bigint8-263-263-1
(2)unsigned(无符号)

一个数是无符号的数,那么这个数一定是非负数

#0-255  0-2^8-1
tinyint unsigned 

create table t3(
	age tinyint unsigned
);
(3)显示宽度(zerofill)

整型支持显示宽度

create table t4(
	id int(10) zerofill primary key auto_increment,
	name char(32)
);
(4)浮点型
类型占用字节范围
float4-3.4E+38 ~3.4E+38
double8-1.8E+308 ~1.8E+308
(5)定点数
#定点数的位数更加长
#M是支持多少个长度,D小数点后面的位数
float(M,D)
double(M,D)
decimal(M,D)

create table t5(
	a float(10,2),
	b double(10,2),
	c decimal(10,2)
);
#五舍六如

4.字符串类型

类型描述
char定长(255)
varchar可变长度(65535)
tinytext定长(255)
text定长(65535)
mediumtext2^24-1
longtext2^32-1

5.枚举(enum)

多选一的时候使用的一种数据类型

在前端使用单选框的时候,枚举类型可以发挥作用

create table t6(
	name varchar(32),
	sex enum('男','女','保密') default 3
);
#枚举类型的下标默认从1开始
insert into t6 set name='王宝强',sex=1;

#枚举类型的优点:
1.限制值
2.节省空间
3.运行效率高

6.集合(set)

在前端是复选框的时候,也不用

有多少可以选多少的一种数据类型

create table t7(
	name varchar(32),
	hobby set('吃','睡','玩','喝','抽')
);

insert into t7 values('孙婷挣','睡,抽,玩,吃,喝');
insert into t7 values('孙挺正','睡,抽');

#索引计算方式
第一个数:2^0
第二个数:2^1
第三个数:2^2

#为什么不是用set类型?
应为在现代网站开发中,多选框的值有上千个,值存储的空没有索引用的多
#那复选框的问题怎么解决?
将复选框的值单独设计成一张表

7.时间类型

类型描述
date日期
year年份
time时间
datetime日期和时间
timestamp时间戳
1.datetime
create table `datetime`(
	create_at datetime
);

insert into `datetime` values('2019-4-2 16:54:00');
insert into `datetime` values('2019/4/2 16:54:00');
insert into `datetime` values(now());
#年份最大支持4个长度
insert into `datetime` values('10000/4/2 16:54:00');  #错误
insert into `datetime` values('9999/4/2 16:54:00');
2.time
create table `time`(
	create_at time
);

insert into `time` values('12:12:12');
insert into `time` values('100:12:12');
insert into `time` values('-100:12:12');
insert into `time` values('10 10:12:12');
#-838:59:59 - 838:59:59
insert into `time` values('839:12:12');#错误的
3.timestamp
#时间戳类型,时间戳类型在显示方面和datetime是一样的,在存储上是不一样

create table `timestamp`(
	create_at timestamp
);

#1970-1-1 0:0:0的格林尼治  - 2038-1-19 11:14:07
insert into `timestamp` values(now());
insert into `timestamp` values('2038-1-19 11:14:07');
insert into `timestamp` values('2038-1-19 11:14:08');#错误
4.year
create table `year`(
	create_at year
);

#从1900年开始 - 1900+255

insert into `year` values(now());
insert into `year` values('2155');
insert into `year` values('2156'); #错误

8.布尔型

mysql中的bool类型也是1和0

create table `bool`(
	cond boolean 
);

insert into `bool` set cond=True;
insert into `bool` set cond=False;
insert into `bool` set cond=1;
insert into `bool` set cond=10;
insert into `bool` set cond=-1;
insert into `bool` set cond=0;
insert into `bool` set cond=0.1;
insert into `bool` set cond='True'; #错误
#2分类

9.列的属性

  • not null | null
#插入的值是否可以为空
null:是可以为空,默认不写
not null:不可以为空,如果插入的时候,摸个字段的值为空,则报错

create table `null`(
	id int primary key auto_increment,
	username varchar(32) not null,
	pwd varchar(16) null
);

insert into  `null` values(null,null,null);
  • default
#默认值一般是和null做搭配的
create table `default`(
	id int primary key auto_increment,
	username varchar(32) default 'admin' not null,
	pwd varchar(16) default 123456
);

insert into  `default`(username) values('admin');
  • auto_increment
#自动增长的列
默认从1开始

配合主键使用的

create table `auto`(
	id int primary key,
	username int auto_increment
);
  • primary key
#主键一般是唯一的标识
#特性:不能为空,也不能重复,一张表当中只可以拥有一个主键

create table `primary`(
 	id int,
 	sid int,
 	primary key(id,sid)
);
#这里只有一个主键,这种主键叫做联合主键,在项目中不用
  • unique
#唯一键,保证列当中的每一个数据都不重复
#邮箱不可以重复,手机号不可以重复
create table `unique`(
	#uid是个什么...
	uid int auto_increment primary key,
	mobile char(11) unique
);

insert into `unique` set mobile=13999999999;
  • comment
#注释:给程序员看的,解释说明的作用
#源码解释

#状态  
status tinyint comment '0代表普通用户,1代表普通会员,2高级会员'

10.SQL注释

#python
单行:#
多行:'''

'''

#mysql
单行注释:#
单行注释:--
多行:/*文字*/




create table userinfo(
	uid int primary key auto_increment,
	uname char(32),
	pwd char(16)
);

insert into userinfo(uname,pwd) values('admin',123),('admin1',1234),('admin2',12345),('admin3',123456);


##sql注入
select * from userinfo where uname='admin' and pwd ='123';

select * from userinfo where uname='' or 1=1 --'' and pwd ='123';
select * from userinfo where uname='' or 1=1 #'' and pwd ='123';
select * from userinfo where True;

#数据库穿透
#前端正则,后端正则
select * from userinfo;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:02:54  更:2022-05-21 19:05:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:53:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码