前言:
而今看官们对“source字符集mysql”大约比较着重,咱们都需要剖析一些“source字符集mysql”的相关文章。那么小编也在网摘上收集了一些关于“source字符集mysql””的相关内容,希望你们能喜欢,我们快快来学习一下吧!一.客户端命令介绍
mysql
1、用于数据库的连接管理
1) 连接(略)
2) 管理:
#MySQL接口自带的命令\h 或 help 或? 查看帮助\G 格式化查看数据(key:value)\T 或 tee 记录日志\c(5.7可以ctrl+c) 结束命令\s 或 status 查看状态信息\. 或 source 导入SQL数据\u或 use 使用数据库\q 或 exit 或 quit 退出
3)接收用户的SQL语句
2、将用户的SQL语句发送到服务器
mysqladmin
1、命令行管理工具
mysqldump
1、备份数据库和表的内容
help命令的使用
mysql> helpmysql> help contentsmysql> help selectmysql> help createmysql> help create usermysql> help statusmysql> help show
source命令的使用
#在MySQL中处理输入文件:#如果这些文件包含SQL语句则称为:#1.脚本文件#2.批处理文件mysql> SOURCE /data/mysql/world.sql#或者使用非交互式mysql</data/mysql/world.sql
mysqladmin命令的使用
01)“强制回应 (Ping)”服务器。
02)关闭服务器。
03)创建和删除数据库。
04)显示服务器和版本信息。
05)显示或重置服务器状态变量。
06)设置口令。
07)重新刷新授权表。
08)刷新日志文件和高速缓存。
09)启动和停止复制。
10)显示客户机信息。
#查看MySQL存活状态[root@db01 ~]# mysqladmin -uroot -p123 ping#查看MySQL状态信息[root@db01 ~]# mysqladmin -uroot -p123 status#关闭MySQL进程[root@db01 ~]# mysqladmin -uroot -p123 shutdown#查看MySQL参数[root@db01 ~]# mysqladmin -uroot -p123 variables#删除数据库[root@db01 ~]# mysqladmin -uroot -p123 drop DATABASE#创建数据库[root@db01 ~]# mysqladmin -uroot -p123 create DATABASE#重载授权表[root@db01 ~]# mysqladmin -uroot -p123 reload#刷新日志[root@db01 ~]# mysqladmin -uroot -p123 flush-log#刷新缓存主机[root@db01 ~]# mysqladmin -uroot -p123 reload#修改口令[root@db01 ~]# mysqladmin -uroot -p123 password
二.接收用户的SQL语句
1.什么是SQL
结构化的查询语句
2.SQL的种类
DDL:数据定义语言
库对象:库名字、库属性
开发规范:库名小写
创建库:create database|schema
#创建oldboy数据库mysql> create database oldboy;#创建OLDBOY数据库mysql> create database OLDBOY;#查看数据库mysql> show databases;#查看oldboy的创建语句(DQL)mysql> show create database oldboy;#查看创建数据库语句帮助mysql> help create database#创建oldboy数据库添加属性mysql> create database testa charset utf8;
删库:drop database
#删除oldboy数据库mysql> drop database oldboy;
修改定义库:alter database
#修改oldboy数据库属性mysql> alter database oldboy charset gbk;#查看oldboy的创建语句(DQL)mysql> show create database oldboy;
表对象:列名、列属性、约束
创建表:create table (开发做)
#查看创建表语句帮助mysql> help create table#创建表mysql> create table student(sid INT,sname VARCHAR(20),sage TINYINT,sgender ENUM('m','f'),cometime DATETIME);
数据类型
int: 整数 -231 ~ 231 -1
varchar:字符类型 (变长)
char: 字符类型 (定长)
tinyint: 整数 -128 ~ 128
enum: 枚举类型
datetime: 时间类型 年月日时分秒
#创建表加其他属性mysql> create table student(sid INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT ‘学号’,sname VARCHAR(20) NOT NULL COMMENT ‘学生姓名’,sage TINYINT UNSIGNED COMMENT ‘学生年龄’,sgender ENUM('m','f') NOT NULL DEFAULT ‘m’ COMMENT ‘学生性别’,cometime DATETIME NOT NULL COMMENT ‘入学时间’)chatset utf8 engine innodb;#查看建表语句mysql> show create table student;#查看表mysql> show tables;#查看表中列的定义信息mysql> desc student;
数据属性
not null: 非空
primary key: 主键(唯一且非空的)
auto_increment: 自增(此列必须是:primary key或者unique key)
unique key: 单独的唯一的
default: 默认值
unsigned: 非负数
comment: 注释
删除表
#删除表mysql> drop table student;
修改表定义:alter table (开发做)
#修改表名mysql> alter table student rename stu;#添加列和列定义mysql> alter table stu add age int;#添加多个列mysql> alter table stu add test varchar(20),add qq int;#指定位置进行添加列(表首)mysql> alter table stu add classid varchar(20) first;#指定位置进行添加列(指定列)mysql> alter table stu add phone int after age;#删除指定的列及定义mysql> alter table stu drop qq;#修改列及定义(列属性)mysql> alter table stu modify sid varchar(20);#修改列及定义(列名及属性)mysql> alter table stu change phone telphone char(20);
DCL:数据控制语言
针对权限进行控制
grant
#授权root@10.0.0.51用户所有权限(非炒鸡管理员)mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123';#怎么去授权一个炒鸡管理员呢?mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123' with grant option;#其他参数(扩展)max_queries_per_hour:一个用户每小时可发出的查询数量max_updates_per_hour:一个用户每小时可发出的更新数量max_connetions_per_hour:一个用户每小时可连接到服务器的次数max_user_connetions:允许同时连接数量
revoke
#收回select权限mysql> revoke select on *.* from root@'10.0.0.51';#查看权限mysql> show grants for root@'10.0.0.51';
DML:数据操作语言
操作表的数据行信息
insert
#基础用法,插入数据mysql> insert into stu values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);#规范用法,插入数据mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456);#插入多条数据mysql> insert into stu(classid,birth.sname,sage,sgender,comtime,telnum,qq) values('linux01',1,NOW(),'zhangsan',20,'m',NOW(),110,123456),('linux02',2,NOW(),'zhangsi',21,'f',NOW(),111,1234567);
update
#不规范mysql> update student set sgender='f';#规范update修改mysql> update student set sgender='f' where sid=1;#如果非要全表修改mysql> update student set sgender='f' where 1=1;
delete
#不规范mysql> delete from student;#规范删除(危险)mysql> delete from student where sid=3;#DDL删除表mysql> truncate table student;1、使用伪删除
使用update代替delete
1)额外添加一个状态列
mysql> alter table student add status enum(1,0) default 1;
2)使用update
mysql> update student set status='0' where sid=1;
3)应用查询存在的数据
mysql> select * from student where status=1;2、使用触发器(了解)
trigger
DQL:数据查询语言
select:基础用法
#常用用法mysql> select countrycode,district from city;#查询单列mysql> select countrycode from city;#行级查询mysql> select countrycode,district from city limit 2;mysql> select id,countrycode,district from city limit 2,2;#条件查询mysql> select name,population from city where countrycode='CHN';#多条件查询mysql> select name,population from city where countrycode='CHN' and district='heilongjiang';#模糊查询mysql> select name,population,countrycode from city where countrycode like '%H%' limit 10;#排序查询(顺序)mysql> select id,name,population,countrycode from city order by countrycode limit 10;#排序查询(倒叙)mysql> select id,name,population,countrycode from city order by countrycode desc limit 10;#范围查询(>,<,>=,<=,<>)mysql> select * from city where population>=1410000;#范围查询OR语句mysql> select * from city where countrycode='CHN' or countrycode='USA';#范围查询IN语句mysql> select * from city where countrycode in ('CHN','USA');
三.字符集定义
1.什么是字符集(Charset)
字符集:是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

