1. ASCII
用途:用来映射简单的单字节字符,比如大小写英文字母、阿拉伯数字、常用的标点符、运算符、控制字符等。
编码范围:U+0000 - U+007F
注意:对于用这类字符的场景够用了,但是却无法表达比如汉字,日文等编旅羡码。
2. UNICODE
用途:用来映射包含 ASCII 以内的其他的所有字符。
编码范围:U+0000 - U+10FFFF
注意:ASCII 是 UNICODE 的子集,ASCII 编码的字符可以无损转换为 UNICODE 编码的字符。
MySQL 常用字符集
1. Latin1
Latin1 是 cp1252 或者 ISO-8859-1 的别名。ISO-8859-1 编码是单字节编码,向下兼容 ASCII。
编码范围:U+0000 - U+00FF
ISO-8859-1 收录的字符除 ASCII 收录的字符外,拆腊拍还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号。
单字节内的空间都被 ISO-8859-1 编码占用,所以能够用 ISO-8859-1 编码存储、传输其他任何编码的字节流。
比如把一个 Utf8mb4 的编码或者 GBK 的编码存入 Latin1,局消不会有任何问题。因为 Latin1 保留了原始的字节流,这也就是 MySQL 长期以来把 Latin1 做默认字符集的原因。
但是由于 Latin1 对任何字符都存放字节流,造成了字符个数的浪费。
比如:
CHAR(10) CHARACTER SET LATIN1;CHAR(10) CHARACTER SET UTF8;
该字段中存储字符个数 UTF8 是 Latin1 的三倍!!!
2. GB18030
GB18030 是中国官方标准字符集,向前兼容 GBK、GB2312,是这两个的超集。用 1、2、4 个字节分别表示一个符号。比如对一般中文字符,默认是用两个字节编码存储。Windows 系统,默认用的就是 GB18030。
若只是存储中文字符,那 GB18030 最佳。
原因有两点:
1)占用空间小,比如比 UTF8 小。
2)存储的汉字根据拼音来排序,检索快。
3. UTF8
UTF8 是 Unicode 的编码实现,可以存储 UNICODE 编码对应的任何字符, 这也是使用最多的一种编码。最大的特点就是变长的编码方式,用 1 到 4 个字节表示一个符号,可以根据不同的符号编码字节长度。
字母或数字用 1 字节,汉字用 3 字节,emoji 表情符号用 4 字节。UTF8 字符集目前是使用最广泛的。
注意!MySQL 里常说的 UTF8 是 UTF8MB3 的别名,UTF8MB3 是 UTF8MB4 的子集,UTF8MB4 才是真正的 4 字节 UTF8 字符集!
UTF8MB3 表示最大支持 3 个字节存储字符,UTF8MB4 表示最大 4 个字节存储字符。根据实际需要和未来展望,MySQL 8.0 已经默认用 UTF8MB4 基础字符集。
⑵ 如何创建一个使用gbk字符集的mydb2数据库
一、创建和查看数据库
1.创建数据库
CREATE DATABASE [IF NOT EXISTS]#可选内容 db_name [create_specification]#如下定义:
[DEFAULT] CHARACTER SET charset_name#字符集 | [DEFAULT] COLLATE collation_name#校对规则
(1)创建一个名称为mydb1的数据库
create database mydb1;
(2) 创建一个使用gbk字符集的mydb3的数据库
create database mydb2 character set gbk;
(3)创建一个使用utf8字符集,并带校对规则的mydb3数据库
create database mydb3 character set utf8 collate utf8_bin;
2.查看数据库
(1)显示数据库 语句:
show databases;
(2) 显示数据库创建语句:
show create database mydb3;
3.修改数据库
ALTER DATABASE [IF NOT EXISTS] db_name [alter_specification [, alter_specification [,........#规格如下
[DEFAULT] CHARECTER SET charset_name [DEFAULT] COLLATE collation_name
(1) 查看服务器中的数据库,并把其中某一个库的字符集修改为utf8
alter database mydb2 character set utf8;
4.修改数据库
DROP DATABASE [IF EXISTS] db_name
(1)删除数据库mydb3
drop database mydb3;
5.选择数据库
use 数据库;
select database();#查看数据库
二、数据库中表的操作
1.学习数据库的数据类型
2.增加表
CREATE TABLE table_name(
field1 datatype
field2 datatype
field3 datatype
field4 datatype
) character set 字符集 collate 校对规则 #建议默认
field:指定列名 datatype:指定列类型
(1)创建一个员工表employee
create table employee (
id int,
name varchar(20),
gender char(1),
birthday date,
entry_data date,
job varchar(50),
salay double,
resume text
);
3.查看表
查看表结构:desc tab_name;
查询当前数据库中的所有表:show tables;
查看表的建表语句:show create table;
4.修改表
ALTER TABLE table_name ADD (column datatype [DEFAUL expr] [,column datatype]......);
ALTER TABLE table_name MODIFY (column datatype [DEFAUL expr] [,column datatype]......);
ALTER TABLE table_name DROP (column );
修改列的名称:ALTER TABLE table_name change [column]
old_col_name column_definition;
修改表的名称:rename table 表名 to 新表名;
修改表的字符集编码:alter table tab_name character set utf8;
(1)在上面员工表基本上增加一个image列
alter table employee add image blob;
(2)修改job列,使其长度为60
alter table employee modify job varchar(60);
(3)删除gender列
alter table employee drop gender;
(4)表名改为user
alter table employee to user;
(5)修改表的字符集为utf8
alter table user character set utf8;
(6)列名name修改为username
alter table user change name username varchar(20)
5.删除表
drop table table_name;
三、表的约束
1.PRIMARY KEY 主键约束:非空&唯一
create table employee (
id int primary key,
name varchar(20),
gender char(1),
birthday date,
entry_data date,
job varchar(50),
salay double,
resume text
);
2.NOT NULL非空约束:不能为空
create table employee (
id int primary key,
name varchar(20),
gender char(1) not null,
birthday date,
entry_data date,
job varchar(50),
salay double,
resume text
);
3.UNIQUE唯一约束:唯一
create table employee (
id int primary key,
name varchar(20) unique,
gender char(1) not null,
birthday date,
entry_data date,
job varchar(50),
salay double,
resume text
);
4.DEFAULT默认约束:
create table employee (
id int primary key,
name varchar(20) unique,
gender char(1) not null,
birthday date,
entry_data date,
job varchar(50) DEFAULT ‘sxs‘,
salay double,
resume text
);
⑶ mysql 查询一个时间之前的值
select * from Biz_ExamCollection where collectionType = 5 AND date_format(createDTM,'%Y-%m-%d') <= date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m-%d')
MySQL查询指定时间的数据:
#获取当月数据
SELECT * FROM user_event WHERE DATE_FORMAT(create_time,'%Y-%m') = DATE_FORMAT(NOW(),'%Y-%m')
#获取3月份数据
SELECT * FROM user_event WHERE DATE_FORMAT(create_time,'%Y-%m') = DATE_FORMAT('2016-03-01','%Y-%m')
#获取三月份数据
SELECT * FROM user_event WHERE YEAR(create_time)='2016' AND MONTH(create_time)='3'
#获取本周数据
SELECT * FROM user_event WHERE YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW());
#查询上周的数据
SELECT * FROM user_event WHERE YEARWEEK(DATE_FORMAT(create_time,'%Y-%m-%d')) = YEARWEEK(NOW())-1;
#查询距离当前现在6个月的数据
SELECT * FROM user_event WHERE create_time BETWEEN DATE_SUB(NOW(),interval 6 month) and NOW();
#查询上个月的数据
SELECT * FROM user_event WHERE DATE_FORMAT(create_time,'%Y-%m')=DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH),'%Y-%m')
扩展资洞饥饥料
MYSQL基础知识:
数据库增删查改
创建数据库:语法:create database 数据库 [character 字符集 collate 校对规则]
查看数据库:
查看所有数据库:show databases;
查看某个数据库:show create database 数据库名;
修改数据库:语法:alter database 数据库名 character 字符集 collate 校对规则
删除数据库:语法:drop database 数据库名;
切换数据库:use 数据库名;
查看当前使用数据库:select database();
数据库表操作
创建肢正表语法:
create table 表名 (
字段名 类型(长度) 约束,
字段名 类型(长度) 约束,
字纳返段名 类型(长度) 约束
);
⑷ 创建一个StudentMis数据库,数据库采用gb2312和校对规则gb2312_chinese_
不需要重新安装,找到前码mysql的安装目录,打开my.ini,在里面查找default-character-set ,改成你需要的字符集,然后点我的电卜明脑,右键,管理,服务,找到MYSQL的服务,重启动服务就可以了型悔告
答案补充
点开始-程序-Mysql -Mysql server-mysql command line client
登录一下,看能否登录
⑸ 可以通过alterdatabase修改数据库,但只能修改其使用的
在 MySQL 数据库中只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都储存在 db.opt 文件中。下面我们来介绍一下修改数据库的基本操作。
在 MySQL 中,可以使用 ALTER DATABASE 来修改已经被创建或者存在的数据库的相关参数。修改数据库的语法格式为:
ALTER DATABASE [数据库名] {
[ DEFAULT ] CHARACTER SET <字符集名> |
[ DEFAULT ] COLLATE <校对规则名>}
语法说明如下:
ALTER DATABASE 用于更改数据库的全局特性。
使用 ALTER DATABASE 需要获得数据库 ALTER 权限。
数据库名谈没称可以忽略,此时语团侍如句对应于默认数据库。
CHARACTER SET 子句用于更塌启改默认的数据库字符集。
⑹ CREATE DATABASE `thinkcmf` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c
数据库字符集和校对
每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和
ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:
CREATE DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
ALTER DATABASE db_name
[[DEFAULT] CHARACTER SET charset_name]
[[DEFAULT] COLLATE collation_name]
例如:
CREATE DATABASE db_name
DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
MySQL这样选择数据库字符集和数据库校对规则:
·如果指定了袜亮CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。
·如果指定了CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。
·否则,采用服务器字符集和服务器校对规郑好橘则。
如果在CREATE TABLE语句中没有指定表字符集和校对规则,则使喊团用数据库字符集和校对规则作为默认值。
⑺ 创建一个StudentMis数据库,数据库采用gb2312和校对规则gb2312_chinese_
搜段轿一下:创建一个StudentMis数绝做据库,并燃衡数据库采用gb2312和校对规则gb2312_chinese_
⑻ MySQL数据库可视化工具SQLyogEnt怎么用
方法/步骤
打开SQLyogEnt,进入配置界面,点击左上方【新建】
在弹出的对话栏里,填写连接名称,方便以后区分使用
创建连接完成,输入
mysql主机地址 localhost
用户名 root
数据库连接密码(一般默认为root)
端口3306
数据配置完成,点击【立即连接】
数据库连接成功,我们可以在右侧命令行栏栏里输入相应的sql语句,进行操作
也可以使用简便的操作,右键点击左上方【连接用户】,在弹出的菜单栏选择【创建数据库】
然后设置数据库编码,数据库名称以及校对规则
如果我们已有数据库文件,可以导入到SQLyog中进行操作,右键点击选择【导入sql语句即可】
⑼ 如何用sql建立数据库
在 MySQL 中,可以使用 CREATE DATABASE 语句创建数据库,语法格式如下:CREATE DATABASE [IF NOT EXISTS] <数据库名>[[DEFAULT] CHARACTER SET <字符集名>][[DEFAULT] COLLATE <校对规则名>];
[ ]中的内容是可选的。语法说明如下:
<数据库名>:创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量要有实际意义。注意在 MySQL 中不区分大小写。
IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。此选项可以用来避免数据库已经存在而重复创建的错误。
[DEFAULT] CHARACTER SET:指定数据库的字符集。指定字符集的目的是为了避免在数据库中存储的数据出现乱码的情况。如果在创建数据库时不指定字符集,那么就使用系统的默认字符集。
[DEFAULT] COLLATE:指定字符集的默认校对规则。
MySQL 的字符集(CHARACTER)和校对规则(COLLATION)是两个不同的概念。字符集是用来定义 MySQL 存储字符串的方式,校对规则定义了比较字符串的方式。后面我们会单独讲解 MySQL 的字符集和校对规则。
⑽ 可以通过alterdatabase修改数据库,但只能修改其使用的
1. 在 MySQL 中,可以使用 alter database 来修改已经被创建或者存在的数据库的相亮亏樱关参数。修改数据库的语法格式为:
alter database [数敬丛据库名] {
[ default ] character set <字空碧符集名> |
[ default ] collate <校对规则名>}
语法说明如下:
alter database 用于更改数据库的全局特性。
使用 alter database 需要获得数据库alter权限
数据库名称可以忽略,此时语句对应默认数据库
character set 子句用于更改默认的数据库字符集
实例1:
查看test_db数据库的定义声明
使用命令行工具将数据库test_db的指定字符集修改为gb2312,默认校对规则修改为gb2312_unicode_ci
alter database test_db default character set gb2312 default collate gb2312_chinese_ci;
查看修改后的test_db数据库的dinginess声明