mysql基础(二)

一.mysql基础操作

库操作

创建数据库

语法为:

create database +数据库名称 [数据库选项]

mysql> create database yk;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| student            |
| sys                |
| yk                 |
+--------------------+
6 rows in set (0.00 sec)

显示数据库

语法为:

show database —— 显示所有数据库

show create database +数据库名称 —— 显示数据库的创建指令

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| student            |
| sys                |
| yk                 |
+--------------------+
6 rows in set (0.00 sec)
mysql> show create database yk;
+----------+---------------------------------------------------------------+
| Database | Create Database                                               |
+----------+---------------------------------------------------------------+
| yk       | CREATE DATABASE `yk` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec)

使用某一个数据库

语法为:

use +数据库名称

mysql> use yk;
Database changed   //出现此字符则表示已使用此库

修改数据库名称

语法为:

alter database +数据库名称

mysql> drop database yk;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

删除数据库

语法:

drop database +数据库名称

mysql> create database qwer;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| qwer               |
| sys                |
| yk                 |
+--------------------+
6 rows in set (0.00 sec)
mysql> drop database qwer;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| yk                 |
+--------------------+
5 rows in set (0.01 sec)

表操作

增删改查

创建表

语法:CREATE TABLE table name (col1 datatype 修饰符,col2 datatype 修饰符) ENGINE=‘存储引擎类型’

mysql> use yk  //要先进到库内
Database changed
mysql> CREATE TABLE student( id int(11) not null primary key auto_increment, name varchar(100) not null, age tinyint(4));

//创建stduent数据表 id字段类型为int限制字段长度11 非空 设置为主键 自增长
name字段 类型为varchar字段长度为100 非空
age字段 类型为tinyint 字段长度为4

显示数据表

mysql> show tables;   //查看所有表
+--------------+
| Tables_in_yk |
+--------------+
| student      |
+--------------+
1 row in set (0.00 sec)

mysql> show tables from yk;   //查看指定库内的表
+--------------+
| Tables_in_yk |
+--------------+
| student      |
+--------------+
1 row in set (0.00 sec)

mysql> show create table student;    //显示数据表的创建指令
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                 |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `id` int(11) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  `age` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> show table status like 'student'\G;   //查看表的状态
*************************** 1. row ***************************
           Name: student
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2022-04-20 11:02:08
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)

ERROR: 
No query specified

查看数据表

有三种方式,分别语法为:

  • desc +表名
  • describe +表名
  • show columns from +表名
mysql> desc student;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
| age   | tinyint(4)   | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> describe student;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
| age   | tinyint(4)   | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> show columns from student;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(11)      | NO   |     | NULL    |       |
| name  | varchar(100) | YES  |     | NULL    |       |
| age   | tinyint(4)   | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

alter修改表结构

mysql> create table ahhh(id int(11) not null);
Query OK, 0 rows affected (0.01 sec)

mysql> desc ahhh;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | NO   |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)

mysql> alter table ahhh add name varchar(50);    //为表增加一个name字段
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc ahhh;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> alter table ahhh add age tinyint(4) after name;    //在指定字段后添加新字段,在name字段后添加age字段
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc ahhh;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | tinyint(4)  | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> alter table ahhh add qaz int first;   //在表最前面添加一个字段,为表添加一个字放在最前
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc ahhh;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| qaz   | int(11)     | YES  |     | NULL    |       |
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | tinyint(4)  | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

mysql> alter table ahhh drop qaz;   //删除指定字段
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc ahhh;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   |     | NULL    |       |
| name  | varchar(50) | YES  |     | NULL    |       |
| age   | tinyint(4)  | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

更改数据表

mysql> rename table ahhh to bbc;   //修改表名
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+--------------+
| Tables_in_yk |
+--------------+
| bbc          |
| student      |
+--------------+
2 rows in set (0.00 sec)

删除数据表

mysql> show tables;
+--------------+
| Tables_in_yk |
+--------------+
| bbc          |
| student      |
+--------------+
2 rows in set (0.00 sec)

mysql> drop table bbc;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+--------------+
| Tables_in_yk |
+--------------+
| student      |
+--------------+
1 row in set (0.00 sec)

插入数据

mysql> insert into student (name,age) values ('jerry',21),('tom',20),('amy',19);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

查看数据

mysql> select * from student;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | jerry |   21 |
|  2 | tom   |   20 |
|  3 | amy   |   19 |
+----+-------+------+
3 rows in set (0.00 sec)

