mysql -uroot -p<密码>
1. mysql> set password for 'root'@'localhost' = password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> alter user user() identified by '123456';
Query OK, 0 rows affected (0.01 sec)
3. mysql> update mysql.user set password=password('654321') where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
Unknown column ‘password’ in 'field list’
(报这种错误的话是新的mysql数据库下已经没有password这个字段了,将等号之前password字段改成了authentication_string) 改完之后记得刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
退出数据库(三种方法)
mysql> \q
mysql> exit
mysql> quit
● 查看当前用户
mysql> select user();
±---------------+
| user() |
±---------------+
| root@localhost |
±---------------+
1 row in set (0.00 sec)
● 查看当前使用的数据库
mysql> select database();
±-----------+
| database() |
±-----------+
| NULL |
±-----------+
1 row in set (0.00 sec)
● 创建库db1
mysql> create database db1;
Query OK, 1 row affected (0.00 sec)
● 查询库
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| db1 |
| mysql |
| performance_schema |
| sys |
| test |
±-------------------+
6 rows in set (0.00 sec)
● 切换库
mysql> use db1;
Database changed
● 删除库
mysql> drop database db1;
Query OK, 0 rows affected (0.01 sec)
4.1 创建表
命令:create table <表名> ( <字段名1> <类型1> [,…<字段名n> <类型n>]);
例:创建一个名为employess的表
mysql> CREATE TABLE employees ( number CHAR(7) NOT NULL PRIMARY KEY, name CHAR(8) NOT NULL, sex TINYINT NOT NULL, date DATE NOT NULL, Tel CHAR(11) NOT NULL, home CHAR(20))ENGINE=INNODB;
Query OK, 0 rows affected (0.02 sec)
4.2 更改表名称
mysql> alter table <想修改的表名> rename <修改后的表名>;
mysql> alter table employees rename t1;
Query OK, 0 rows affected (0.04 sec)
4.3 表插入数据(三种方法,效果相同)
向数据表employees中(表中列包括number,name,sex,date,Tel,home)插入如下的一行:
0000000 zhangsan 1 2021-5-15 12345678908 null
(null 表示家庭住址home这个字段为空值,暂不插入内容)
mysql> insert into employees
-> values ('0000000','zhangsan',1,'2021-5-15','12345678908',null);
Query OK, 1 row affected (0.01 sec)
mysql> insert into employees(number,name,sex,date,Tel)
-> values ('0000001','lisi',0,'2021-5-15','12345678907');
Query OK, 1 row affected (0.00 sec)
mysql> insert into employees
-> set number='0000002',name='wangwu',sex=1,date='2021-5-15',Tel='12345678906';
Query OK, 1 row affected (0.00 sec)
插入多行数据
例:insert into t1(id,name) values(1,‘php’),(2,‘java’),(3,‘python’);
4.4 查询表
查询数据库中所有表
show tables
±--------------+
| Tables_in_db1 |
±--------------+
| employees |
±--------------+
查询表中所有数据
mysql> select * from employees;
±--------±---------±----±-----------±------------±-----+
| number | name | sex | date | Tel | home |
±--------±---------±----±-----------±------------±-----+
| 0000000 | s7 | 1 | 2021-05-15 | 12345678908 | NULL |
| 0000001 | s7 | 0 | 2021-05-15 | 12345678907 | NULL |
| 0000002 | s7 | 1 | 2021-05-15 | 12345678906 | NULL |
±--------±---------±----±-----------±------------±-----+
查询表中某列信息
mysql> decs <表名> <列名>
查询表中的某人各别信息
select <列名>,<列名>
from employees
where <列名>='信息'
例:查询数据库db1的数据表employees中number为0000001的name、sex、date。
mysql> select name,sex,date
-> from employees
-> where number=‘0000001’;
±-----±----±-----------+
| name | sex | date |
±-----±----±-----------+
| lisi | 0 | 2021-05-15 |
±-----±----±-----------+
假如查询表中员工姓“张”的一些信息则修改where子句即可
例:where 员工姓名 like ‘张%’;
查员工编号第三位数字为3的即为:where 员工编号 like ‘_3%’;
4.5 更新表数据
mysql> update employees
-> set name='zhouba'
-> where number='0000002';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
如果employees数据表中有多条记录,不添加where子句,则将所记录行name都变成zhouba
更新完查询
mysql> select * from employees;
±--------±---------±----±-----------±------------±-----+
| number | name | sex | date | Tel | home |
±--------±---------±----±-----------±------------±-----+
| 0000000 | s7 | 1 | 2021-05-15 | 12345678908 | NULL |
| 0000001 | s7 | 0 | 2021-05-15 | 12345678907 | NULL |
| 0000002 | zhouba | 1 | 2021-05-15 | 12345678906 | NULL | |
±--------±---------±----±-----------±------------±-----+
4.6 删除数据表(两种方法)
mysql> delete from <表名>
mysql> delete from employess;
Query OK, 1 row affected (0.00 sec)
mysql> truncate table <表名>
mysql> truncate table employesa;
Query OK, 0 rows affected (0.03 sec)
4.7 清空表
mysql> delete from employees;
mysql> delete from employees;
Query OK, 2 rows affected (0.00 sec)
清空某一行数据
mysql> delete from employees number='0000000';
4.8 显示表结构
mysql> describe employees;
±-------±-----------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±-------±-----------±-----±----±--------±------+
| number | char(7) | NO | PRI | NULL | |
| name | char(8) | NO | | NULL | |
| sex | tinyint(4) | NO | | NULL | |
| date | date | NO | | NULL | |
| Tel | char(11) | NO | | NULL | |
| home | char(20) | YES | | NULL | |
±-------±-----------±-----±----±--------±------+
6 rows in set (0.01 sec)
4.9 修改表数据
增加一列
mysql> alter table <表名> add <列名> <类型>;
例:在数据库db1中的employees表中增加cloumn列(text为类型)
mysql> alter table employees add cloumn text;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
删除某列
mysql> alter table <表名> drop <列名> ;
mysql> alter table employees drop cloumn;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
(1)普通索引(INDEX):允许重复和空值
(2)唯一索引(UNIQUE):不允许出现重复。可以有多个唯一索引。唯一可为null;唯一约束放在一 个或者多个列上,这些列或列的组合必须有唯一的;
(3)主键索引(PRIMARY KEY):非空,唯一
(4)复合索引:用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)
(5)全文索引(FULLTEXT):可重复和空值,只能在char,varchar,text类型创建
where match(列名)against (‘查找内容’);
(6)空间索引:对空间数据类型的列建立的索引
聚合索引(可以通过索引找到需要的数据)
非聚合索引(可以查到记录对应的主键值,再使用主键的值通过索引找到需要的数据)
创建索引:
create 【索引类型】index 索引名 on 表名 (创建索引的列);
或者创建表时之间在列后面加上索引类型。
或者修改表alter table 表名 add index 索引名 (索引列);
删除索引:drop index 索引名;
查看索引:show index from 表名;
索引命令参考于:链接
权限相关
授予操作权限(将test数据库中所有表的select和insert权限授予test用户):
grant select,insert on test.* to 'test'@'localhost' identified by '123'
查看账号权限:
show grants for 'test'@'localhost'
收回操作权限:
revoke insert on test.* from 'test'@'localhost'
授予所有数据库的所有权限:
grant all privileges on *.* to 'test'@'localhost'
授予所有数据库的所有权限(包括grant):
grant all privileges on *.* to 'test'@'localhost' with grant option
授予SUPER PROCESS FILE权限(系统权限不能指定数据库):
grant super,process,file on *.* to 'test'@'localhost'
只授予登录权限:
grant usage on *.* to 'test'@'localhost'
权限命令参考于:链接
7.1 备份库
mysqldump -uroot -p <库名> > /<存放路径>/<库名>.sql
[root@aslb ~]# mysqldump --set-gtid-purged=OFF -uroot -p db1 > /tmp/db1.sql
Enter password:
加了–set-gtid-purged=OFF时,在会记录binlog日志,如果不加,不记录binlog日志,所以在我们做主从用了gtid时,用mysqldump备份时就要加–set-gtid-purged=OFF,否则你在主上导入恢复了数据,主没有了binlog日志,同步则不会被同步。
7.2 恢复库
mysql -uroot -p <库名> < /<存放路径>/<库名>.sql
[root@aslb ~]# mysql -uroot -p db1 < /tmp/db1.sql
Enter password:
备份的是数据而不是库,恢复时恢复的是数据不是库,如果不小心将库删除,则新建一个库即可
7.3 备份表
mysqldump -uroot -p <库名> <表名> > /<存放路径>/<表名>.sql
[root@aslb ~]# mysqldump --set-gtid-purged=OFF -uroot -p db1 employees > /tmp/employees.sql
Enter password:
7.4 恢复表
mysql -uroot -p <库名> < /<存放路径>/<表名>.sql
[root@aslb ~]# mysql -uroot -p db1 < /tmp/employees.sql
Enter password: