Mysql数据库增、删、改、查及数据库授权

一、数据库基本操作

1.登录Mysql服务器

MySQL数据库的默认管理员是root用户,以root用户登录本机的MySQL数据库,可执行以下操作

[root@server1 ~]# mysql -u root -p     #用root用户登录
Enter password:                #输入mysql的登录密码

在这里插入图片描述

2.访问MySQL操作语句

mysql> show databases; #查看数据库信息
在这里插入图片描述

3.退出MySQL数据库

mysql> exit 
Bye

二、使用MySQL数据库

1.查看当前数据库中的库

show databases 语句:用于查看当前MySQL服务器中包含的库。初始化后的MySQL服务器,默认建立了四个库:sys、mysql、information_schema和performance_schema(其中mysql库中包含了用户认证相关的表)

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

在这里插入图片描述

2.查看当前使用库中包含的表

SHOW TABLES 语句:用于查看当前所在的库中包含的表。在此操作之前,需要先使用USE语句切换到所使用的库。

mysql> use mysql      #切换到这个库
Database changed
mysql> show tables;   ##查看当前库中包含的表
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
........  ##以下省略 ..........
| user                    |
+---------------------------+

在这里插入图片描述
MySQL数据库文件存放在/usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每一个数据对应三个文件,后缀名分别为,".frm",“myd”,".myi"。当然也有少数以opt、csm、csv、ibd结尾的。

3.查看表结构

DESCRIBE 语句:用于显示表的结构,即组成表的个字段(列)的信息。需要制定"库名.表名"作为参数;若只指定表明参数,则需要通过USE语句切换到指定目标库。
执行以下操作可以查看mysql库中的user表的结构,与直接执行“DESCRIBE mysql.user;”语句效果相同

mysql> use mysql
Database changed
mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.00 sec)   ## 中间省略

在这里插入图片描述

三、SQL语句概述

1.SQL语言

  • Structured Query Language的缩写,即结构化查询语言
  • 关系型数据库的标准语言
  • 用于维护管理数据库
    • 包括数据库查询、数据更新、访问控制、对象管理等功能

2.SQL分类

  • DDL:数据定义语言
  • DML:数据操纵语言
  • DQL:数据查询语言
  • DCL:数据控制语言

3.DDL——数据定义语言

DDL(数据定义语言):用来建立数据库、数据库对象和定义字段,如CREATE、ALTER、DROP

3.1 创建新库

CREATE DAREBASE 语句:用于创建一个新的库,需要指定数据库名称作为参数,如下:

mysql> create database a;            #创建a库
Query OK, 1 row affected (0.00 sec)

刚创建的数据库时空的,其中不包含任何表,在/usr/local/mysql/data目录下会自动生产一个与新建的库名相同的文件夹

3.2 创建新表

CREATE TABLE语句:用于在当前库中创建新的表,需要指定数据表名作为参数,并定义该表格所使用的各字段。

mysql> use a;  # 跳转到a库
mysql> create table a (user_name char(16) NOT NULL,user_passwd char(48) DEFAULT '',PRIMARY KEY(user_name));      #添加a数据表
 mysql> describe a;        #查看a表中的值
 +-------------+----------+------+-----+---------+-------+
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name   | char(16) | NO   | PRI | NULL    |       |
| user_passwd | char(48) | YES  |     |         |       |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.02 sec)

a表中值表示,“用户名”为不超过16个字符的字符串,且不能为空;
“密码”为不超过48个字符的字符串(插入记录时使用MySQL的函数加密),默认值为空字串,PRIMARY 语句设置主键字段名。

3.3 给表中加入新字段

mysql> use a;       #进入a库
mysql> create table nb (id int(10) auto_increment primary key, age int(3) not null, name varchar(128) not null, vlaue decimal(10));     #向nb表中添加字段
Query OK, 0 rows affected (0.01 sec)
mysql> desc nb;
+-------+---------------+------+-----+---------+----------------+
| Field | Type          | Null | Key | Default | Extra          |
+-------+---------------+------+-----+---------+----------------+
| id    | int(10)       | NO   | PRI | NULL    | auto_increment |
| age   | int(3)        | NO   |     | NULL    |                |
| name  | varchar(128)  | NO   |     | NULL    |                |
| vlaue | decimal(10,0) | YES  |     | NULL    |                |
+-------+---------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql> alter table nb add column number int(3);   #向nb表中添加字段
mysql> desc nb;
+--------+---------------+------+-----+---------+----------------+
| Field  | Type          | Null | Key | Default | Extra          |
+--------+---------------+------+-----+---------+----------------+
| id     | int(10)       | NO   | PRI | NULL    | auto_increment |
| age    | int(3)        | NO   |     | NULL    |                |
| name   | varchar(128)  | NO   |     | NULL    |                |
| vlaue  | decimal(10,0) | YES  |     | NULL    |                |
| number | int(3)        | YES  |     | NULL    |                |
+--------+---------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

在这里插入图片描述

3.4 删除数据库

DROP DATABASE 语句:用于删除指定的库,需要指定库名作为参数。如:执行以下操作,可删除名为abc的库

mysql> drop database a;                 #删除a库
Query OK, 0 rows affected (0.00 sec)

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

3.5 删除数据表

DROP TABLE 语句:用于删除库中的表,需要指定“库名.表名”作为参数;若只指定表名参数,则需要通过执行USE语句切换到目标库。如:执行以下操作可以删除名为zbc的数据表

