MySql basic syntax and user rights management

Love can be late, but takeaways can't!

Log in to MySQL manually

1. mysql -uroot -p密码
2. mysql -hip -uroot -p连接目标的密码
3. mysql --host=ip --user=root --password=连接目标的密码

Operation database

C(Create): create create

* create database 数据库名称;
* create database if not exists 数据库名称;
* create database 数据库名称 character set 字符集名;

D(Delete): delete drop

* drop database 数据库名称;
* drop database if exists 数据库名称;

U(Update): modify alter

* alter database 数据库名称 character set 字符集名称;

R(Retrieve) query show

* show databases;查询数据库列表:
* show create database 数据库名称;查询某个数据库的创建语句

supplement

* use 数据库名称;
* create table 表名 like 被复制的表名;

Operation table

C(Create): Create

create table 表名(
	列名1 数据类型1,
	列名2 数据类型2,
	....
	列名n 数据类型n(此处没有逗号)

U(Update): modify

1. 修改表名
	alter table 表名 rename to 新的表名;
2. 修改表的字符集
	alter table 表名 character set 字符集名称;
3. 添加一列
	alter table 表名 add 列名 数据类型;
4. 修改列名称 类型
	alter table 表名 change 列名 新列别 新数据类型;
	alter table 表名 modify 列名 新数据类型;
5. 删除列
	alter table 表名 drop 列名;

R(Retrieve): query

show tables;查询表结构 

Operating data

Add data insert

insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

Delete data delete

delete from 表名 [where 条件];
delete from 表名; 不推荐使用。有多少条记录就会执行多少次删除操作
TRUNCATE TABLE 表名;推荐使用,效率更高先删除表,然后再创建一张一样的表

Modify data update

update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];如果不加任何条件,则会将表中所有记录全部修改

Query data select

select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段
having
	分组之后的条件
order by
	排序
limit
	分页限定

Multi-table query

-- 隐式内连接
select * from `sys_user` u , sys_role r where u.role_id=r.id; 
-- 显示内连接
select * from `sys_user` u INNER join sys_role r on u.role_id=r.id; 

-- 左外连接
select * from sys_user u left outer join sys_role r on u.role_id=r.id; 
-- 右外连接
select * from sys_user u right outer join sys_role r on u.role_id=r.id; 

-- 嵌套查询单行单列
SELECT * FROM emp WHERE emp.`salary` = (SELECT MAX(salary) FROM emp);
-- 嵌套查询多行单列
SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME =     '财务部' OR NAME = '市场部');
-- 嵌套查询多行多列
SELECT * FROM dept t1 ,(SELECT * FROM emp WHERE emp.`join_date` >     '2011-11-11')  t2 WHERE t1.id = t2.dept_id;

User Management

Add and delete users
添加用户语法:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

删除用户语法:DROP USER '用户名'@'主机名';
Modify user password
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
UPDATE USER SET PASSWORD = PASSWORD('abc') WHERE USER = 'root';
Query users:
USE myql;
SELECT * FROM USER;
Forgot to reset ROOT user password
  1. cmd -> net stop mysql stop mysql service (requires administrator to run cmd)
  2. Start the mysql service without authentication: mysqld --skip-grant-tables
  3. Open a new cmd window, directly enter the mysql command, and press Enter to log in successfully
  4. use mysql;
  5. update user set password = password(‘新密码’) where user = ‘root’;
  6. Close two cmd windows
  7. Manually open the task manager and end the mysqld.exe process
  8. Start mysql service **net start mysql **
  9. Log in with the new password.

authority management

Query permissions
SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'root'@'%';
Granted permission
GRANT 权限列表 ON 数据库名.表名 to '用户名'@'主机名';

GRANT ALL ON *.* TO 'zhangsan'@'localhost';给张三用户授予所有权限,在任意数据库任意表上
Revoke authority
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';

Guess you like

Origin blog.csdn.net/mrhs_dhls/article/details/107686316