mysql常用语句
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';
# 取消该用户的删除权限