Liunx下mysql的安装以及基本操作
一.Linux下mysql的安装:
1.参考此链接,此链接非常详细:https://blog.csdn.net/y353027520dx/article/details/77621468
二.Linux下mysql的基本操作:
1.数据库的创建并指定字符集
create database if not exists test_db default charset utf8 collate utf8_general_ci;
说明:a. charset utf8:字符集utf8
b.collate utf8_general_ci:排序规则 utf8_general_ci
2.数据库的删除
drop database test_db;
3.数据库的切换:
use test_db;
4.数据库表的创建:
create table customers(id int not null auto_increment, name char(20) not null, address varchar(50), city varchar(50), age int, ex varchar(100) default 'my-data', primary key(id)) engine = InnoDB default charset=utf8;
说明:char为不可变字符集,char(20) 代表在内存中占的地址就是20
varchar为可变字符集,varchar(50)代表内存中根据实际占用内存动态可变
创建表的的编码:charset=utf8
查看表结构:desc customers;
show create table customers;
5.数据库表的删除:
drop table customers;
6.数据库表的数据插入:
insert into customers(name,adress,city,age) values('zhangsan','地球上','陆地',18)
7.数据库表的数据删除:
delete from customers
truncate customers
说明:delete 删除数据,不会删除标记,可以通过binlog进行恢复数据
truncate 删除数据,会清除标记,数据不可恢复,会重置id
查看最后插入数据的id:select last_insert_id();
8.数据库的表数据修改:
update customers set name='ee' where id=1;
9.修改数据库的表名:
rename table customers to cs;
10.更新数据库表的结构:
增加一列:alter table cs add col varchar(50);
查询:select * from cs;
删除一列:alter table cs drop column col;
11.数据库的约束:
a.primary key :主键约束,不能为空,不可重复
b.unique:唯一约束,不能有重复值
c.default:默认值
d.not null :非空约束
e.foreign key:外键约束
举个例子设计带有外键的表:
create table cs_1(cs_id is not null ,area varchar(50) unique,constraint f_k foreign key(cs_id) references cs(id) );
外键将2张表关联起来
删除外键:alter table cs_1 drop foreign key f_k;
添加外键:alter table cs_1 constraint f_k foreign key(cs_id) references cs(id) ;
修改外键为级联操作数据(之前创建的外键,默认不可修改删除):alter table cs_1 constraint f_k foreign key(cs_id) references cs(id) on update casecade on delete casecade;
三.其他:
1.数据库的3层编码:
a.数据库的编码
b.数据库表的编码
c.数据库表的字段编码
2.查看对应的字符集:
a.查看数据库的字符集:show create dababase test_db;
b.查看表的字符集:show full fields from cs; 或 show full columns from cs; 查询结果可看字段的字符集
3.修改字符集:
修改表及字段的字符集:alter table cs convert to character set utf8 collate utf8_general_ci;
修改表的字符集:alter table cs default character set utf8 collate utf8_general_ci;
修改字段的字符集:alter table cs change ex exinfo varchar(120) character set utf8 collate utf8_general_ci;
4.binlog(mysql的操作日志,可用于同步数据,可恢复删除的数据):
a.打开binlog:vim /etc/mysql/mysql.cnf.d/mysqld.cnf,打开注释:log_bin ,需要重启mysql服务,service mysql restart
b.查看log的状态,show variables like "%log_bin%";
c.查看log_bin日志路径:cd /var/log/mysql
d.查看mysql-bin.000001的具体内容:mysqlbinlog mysql-bin.000001
或则在mysql下:show binlog events in 'mysql-bin.000001'
也可在mysql工具里查看:show binlog events in 'mysql-bin.000001'
e.恢复数据,反解binlog将所有Event_type 为query的sql,全部重新执行,排除delete或truncate的语句
用例:alibaba 的canal :https://github.com/alibaba/canal