MySQL入门篇(二)之常见命令管理
一、SQL结构化查询语言
SQL,英文全称Structured Query Language,中文意思是结构化查询语言。它是一种对关系数据库中的数据进行定义和操作的语言方法,是大多数关系数据库管理系统所支持的工业标准。
SQL分类:
DDL:数据定义语言,CREATE,ALTER,DROP。管理基础数据 <--运维熟练
DCL:数据控制语言,GRANT,REVOKE,COMMIT,ROLLBACK,用户授权,权限回收,数据提交回滚 <--运维要熟悉
DML:数据操作语言,SELECT,INSERT,DELETE,UPDATE,针对数据库里的表里的数据进行操作 <--开发熟练,运维了解
二、数据库基础管理
1、登录MySQL方法
()单实例MySQL登录的方法
mysql #无密码登录方式
mysql -u root #指定用户无密码登录
mysql -uroot -p #标准dba命令行登录
mysql -uroot -p123456 #非脚本一般不这样使用,密码明文,容易泄露 ()多实例防止密码泄露登录的方法
设置变量:HISTCONTROL=ignorespace
mysql -uroot -p123456 -S /data//mysql.sock ()远程链接登录
mysql -uroot -p -h 192.168.56.11 -P3306
-h 指定ip地址,-P指定端口号
2、MySQL数据库安全策略介绍
()为root设置比较复杂的密码
()删除无用的mysql库内的用户账号,只留root@localhost
()删除默认的test数据库
()删除用户的时候,授权的权限尽量最小,允许访问的主机范围最小化
()针对mysql数据库的用户处理,还有更严格的做法,例如删除root用户,添加新的管理员用户
3、命令讲解
- (1)创建数据库
() 语法:create database 库名;
()查看建表语句:show create database 库名;
()创建指定字符集的数据库:create database 库名 default character set 字符 collate 校对方式;
()查看字符集:show character set;
()示例:create database test1;
show create database test1;
create database test3 default character set utf8 collate utf8_general_ci; #创建utf8格式
#如果编译的时候指定了特定的字符集,则以后创建对应字符集的数据库就不需要指定字符集 -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
#提示:二进制软件包,安装的数据库字符集默认latinl - (2)切换数据库
()语法:use <dbname>
()示例:use test1; - (3)查看数据库
()语法:select database(); #相当于pwd
select user(); #查看当前用户
select version(); #查看当前版本
select now(); #查看当前时间 - (4)删除数据库
()语法
drop database <dbname>
()示例
drop database test1; - (5)删除数据库中指定用户
()语法:drop user "user"@"主机域"
()要求:可以是单引号,也可以是双引号。但是不能不加。如果主机名中有大写字母的则 drop 删除不了,可以用 delete
语句来删除 mysql.user 表中的用户。
delete from mysql.user where user=’root’ and host=’oldboy’;
flush privileges;
()示例:
drop user 'root'@'localhost';
drop user 'system'@"localhost";
drop user ''@"localhost"; - (6)创建用户和授权
() 查看 GRANT 命令帮助获取创建用户并授权的例子:
MariaDB [test1]> help grant;
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT ALL ON db1.* TO 'jeffrey'@'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost';
GRANT USAGE ON *.* TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR ; ()普通授权方法:先 Create 后 grant
a、语法
CREATE USER 'username'@'主机域' IDENTIFIED BY 'mypass';
GRANT ALL ON dbname.* to 'username'@'localhost' b、示例
create user 'user1'@'localhost' identified by '';
grant all on test1.* to 'user1'@'localhost'; ()运维人员常用创建用户方法:使用 grant 命令在创建用户的同时进行授权
a、语法
GRANT ALL PRIVILEGES ON dbname.* to 'username'@'主机域' identified by 'password'; b、说明
GRANT ALL PRIVILEGES ON dbname.* to 'username'@'主机域' identified by 'password'
授权命令 对应权限 目标:库和表 用户名和客户端主机 用户密码 说明:上述命令是授权localhost主机上通过用户username管理dbname数据库的所有权限,密码为passwd,其中username,dbname,passwd可根据业务的情况修改
对于web连接用户授权尽量采用最小化原则,很多开源软件都是web界面安装,因此在安装期间除了select,insert,update,delete 4个权限外,还需要create,drop等比较危险的权限。 grant select,insert,update,create,drop on blog.* to blog@localhost identified by ‘’ 常规情况下授权select,insert,update,delete 4个权限即可,有的源软件,例如discuz,bbs还需要create,drop等比较危险的权限。生成数据库表后,要收回create,drop授权 ()远程主机授权连接数据库
grant 命令的语法中主机域部分为授权访问数据库的客户端主机,可以用域名、 IP 或 IP 段来表示。远程主机
的授权方法有 种,具体如下:
a、方法一:百分号匹配法
grant all on *.* to test@'192.168.0.%' identified by '';
flush privileges; b、方法二:子网掩码匹配法
grant all on *.* to test@'192.168.1.0/24' identified by '';
grant all on *.* to test@'192.168.1.0/255.255.255.0' identified by '';
flush privileges;
#如果是web连接数据库,尽量不要授权all,而是select,insert,update,delete ()查看权限
MariaDB [test1]> grant all on test1.* to test@'192.168.56.0/24' identified by '';
Query OK, rows affected (0.00 sec)
MariaDB [test1]> show grants for test@'192.168.56.0/24';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for test@192.168.56.0/ |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'192.168.56.0/24' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT ALL PRIVILEGES ON `test1`.* TO 'test'@'192.168.56.0/24' |
+-------------------------------------------------------------------------------------------------------------------+
rows in set (0.00 sec) 查看权限可以看出授权是分为 步:
第一步是授权可登陆 GRANT USAGE ON *.*。 USAGE 表示只有登陆权限。
第二步是授权可访问 ON `test1`.* TO 'test'@'192.168.56.0/24' ()权限回收
MariaDB [test1]> revoke insert on test1.* from test@'192.168.56.0/24';
Query OK, rows affected (0.01 sec) MariaDB [test1]> show grants for test@'192.168.56.0/24';
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for test@192.168.56.0/ |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'192.168.56.0/24' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `test1`.* TO 'test'@'192.168.56.0/24' |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
rows in set (0.00 sec) #MySQL 权限列表如下
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY,
TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT,
TRIGGER MySQL包含关系 :数据库服务器>数据库(多个实例)>多个库>多个表>多个字段行列(数据) - (7)创建表
()语法:create table <表名>(
<字段名1><类型n>);
提示:其中create table是关键字,不能更改,但是大小写可以变化 ()下面是人工写法设计的建表语句例子,表名student
create table student(
id int() not null,
name char() not null,
age tinyint() NOT NULL default '',
dept varchar() default NULL
); ()查看创建表的语句
mysql> show create table student;
create table student( #create table表示创建表的固定关键字,student为表名
id int() not null, #学号列,数字类型,长度为4,不能为空值
name char() not null, #名字列,定长字符类型,长度20,不能为空
age tinyint() NOT NULL default '', #年龄列,很小的数字类型,长度为2,不能为空,默认为0值
dept varchar() default NULL #性别列,变长字符类型,长度16,默认为空。
ENGINE=lnnoDB DEFAULT CHARSET=latinl #引擎和字符集,引擎默认为InnoDB,字符集,继承库的latinl
); #需要注意的事:MySQL5.1和MySQL5.
环境的默认建表语句中的引擎的不同,如果希望控制引擎,就要在建表语句里显示的指定引擎建表;MySQL5.1以及默认引擎为MyISAM,MySQL5.,以后默认引擎为InnoDB。 - (8)生产场景案例
某sns产品生产正式建表语句
use sns;
set names gbk;
CREATE TABLE `subject_comment_manager` (
`subject_comment_manager_id` bigint() NOT NULL auto_increment COMMENT '主键',
`subject_type` tinyint() NOT NULL COMMENT '素材类型',
`subject_primary_key` varchar() NOT NULL COMMENT '素材的主键',
`subject_title` varchar() NOT NULL COMMENT '素材的名称',
`edit_user_nick` varchar() default NULL COMMENT '修改人',
`edit_user_time` timestamp NULL default NULL COMMENT '修改时间',
`edit_comment` varchar() default NULL COMMENT '修改的理由',
`state` tinyint() NOT NULL default '' COMMENT '0代表关闭,1代表正常',
PRIMARY KEY (`subject_comment_manager_id`),
KEY `IDX_PRIMARYKEY` (`subject_primary_key`()), #<==括号内的32表示对前32个字符做前缀索引。
KEY `IDX_SUBJECT_TITLE` (`subject_title`())
KEY `index_nick_type` (`edit_user_nick`(),`subject_type`)#<==联合索引,此行为新加的,用于给大家讲解的。实际表语句内没有此行。
) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8; 4、索引
(1)为表的字段创建索引
索引就象书的目录一样,如果在字段上建立了索引,那么以索引为查询条件时可以加快查询数据的速度.
创建主键索引
查询数据库,按主键查询是最快的,每个表只有一个主键列,但是可以用多个普通索引列。主键列要求列的所有内容必须唯一,而普通索引不要求内容必须唯一
主键就类似我们在学校学习时的学号一样,班级内是唯一的,整个表的每一条记录的主键值在表内都是唯一的,用来唯一标识一条记录。 ()建立主键索引的方法:
drop table student;
create table student(
id int() not null AUTO_INCREMENT,
name char() not null,
age tinyint() NOT NULL default '',
dept varchar() default NULL,
primary key(id),
KEY index_name(name)
); #提示:
# primary key(id)<==主键
# KEY index_name(name)<==name字段普通索引 ()mysql> desc student; 查看刚刚创建的表结构。
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int() | NO | PRI | NULL | auto_increment |
| name | char() | NO | MUL | NULL | |
| age | tinyint() | NO || | |
| dept | varchar() | YES | | NULL| |
+-------+-------------+------+-----+---------+----------------+ #PRL为主键的标示,MUL为普通索引的表示 ,auto_increnment 代表数据自增 ()利用alter命令修改id列为自增主键值
alter table student change id id int primary key auto_increment; 创建的表的时候,可以指定
mysql> create table student(
id int() not null AUTO_INCREMENT,
name char() not null,
age tinyint() NOT NULL default '',
dept varchar() default NULL,
primary key(id),
KEY index_name(name)
); 提示:
KEY index_name(name) <==name字段普通索引
优化:在唯一值多的列上建索引查询效率高
还可以自定义自增的长度
EBGUBE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8; ()查看索引【前提都需要进入库】
show index from student;
查看索引\G 可以查看的更详细:show index from student\G
(2)查看表结构
()语法:desc 表名
()示例:desc student;
(3)建表后利用alter增加普通索引,删除建表时创建的index_name索引
()语法:alter table 表名 add|drop index 索引名称
alter table student add index index_name;
alter table student drop index index_name;
()示例:
create index index_name on student(name); #创建索引
show index from student; #查看索引
create index index_age on student(name()); #创建指定n个字符索引
show index from student\G #查看索引
(4)为表的多个字段创建联合索引
如果查询数据的条件是多列时,我们可以为多个查询的列创建联合索引,甚至,可以为多个列的前n个字符创建联合索引,演示如下:
创建联合索引,和单个索引不冲突
create index ind_name_dept on student(name,dept); #在student表创建联合索引
联合索引作用,查询更快
show index from student\G
创建联合索引,并指定值大小:
create index ind_name_dept on student(name(),dept());
#name 前8个字符,dept 前10个字符
#提示:尽量在唯一值多的大表上建立索引。
什么时候创建联合索引?
只有程序用这两个条件查询,采用联合索引,这个主要是看开发。
提示:按条件列查询数据时,联合索引是由前缀生效特性的
(5) 创建唯一索引(非主键)
create unique index uni_ind_name on student(name);
(6)索引小结:
创建主键索引:
alter table student chage id id int primary key auto_increment;
删除主键索引(主键列不能自增):
alter table student drop primary key;
添加普通索引:
alter table student add index index_dept(dept);
根据的前n个字符创建索引:
create index index_dept on student(dept());
根据多个列创建联合索引:
create index index_name_dept on student(name,dept);
创建唯一索引:
create unique index uni_ind_name on student(name);
删除普通索引与唯一索引:
alter table student drop index index_dept;
drop index index_dept on student;
(7)索引列的创建及生效条件
Q1:既然索引可以加快查询速度,那么就给所有的列加索引吧?
A1:因为索引不但占用系统空间,而且更新数据时还需要维护索引数据的,因此索引是一把双刃剑,并不是越多越好,例如:数十到几百行的小表上无需建立索引,插入更新频繁,读取比较少的需要少建立索引. Q2:需要在哪些列上创建索引才能加快查询速度呢?
select user,host from mysql.user where
password=…..,索引一定要创建在where后的条件列上,而不是select后的选择数据的列上。另外,我们要尽量选择在唯一值多的大表上的列建立索引,例如,男女生性别列唯一值少,不适合建立索引。
(8)查看唯一值数量
select count(distinct user) from mysql.user;
唯一值就是相同的数量,例如查询user那么相同的user就是唯一值
(9)创建索引的基本知识小结:
■ 索引类似书籍的目录,会加快查询数据的速度
■ 要在表的列(字段)上创建索引
■ 索引会加快查询速度,但是也会影响更新的速度,因为更新要在维护索引数据
■ 索引列并不是越多越好,要在频繁查询的表语句where后的条件列上创建索引
■ 小表或重复值很多的列上可以不建索引,要在大表以及重复值少的条件上创建索引
■ 多个列联合索引有前缀生效特性
■ 当字段内容前N个字符已经接近唯一时,可以对字段的前N个字符创建索引
■ 索引从工作方式区别,有主键,唯一,普通索引
■ 索引类型有BTREE(默认)和hash(适合做缓存(内存数据库))等。
(10)主键索引和唯一索引的区别
()对于主键/unique constraint oracle/sql server/mysql等都会自动建立唯一索引;
()主键不一定只包含一个字段,所以如果你在主键的其中一个字段建唯一索引还是必要的;
()主健可作外健,唯一索引不可;
()主健不可为空,唯一索引可;
()主健也可是多个字段的组合;
()主键与唯一索引不同的是:
a.有not null属性;
b.每个表只能有一个。
5、往表中插入数据
()命令语法:insert into <表名>[(<字段名1>[..<字段名n>])]values(值1)[,(值n)]
()建立测试表:
CREATE TABLE `test1` (
`id` int() NOT NULL,
`name` char() NOT NULL,
`age` int() DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
()插入值
insert into test1(id,name,age) values(,'gaoyuliang',);
insert into test1 values(,"xiaoqiang",);
()查询
select * from test1;
+----+------------+------+
| id | name | age |
+----+------------+------+
| | gaoyuliang | |
| | xiaoqiang | |
+----+------------+------+
()批量插入
insert into test1 values(,'xiaohong',),(,'xiaogang',);
MariaDB [oldboy]> select * from test1;
+----+------------+------+
| id | name | age |
+----+------------+------+
| | gaoyuliang | |
| | xiaoqiang | |
| | xiaohong | |
| | xiaogang | |
+----+------------+------+
()清空表中所有值
MariaDB [oldboy]> truncate table test1;
Query OK, rows affected (0.00 sec) MariaDB [oldboy]> select * from test1;
Empty set (0.00 sec) ()一条命令创建
MariaDB [oldboy]> insert into test1 values (,'oldboy',),(,'oldgirl',),(,'inca',),(,'zuma',),(,'kaka',);
Query OK, rows affected (0.00 sec)
Records: Duplicates: Warnings: MariaDB [oldboy]> select * from test1;
+----+---------+------+
| id | name | age |
+----+---------+------+
| | oldboy | |
| | oldgirl | |
| | inca | |
| | zuma | |
| | kaka | |
+----+---------+------+
rows in set (0.00 sec)
6、查询数据
()语法:select <字段1,字段2,…> from <表名> where <表达式>
#其中,select,from,where是不能随便改的,是关键字,支持大小写
()不进入库查询
MariaDB [(none)]> select * from oldboy.test1 where name="oldboy";
+----+--------+------+
| id | name | age |
+----+--------+------+
| | oldboy | |
+----+--------+------+
row in set (0.01 sec)
()只查询前2行
MariaDB [oldboy]> select * from test1 limit ;
+----+---------+------+
| id | name | age |
+----+---------+------+
| | oldboy | |
| | oldgirl | |
+----+---------+------+
rows in set (0.00 sec)
()从第二条开始查,查找2个
MariaDB [oldboy]> select * from test1 limit ,;
+----+---------+------+
| id | name | age |
+----+---------+------+
| | oldgirl | |
| | inca | |
+----+---------+------+
rows in set (0.00 sec)
()按照条件查询
MariaDB [(none)]> select * from oldboy.test1 where name="oldboy";
+----+--------+------+
| id | name | age |
+----+--------+------+
| | oldboy | |
+----+--------+------+
#提示:查找字符串类型的条件的值要带单引号,数字值不带引号。
()查询多个条件
MariaDB [oldboy]> select * from test1 where name='oldgirl' and id=;
+----+---------+------+
| id | name | age |
+----+---------+------+
| | oldgirl | |
+----+---------+------+
row in set (0.00 sec)
()范围查询
MariaDB [oldboy]> select * from test1 where id>;
+----+------+------+
| id | name | age |
+----+------+------+
| | inca | |
| | zuma | |
| | kaka | |
+----+------+------+
rows in set (0.00 sec) ()示例:
创建学生表
drop table student;
create table student(
Sno int() NOT NULL COMMENT '学号',
Sname varchar() NOT NULL COMMENT '姓名',
Ssex char() NOT NULL COMMENT '性别',
Sage tinyint() NOT NULL default '' COMMENT '学生年龄',
Sdept varchar() default NULL COMMENT '学生所在系别',
PRIMARY KEY (Sno) ,
key index_Sname (Sname)
) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=latin1; 插入内容
create table course(
Cno int() NOT NULL COMMENT '课程号',
Cname varchar() NOT NULL COMMENT '课程名',
Ccredit tinyint() NOT NULL COMMENT '学分',
PRIMARY KEY (Cno)
) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=latin1; 插入内容
CREATE TABLE `SC` (
SCid int() NOT NULL auto_increment COMMENT '主键',
`Cno` int() NOT NULL COMMENT '课程号',
`Sno` int() NOT NULL COMMENT '学号',
`Grade` tinyint() NOT NULL COMMENT '学生成绩',
PRIMARY KEY (`SCid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 插入内容
INSERT INTO course values(,'Linux中高级运维',);
INSERT INTO course values(,'Linux高级架构师',);
INSERT INTO course values(,'MySQL高级Dba',);
INSERT INTO course values(,'Python运维开发',);
INSERT INTO course values(,'Java web开发',); 插入内容
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,);
INSERT INTO SC(Sno,Cno,Grade) values(,,); 检查,查看表格式或者表内容
MariaDB [oldboy]> desc SC; or select * from SC;
+-------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+----------------+
| SCid | int() | NO | PRI | NULL | auto_increment |
| Cno | int() | NO | | NULL | |
| Sno | int() | NO | | NULL | |
| Grade | tinyint() | NO | | NULL | |
+-------+------------+------+-----+---------+----------------+
MySQL入门篇(二)之常见命令管理的更多相关文章
- 第二章 MySQL入门篇
第一章 MySQL入门篇 一.MySql简介 简言: 和SQL Server数据库相同,MySQl也是一个关系型数据库管理系统.由瑞典的MySQL AB公司开发,2008年被SUN公司收购,2009年 ...
- 最新MySQL入门篇
一.SQL简介 SQL:结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系数据库系 ...
- 【SSRS】入门篇(二) -- 建立数据源
原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...
- linux学习:【第2篇】之常见命令
linux之常见命令 创建一个目录 /data mkdir /data ls -l /data/ cd /data/ pwd 相对路径与绝对路径 1.绝对路径 从根开始的路径 /data 2.相对路径 ...
- MySQL入门,第一部分,全局管理命令
1.连接数据库命令 mysql -h localhost -u root -p 回车后输入密码即可连接到数据库 2.显示当前mysql管理系统中的所有数据库 SHOW DATABASES; 3.显示当 ...
- MySQL入门(二)
一 MySQL概述 MySQL是一个很受欢迎的开源数据库,当我从Oracle转来做MySQL的时候,感觉最深刻的一点就是,这家伙居然是Server和Storage分开的!而且更不能忍的是,它竟然是插件 ...
- MySQL入门篇(七)之Xtrabackup备份与恢复
一.Xtrabackup介绍 MySQL冷备.mysqldump.MySQL热拷贝都无法实现对数据库进行增量备份.在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况 ...
- MySQL入门篇(六)之mysqldump备份和恢复
一.备份单个数据库 1.备份命令:mysqldump MySQL数据库自带的一个很好用的备份命令.是逻辑备份,导出 的是SQL语句.也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或生成备 ...
- MySQL入门篇(五)之高可用架构MHA
一.MHA原理 1.简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Faceb ...
随机推荐
- poj3718 Facer's Chocolate Dream
题目链接 正解:组合数+$dp$. 今天考试的题,考试的时候感觉自己有点脑残过头了.. 似乎发现了所有$1$其实都是一样的,然后不知道怎么强制每种物品只选一个.. 然后就写了一个所有物品可以选任意个的 ...
- Apache Kafka系列(七)Kafka Repartition操作
Kafka提供了重新分区的命令,但是只能增加,不能减少 我的kafka安装在/usr/local/kafka_2.12-1.0.2目录下面, [root@i-zk1 kafka_2.-]# bin/k ...
- 1067. [SCOI2007]降雨量【线段树】
Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意 Y<Z<X,Z年的降雨量严格小于X年.例如2002,2003, ...
- 【[SDOI2014]数表】
求 \[\sum_{i=1}^N\sum_{j=1}^Mσ(gcd(i,j))[σ(gcd(i,j))<=a]\] \(σ\)表示约数和函数 感觉非常难求的样子 先把套路搞出来 \[f(n)=\ ...
- selenium + python自动化测试unittest框架学习(七)随机生成姓名
在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...
- PyDev For Eclipse
eclipse安装Pydev 1.根据自己的eclipse和你安装的python选择可以安装的版本 Update sites for various PyDev versions: Latest ve ...
- HDU 1233 还是畅通工程(Kruskal算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 还是畅通工程 Time Limit: 4000/2000 MS (Java/Others) ...
- 解析oracle对select加锁的方法以及锁的查询 转
转自 https://www.jb51.net/article/37587.htm 本篇文章是对oracle对select加锁的方法以及锁的查询进行了详细的分析介绍,需要的朋友参考下 解析oracle ...
- EF Core 中DbContext不会跟踪聚合方法和Join方法返回的结果,及FromSql方法使用讲解
EF Core中: 如果调用Queryable.Count等聚合方法,不会导致DbContext跟踪(track)任何实体. 此外调用Queryable.Join方法返回的匿名类型也不会被DbCont ...
- git提交代码到码云
日常代码一般提交到github比较多,但我还是钟爱马爸爸,没错就是码云. 码云是中文版的代码托管的网站,不存在打开网速问题,使用也蛮方便的,日常自己保存托管代码已经足够,平时使用git提交代码到码云是 ...