前言
本文总结了 MySQL 的一些工作中常用的基础知识,演示环境为 DBeaver(海狸)连接CentOS 6.5上安装的 MySQL 5.6.32,MySQL的安装可参见 CentOS 6.5常用软件安装 中的MySQL部分,不同MySQL的版本可能会有不同的输出结果,望周知。
通用的三个步骤
- 创建数据库 create database
- 给某个用户授予访问权限 grant all privileges
- 刷新权限 flush privileges
# 创建数据库xxx
create database xxx;
# 给某用户赋予访问某数据库中某张表的权限
# 若用户不存在会创建一个新的用户,用户名为 userName,密码为 passwd,可以通过 ip 访问指定的库表
# 若写为 dbName.* 表示可以访问该数据库中的所有表
# ip可以指定为 %,代表某用户通过所有 ip 均可以访问,也可以指定某网段,例如 192.168.20.%
grant all privileges on dbName.tableName to userName@'ip' identified by 'passwd';
# 刷新权限,涉及到权限操作记得刷新
flush privileges;
显示正在连接的进程
- 如果MySQL查询数据觉得卡顿,可以查看MySQL正在执行的进程,把可能卡住的进程 kill 掉
# 显示现在连接的进程
show processlist;
# 输出示例
+----+--------+--------------------+------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+--------+--------------------+------------+---------+------+-------+------------------+
| 9 | zhihan | 192.168.217.1:4803 | zhihandata | Sleep | 147 | | NULL |
| 10 | zhihan | 192.168.217.1:4804 | zhihandata | Sleep | 147 | | NULL |
| 11 | zhihan | localhost | NULL | Query | 0 | init | show processlist |
+----+--------+--------------------+------------+---------+------+-------+------------------+
# 结束某个进程
kill id
DDL:增删改表结构
# 创建表
create table tableName(
colName1 colType1,
colName2 colType2,
...
);
几个建表规范
- 表的第一个字段为 自增长,非业务性 的字段
- 一定要有 创建时间,创建人,修改时间,修改人 字段
- 字段名 统一风格,例如:以什么开头,中间用什么连字符(例如_)
- 千万 不要用汉语拼音、首字母、中文 做字段名
# 示例
create table xxx(
id int auto_increment primary key,
...
create_time timestamp default current_timestamp,
create_user vartchar(100),
update_time timestamp default current_timestamp on update current_timestamp,
update_user varchar(100)
);
常见字段类型
-
数值类型
- int 整数
- long 长整数
- float 单精度(小数点后位数较少的)
- double 双精度(小数点后位数较多的)
- decimal 小数值(涉及到钱的字段使用该类型)
-
字符串
- char 定长字符串 0 - 255字节(一次申请255字节,无论是否使用完)
- varchar 变长字符串 0 - 65535字节(实际多少字节就存储多少字节)
- text
-
日期和时间
- date yyyy-MM-dd
- time hh:mm:ss
- datetime yyyy-MM-dd hh:mm:ss
- timestamp yyyy-MM-dd hh:mm:ss
主键
- 主键 = 非空 + 唯一约束
- 主键或唯一约束都可以针对多个字段设置,例如每个学校的学号都是从某个号码开始,那么就可以将学校和学号作为一个联合主键
DML:增删改查表内容
# 查询数据
select colName1, colName2, ... from tableName;
# 添加数据
insert into tableName(colName1, colName2, ...) values(colV1, colV2, ...);
# 更新数据
update tableName set colName1 = colV1 where colName2 = colV2;
# 删除数据
delete from tableName where colName1 = colV1;