删除数据

mysql> delete from student where age <= 20;
Query OK, 2 rows affected (0.00 sec)

mysql> select * from student;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | jerry |   21 |
+----+-------+------+
1 row in set (0.00 sec)

truncate语句

truncate与delete的区别

语句特点
deleteDELETE删除表内容时仅删除内容,但会保留表结构
DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项
可以通过回滚事务日志恢复数据
非常占用空间
truncate删除表中所有数据,且无法恢复
表结构、约束和索引等保持不变,新添加的行计数值重置为初始值
执行速度比DELETE快,且使用的系统和事务日志资源少
通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放
对于有外键约束引用的表,不能使用TRUNCATE TABLE删除数据
不能用于加入了索引视图的表
 
mysql> select * from student;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | jerry |  100 |
+----+-------+------+
1 row in set (0.00 sec)

mysql> truncate student;
Query OK, 0 rows affected (0.00 sec)

mysql> desc student;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | NO   |     | NULL    |                |
| age   | tinyint(4)   | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> select * from student;
Empty set (0.00 sec)

修改数据

mysql> update student set age=100 where name='jerry';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from student;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | jerry |  100 |
+----+-------+------+
1 row in set (0.00 sec)

二.权限管理

创建授权grant

权限类型(priv_type)

权限类型

代表什么?

ALL

所有权限

SELECT

读取内容的权限

INSERT

插入内容的权限

UPDATE

更新内容的权限

DELETE

删除内容的权限

指定要操作的对象edb_name.table_nam

表示方式

意义

*. *

所有库的所有表

db_name

指定库的所有表

db_name.table_name

指定库的指定表

with grant option:被授权的用户可将自己的权限副本转赠给其他用户,说白点就是将自己的权限完全复制给 另一个用户(不建议使用)

语法:

GRANT priv_type,… ON [object_type] db_name.table_name TO ‘username’@‘host’ [IDENTIFIED BY ‘password’] [WITH GRANT OPTION];

mysql> create user 'yk'@'127.0.0.1' identified by '123.Com?';
Query OK, 0 rows affected (0.04 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
mysql> grant all on *.* to 'yk'@'localhost' identified by '123.Com?';    //给yk用户可以登录访问数据库的权限
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all on *.* to 'yk'@'%' identified by '123.Com?';  //授权用户在所有位置上远程登录访问数据库
Query OK, 0 rows affected, 1 warning (0.00 sec)
[root@localhost ~]# mysql -uyk -p123.Com?
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.37 MySQL Community Server (GPL)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

查看当前用户的权限

mysql> show grants;
+-------------------------------------------------+
| Grants for yk@localhost                         |
+-------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'yk'@'localhost' |
+-------------------------------------------------+
1 row in set (0.00 sec)

mysql> show grants for yk;
+-----------------------------------------+
| Grants for yk@%                         |
+-----------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'yk'@'%' |
+-----------------------------------------+
1 row in set (0.01 sec)

mysql> show grants for 'yk'@'localhost';
+-------------------------------------------------+
| Grants for yk@localhost                         |
+-------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'yk'@'localhost' |
+-------------------------------------------------+
1 row in set (0.00 sec)

mysql> show grants for 'yk'@'127.0.0.1';
+----------------------------------------+
| Grants for yk@127.0.0.1                |
+----------------------------------------+
| GRANT USAGE ON *.* TO 'yk'@'127.0.0.1' |
+----------------------------------------+
1 row in set (0.00 sec)

取消权限

语法:

REVOKE priv_type,… ON db_name.table_name FROM ‘username’@‘host’;

mysql> show grants for 'yk'@'localhost';
+-------------------------------------------------+
| Grants for yk@localhost                         |
+-------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'yk'@'localhost' |
+-------------------------------------------------+
1 row in set (0.00 sec)
mysql> revoke select on *.* from 'yk'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for 'yk'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for yk@localhost                                                                                                                                                                                                                                                                                                                              |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE ON *.* TO 'yk'@'localhost' |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

注意:mysql服务进程启动时会读取mysql库中的所有授权表至内存中:

  • GRANT或REVOKE等执行权限操作会保存于表中,mysql的服务进程会自动重读授权表,并更新至内存中
  • 对于不能够或不能及时重读授权表的命令,可手动让mysql的服务进程重读授权表

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值