1、数据库

创建数据库

create database skyhu;
create database skyhu character set utf8 collate utf8_bin; #设置默认字符集

查看数据库

show databases;

使用数据库

use skyhu;

删除数据库

drop database skyhu;

2、表

查看所有的表

show tables;

创建表

create table hq (id int, name varchar(10));
CREATE TABLE m(id INT, name VARCHAR(10), PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES n(id), UNIQUE (name));
CREATE TABLE n SELECT * FROM m;# 直接将查询结果导入或复制到新创建的表
CREATE TABLE m LIKE n;# 新创建的表与一个存在的表的数据结构类似
CREATE TEMPORARY TABLE l(id INT, name VARCHAR(10));#创建一个临时表
CREATE TEMPORARY TABLE tt SELECT * FROM n;#直接将查询结果导入或复制到新创建的临时表

删除一个存在表

DROP TABLE IF EXISTS m;

更改存在表的名称

ALTER TABLE n RENAME m;
RENAME TABLE n TO m;

查看表的结构

DESC n; # 因为简单,所以建议使用

查看表的创建语句

SHOW CREATE TABLE n;

表的结构

添加字段

ALTER TABLE n ADD age VARCHAR(2) ;

删除字段

ALTER TABLE n DROP age;

更改字段属性和属性

ALTER TABLE n CHANGE age a INT;

只更改字段属性

ALTER TABLE n MODIFY age VARCHAR(7) ;

表的数据

增加数据

INSERT INTO n VALUES (1, 'tom', '23'), (2, 'john', '22');

把数据复制一遍重新插入

INSERT INTO n SELECT * FROM n;

删除数据

DELETE FROM n WHERE id = 2;

更改数据

UPDATE n SET name = 'tom' WHERE id = 2;

数据查找

SELECT * FROM n WHERE name LIKE '%h%';

数据排序(反序)

SELECT * FROM n ORDER BY name, id DESC ;

3、用户

增加用户

create user skyhu@localhost identified by "password";

删除用户

DROP USER 'test'@'localhost';

更改用户密码

SET PASSWORD FOR 'test'@'localhost' = PASSWORD('test');

用户授权

GRANT ALL PRIVILEGES ON *.* TO test@localhost IDENTIFIED BY 'test';# 授予用'test'密码登陆成功的test@localhost用户操作所有数据库的所有表的所有的权限
FLUSH PRIVILEGES ; # 刷新系统权限表,使授予权限生效

撤销用户授权

REVOKE DELETE ON *.* FROM 'test'@'localhost'; # 取消该用户的删除权限

数据库备份

mysqldump -uroot -p password  dbname > file.sql  #备份整个数据库
mysqldump -uroot -p password dbname table_name > file.sql #备份数据库的某个表
mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql#备份某个数据中的多个表
mysqldump -u root -h host -p --all-databases --single-transaction > backdb.sql  #备份所有数据库 --single-transaction 参数不锁表

还原数据库

mysql -uroot -p password dbname <file.sql

查看MySql数据库物理文件存放位置

show global variables like "%datadir%" ;

xtrabackup 增量备份,大数据用这个备份

1、建用户

grant all on . to root@'192.168.%.%' identified by "123456";
create user skyhu@192.168.145.* identified by "123456";

2、忘记本地密码

vim /etc/my.cnf skip-grant-tables增加 重启mysql服务
在修改密码

3、修改密码

alter user skyhu@localhost identified by "123456";
例子:mysql> set password for root@localhost = password('123');
例子:mysqladmin -uroot -p123456 password 123
例子: update user set password=password('123') where user='root' and host='localhost';flush privileges;

4、删除用户
drop user skyhu@'192.168.145.%';

5、权限管理
grant all on *.* to skyhu@'192.168.145.%' identified by "123456" with grant option; with grant option参数 它的权限可以传递给其它用户

`grant insert,create,update,select,delete on wordpress to skyhu@'192.168.145.
%' identified by "123456";`

show grants for wordpress@'10.0.0.%'; 查看权限
revoke delete on wordpress.* from 'wordpress'@'10.0.0.%'; 回收权限

6、创建库
CREATE DATABASE zabbix CHARSET utf8mb4 COLLATE utf8mb4_bin;
查询库
show create database zabbix;
删除库
drop database zabbix;

7、建表

CREATE TABLE stu (
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '学号',
sname VARCHAR(255) NOT NULL COMMENT '姓名',
age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄',
gender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性别',
intime DATETIME NOT NULL DEFAULT NOW() COMMENT '入学时间'
)ENGINE INNODB CHARSET utf8mb4;

PRIMARY KEY : 主键约束,表中只能有一个,非空且唯一.
NOT NULL : 非空约束,不允许空值
UNIQUE KEY : 唯一键约束,不允许重复值
DEFAULT : 一般配合 NOT NULL 一起使用.
UNSIGNED : 无符号,一般是配合数字列,非负数
COMMENT : 注释
AUTO_INCREMENT : 自增长的列

新创建的表与一个存在的表的数据结构类似

create table stu2 like stu

直接将查询结果导入或复制到新创建的表

CREATE TABLE n SELECT * FROM m;

删除一个存在表

DROP TABLE IF EXISTS m;

更改存在表的名称

ALTER TABLE n RENAME m;
RENAME TABLE n TO m;

查看表的结构(以下五条语句效果相同)

DESC n; # 因为简单,所以建议使用

查看表的创建语句

SHOW CREATE TABLE n;

表的结构

添加字段

ALTER TABLE n ADD age VARCHAR(2) ;

删除字段

ALTER TABLE n DROP age;

更改字段属性和属性

ALTER TABLE n CHANGE age a INT;

只更改字段属性

ALTER TABLE n MODIFY age VARCHAR(7) ;

表的数据

增加数据

INSERT INTO n VALUES (1, 'tom', '23'), (2, 'john', '22');
INSERT INTO n SELECT * FROM n;  # 把数据复制一遍重新插入

删除数据

DELETE FROM n WHERE id = 2;

更改数据

UPDATE n SET name = 'tom' WHERE id = 2;

数据查找

SELECT * FROM n WHERE name LIKE '%h%';

数据排序(反序)

SELECT * FROM n ORDER BY name, id DESC ;

“India 印度”和”Angola 安哥拉”的第二個字母都是 n。
你可以用底線符_當作單一個字母的萬用字元。
SELECT name FROM world WHERE name LIKE '_n%' ORDER BY name

用户

增加用户

CREATE USER 'test'@'localhost' IDENTIFIED BY 'test';

删除用户

DROP USER 'test'@'localhost';
FLUSH PRIVILEGES ;

更改用户密码

SET PASSWORD FOR 'test'@'localhost' = PASSWORD('test');
UPDATE mysql.user SET Password=Password('t') WHERE User='test' AND Host='localhost';
FLUSH PRIVILEGES ;

用户授权

GRANT ALL PRIVILEGES ON *.* TO test@localhost IDENTIFIED BY 'test';

授予用'test'密码登陆成功的test@localhost用户操作所有数据库的所有表的所有的权限

FLUSH PRIVILEGES ; # 刷新系统权限表,使授予权限生效

撤销用户授权

REVOKE DELETE ON *.* FROM 'test'@'localhost'; # 取消该用户的删除权限

标签: mysql

添加新评论