2.MySQL数据库的字符集
1)字符集(CHARACTER)
2)校对规则(COLLATION)
3.MySQL中常见的字符集
1)UTF8
2)LATIN1
3)GBK
4.常见校对规则
1)ci:大小写不敏感
2)cs或bin:大小写敏感
5.我们可以使用以下命令查看
mysql> show charset;mysql> show collation;
四.字符集设置
1.操作系统级别
[root@db01 ~]# source /etc/sysconfig/i18n[root@db01 ~]# echo $LANGzh_CN.UTF-82.操作系统客户端级别(SSH)3.MySQL实例级别
方法1:在编译安装时候就指定如下服务器端字符集。
cmake . -DDEFAULT_CHARSET=utf8 \-DDEFAULT_COLLATION=utf8_general_ci \-DWITH_EXTRA_CHARSETS=all \
方法2:在配置文件中设置字符集
[mysqld]character-set-server=utf84.建库级别
mysql> create database oldboy charset utf8 default collate = utf8_general_ci;5.建表级别
mysql> CREATE TABLE `test` (`id` int(4) NOT NULL AUTO_INCREMENT,`name` char(20) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
思考问题:如果在生产环境中,字符集不够用或者字符集不合适该怎么处理?


生产环境更改数据库(含数据)字符集的方法
mysql> alter database oldboy CHARACTER SET utf8 collate utf8_general_ci;mysql> alter table t1 CHARACTER SET utf8;
五.select的高级用法(扩展)
1.多表连接查询(连表查询)
集合:
[zhang3,li4,wang5]
[50,70,80]
t1:
sid 1 2 3
sname zhang3 li4 wang5
t2:
sid 1 2 3
mark 50 70 80
范式: 减少数据冗余,防止产生一致性问题,把一个表作为一个原子,把一张表拆到不能再拆为止。(开发阶段设计规范)
例:根据两张表的内容查出张三的成绩
select t1.sname,t2.mark from t1,t2 where t1.sid=t2.sid and t1.sname=’zhang3’;
1.1传统连接(只能内连接,只能取交集)
#世界上小于100人的人口城市是哪个国家的?select city.name,city.countrycode,country.name from city,country where city.countrycode=country.code and city.population<100;
1.2 NATURAL JOIN(自连接的表要有共同的列名字)
SELECT city.name,city.countrycode ,countrylanguage.language ,city.populationFROM city NATURAL JOIN countrylanguage WHERE population > 1000000ORDER BY population;
1.3企业中多表连接查询(内连接)
select city.name,city.countrycode,country.name from city join country on city.countrycode=country.code where city.population<100;
建议:使用join语句时,小表在前,大表在后。
1.4外连接
select city.name,city.countrycode,country.name from city left join country on city.countrycode=country.code and city.population<100;
1.5 UNION(合并查询)
#范围查询OR语句mysql> select * from city where countrycode='CHN' or countrycode='USA';#范围查询IN语句mysql> select * from city where countrycode in ('CHN','USA');替换为:mysql> select * from city where countrycode='CHN' union allselect * from city where countrycode='USA' limit 10
union:去重复合并
union all :不去重复
使用情况:union<union all
标签: #source字符集mysql