mysql> drop table nb;            #删除a库中的nb数据表
Query OK, 0 rows affected (0.00 sec)

4.DML——数据操纵语言

DML(数据操纵语言):用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE

4.1 插入数据记录

INSERT INTO语句:用于向表中插入新的数据记录

mysql> create database kk;     #创建数据库kk	
mysql> use kk;     #进入kk数据库
mysql> create table fa (user_name CHAR(16) NOT NULL,user_passwd    CHAR(48) DEFAULT '',PRIMARY KEY(user_name));    #创建fa数据表
#在表中插入数据,按记录指定插入,加了password(),显示的就是密文
mysql> insert into fa(user_name,user_passwd)values('lisi',PASSWORD('123456'));   

#在表中插入数据 ,按顺序插入,加了password(),显示的就是密文
mysql> insert into fa values('zhangsan',PASSWORD('123321'));

#在表中插入数据,不加password(),显示的是明文
mysql> insert into fa(user_name,user_passwd)values('qy','123456');

4.2 修改数据记录

UPDATE 语句:用于修改、更新表中的数据记录。

语句格式如下:

  • UPDATE 表明 SET 字段名 1=字段值 1[,字段名 2=字段值 2] WHERE 条件表达式

结果:

  • 修改 fa表中用户名为“lisi”的记录,将密码字串设为空值。验证记录内容可以发现lisi用户的密码串值以便为空白
mysql> update fa set user_passwd='' where user_name='lisi';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from fa;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      |                                           |
| qy        | 123456                                    |
| zhangsan  | *437F1809645E0A92DAB553503D2FE21DB91270FD |
+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

4.3 删除数据记录

DELETE语句: 用于删除表中指定的数据记录。

语句格式:

  • DELETE FROM 表明 WHERE 条件表达式

结果:

  • 删除fa表中用户名为“lisi”的数据记录,验证记录内容可以发现“lisi”用户的数据记录已经消失
mysql> delete from fa where user_name='lisi';
Query OK, 1 row affected (0.00 sec)

mysql> select * from fa;
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| qy        | 123456                                    |
| zhangsan  | *437F1809645E0A92DAB553503D2FE21DB91270FD |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)

5.DQL——数据查询语言

DQL(数据查询语言):用来查询数据库中的数据,如SELECT

表示所有字段时,可以使用通配符 * ,若要显示所有的数据记录则可以省略where条件子句。
如:执行以下操作会显示表中所有记录,但因加了PASSWORD(),密码字符串已加密,因此不会直接显示出实际的密码内容

mysql> select * from fa;    查看fa数据表
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| qy        | 123456                                    |
| zhangsan  | *437F1809645E0A92DAB553503D2FE21DB91270FD |
+-----------+-------------------------------------------+
3 rows in set (0.00 sec)

在这里插入图片描述
当需要特定的的条件查找记录时,where条件子句则是必不可少的。如:查找 lisi 的记录,显示用户名和密码字段的信息,可做以下操作

mysql> select * from fa where user_name='lisi';
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| lisi      | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)

6.DCL——数据控制语言

DCL(数据控制语言):用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE

DCL语句设置用户权限(用户不存在时,则新建用户)

格式:
GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址 [IDENTIFIEDBY‘密码’]

6.1 设置用户权限

#给xiao用户授权可以查看kk库中的表,当xiao用户不存在时,就自动新建用户,设置密码为123456
mysql> grant select on kk.* to 'xiao'@'localhost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;         #刷新
Query OK, 0 rows affected (0.00 sec)

mysql> exit          #退出
Bye

[root@server1 ~]# mysql -u xiao -p    #使用xiao用户登录数据库
Enter password:                     #输入刚刚设置的密码 '123456'

mysql> select * from kk.fa;     #查看kk数据库中的fa数据表信息
+-----------+-------------------------------------------+
| user_name | user_passwd                               |
+-----------+-------------------------------------------+
| qy        | 123456                                    |
| zhangsan  | *437F1809645E0A92DAB553503D2FE21DB91270FD |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
      


若想设置用户(或新建用户)获得所有权限可以改为all

#把select 改成 all,这样此用户就可获得对kk库的所有权限
mysql> grant all on kk.* to 'xiao'@'localhost' identified by '123456'; 

6.2 查看用户权限

格式:
SHOW GRANTS for 用户名@来源地址;

mysql> show grants for xiao@localhost;
+----------------------------------------------+
| Grants for xiao@localhost                    |
+----------------------------------------------+
| GRANT USAGE ON *.* TO 'xiao'@'localhost'     |
| GRANT SELECT ON "kk".* TO 'xiao'@'localhost' |
+----------------------------------------------+
2 rows in set (0.00 sec)

6.3 撤销用户权限

格式:
REMOVE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址

注:撤销用户权限必须是使用root最高权限登录才可以撤销

mysql> revoke select on kk.* from xiao@localhost;  #撤销xiao用户的权限
mysql> show grants for xiao@localhost;  #查看被撤销xiao用户的权限
+--------------------------------------------+
| Grants for xiao@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO 'xiao'@'localhost' |
+--------------------------------------------+
1 row in set (0.01 sec)

猜你喜欢

转载自blog.csdn.net/F2001523/article/details/111658738
今日推荐