1 DBeaver部署和使用
DBeaver是一款免费、开源的通用数据库工具,便于用户操作。
DBeaver的安装:
1.1 安装JDK1.8 64位(必须64位)
1.2 官网下载 Windows 64 位 的installer包,安装即可。
DBeaver的使用
页面上点击创建连接,输入IP地址,数据库类型(MySQL)、用户、密码,点击测试连接。(如:连接mysql要关注下3306端口是否放开。)
2 MySQL的建库、权限、登录、进程
create database testdb;
grant all privileges on testdb.* to master@'%' identified by 'bigdata';
flush privileges;
- 对于master用户的所有登录机器,都拥有testdb数据库下所有表的所有权限,密码是bigdata,会自动加密为暗文。
- % 代表任意客户端机器可以访问mysql服务器
如:192.168.1.1 表示这台机器有权限去访问,192.168.1.% 表示这个网段的所有ip机器有权限去访问。 - 查看用户、主机和密码:select user,authentication_string,host from mysql.user; 其中authentication_string代表加密后的密码。
[root@master]# mysql -uroot -bigdata-hmaster001 -P3306 mysql
注意:
- 密码不要写在命令行 不然 history 命令可以发现。
- -p后面如果非要写密码不能有空格,其他参数无所谓!
查看mysql进程的id:show processlist;
杀死id对应的进程:kill id;
3 MySQL字段类型
int 整型
long 长整型
float 单精度
double 双精度
decimal 小数值 钱有关的
char 字节 定长0-255 长度 ruozexxxxxxx 自动补齐
varchar 字符串
date 日期 YYYY-MM-DD
time 时间 HH:MM:SS
datetime 年月日时分秒 YYYY-MM-DD HH:MM:SS
timestamp 年月日时分秒 YYYY-MM-DD HH:MM:SS
datetime 和 timestamp 的区别:
相同点:两者都可用来表示YYYY-MM-DD HH:MM:SS类型的日期。
不同点:TIMESTAMP把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。
结论:对于跨时区的业务,TIMESTAMP更为合适。
4 MySQL常用命令
4.1 sql类型
DDL数据定义语言:create drop
DML数据操作语言:select insert update delete 增删改查
DCL数据控制语言:grant
4.2 建表规范、增删改查
create table ruoze(
id int(11) not null auto_increment, 第一列必须是id自增长
name varchar(255),
age int(3),
.....
create_user varchar(255),
create_time timestamp not null default current_timestamp,
update_user varchar(255),
update_time timestamp not null default current_timestamp on update current_timestamp,
primary key(id)
) DEFAULT CHARSET=utf8;
insert into ruozedata.ruoze(name,age) values('jj',18);
insert into ruozedata.ruoze(name,age) values('rz',37);
insert into ruozedata.ruoze(name,age) values('huhu',19);
update ruozedata.ruoze set age=33 where name='jj';
delete from ruozedata.ruoze where id=3;
select * from ruozedata.ruoze;
注意:
- 表名称和字段名称不要写中文。
- 统一表结构设计风格。
- 第一个字段必须是自增长字段,主键 无业务意义 架构设计的遵循。
- 一张表只有一个主键 primary key(id)
- create_user 、create_time 、update_user 、update_time 必须要有。
- 业务字段 务必加上注释。
4.3 常用语法
ifnull用法:例如求和函数不能出现空或null,必须赋默认值0。
select name, ifnull(sum(age),0) as age_sum from testdb.tb1 group by name;
join的用法
左连接,以左表为主,数据是全的;右表来匹配,匹配不到就null
右连接,以右表为主,数据是全的;左表来匹配,匹配不到就null
注意:
ifnull 和 join的结合使用,生产上不允许出现null,必须对null值做处理!
select a.*,
ifnull(b.i,''),
ifnull(b.name,''),
ifnull(b.age,'')
from a left join b on a.i=b.i;