1、用于数据库的连接管理
#MySQL接口自带的命令
h 或 help 或? 查看帮助
G 格式化查看数据(key:value)
T 或 tee 记录日志
c(5.7可以ctrl+c) 结束命令
s 或 status 查看状态信息
. 或 source 导入SQL数据
u或 use 使用数据库
q 或 exit 或 quit 退出
help命令的使用
mysql> help
mysql> help contents
mysql> help select
mysql> help create
mysql> help create user
mysql> help status
mysql> help show
source命令的使用
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
2.接受用户的SQL 语句
1.什么是SQL
结构化的查询语句
2.SQL的种类
DDL:数据定义语言
库对象:库名字、库属性
开发规范:库名小写
#创建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;
表对象:列名、列属性、约束
创建表:create table (开发做)
数据类型
int: 整数 -231 ~ 231 -1
varchar:字符类型 (变长)
char: 字符类型 (定长)
tinyint: 整数 -128 ~ 128
enum: 枚举类型
datetime: 时间类型 年月日时分秒
数据属性
not null: 非空
primary key: 主键(唯一且非空的)
auto_increment: 自增(此列必须是:primary key或者unique key)
unique key: 单独的唯一的
default: 默认值
unsigned: 非负数
comment: 注释
修改表定义:alter table (开发做)
DCL:数据控制语言
针对权限进行控制
#授权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:允许同时连接数量
DML:数据操作语言
操作表的数据行信息
#基础用法,插入数据
mysql> insert into stuvalues('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
delete
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;
DQL:数据查询语言
select:基础用法
字符集:是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
2.MySQL数据库的字符集
1)字符集(CHARACTER)
2)校对规则(COLLATION)
3.MySQL中常见的字符集
1)UTF8
2)LATIN1
3)GBK
4.常见校对规则
1)ci:大小写不敏感
2)cs或b
5.我们可以使用以下命令查看
mysql> show charset;
mysql> show collation;
***字符集设置
1.操作系统级别
[root@db01 ~]# source /etc/sysconfig/i18n
[root@db01 ~]# echo $LANG
zh_CN.UTF-8
2.操作系统客户端级别(SSH)
3.MySQL实例级别
方法1:在编译安装时候就指定如下服务器端字符集。
cmake .
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=all
方法2:在配置文件中设置字符集
[mysqld] character-set-server=utf8
4.建库级别
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 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.population
FROM city NATURAL JOIN countrylanguage
WHERE population > 1000000
ORDER BY population;
1.3企业中多表连接查询(内连接)
select city.name,city.countrycode,country.name
from city join countryon 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(合并查询)