理论+实操:MySQL数据库管理 ————理论讲解


前言:

  • 数据库的基本操作命令
  • DDL操作命令
  • DML操作命令
  • DQL操作命令
  • DCL操作命令
  • MySQL案例

一:MySQL管理操作

  • 查看数据库结构
  • 创建删除库和表
  • 管理表的记录

二:基本操作命令

2.1 查看数据库列表信息

  • SHOW DATABASES

在这里插入图片描述

查看实例中的多个数据库

实例——数据库——表——记录(实体)——字段(属性)

系统装好之后会有默认的数据库

2.2 查看数据库中的数据表信息

  • USE 数据库名
  • SHOW TABLES

在这里插入图片描述

进数据库:use 数据库名

2.3 显示数据表的结构(字段)

  • DESCRIBE [数据库名.]表名

在这里插入图片描述

查看表的结构

field 字段 type 数据类型 NUll 是否为空 KEY 主键 primary(PRI) default 默认 extra 扩展(会显示标识符列,第一个是种子、第二个是增量,标识符列不可以人为修改)

种子为1,增量为1,则第一个就是1,依次是23456

种子为1,增量为2,则第一个就是1,依次是3579

三:SQL语句概述

3.1 SQL语言

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

3.2 SQL分类

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

四 :DDL语句操作(创建、删除)

  • DDL语句用于创建数据库对象,如库、表、索引等
  • 使用DDL语句新建库、表
    • 创建数据库:CREATE DATABASE 数据库名
    • 创建数据库表:CREATE TABLE 表名 (字段定义…)

在这里插入图片描述

char 字符类型,16个长度

primary key 针对name设置主键

  • 使用DDL语句删除库、表
    • 删除指定的数据表:DROP TABLE [数据库名.]表名
    • 删除指定的数据库:DROP DATABASE 数据库名
      在这里插入图片描述

实操:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

打开一台客户机

在这里插入图片描述

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

在这里插入图片描述
在这里插入图片描述

客户终端工具

在这里插入图片描述

在这里插入图片描述

右键mysql,点击打开连接

在这里插入图片描述

若是出现1045错误,是反馈你没有权限在此客户端登陆的权限,提权即可

grant all privileges on *.* to 'root'@'我电脑的ip地址' identified by '密码';

右键数据库,可以管理数据库,打开关闭

在这里插入图片描述

这个是纯字符,此时cmd中是不识别mysql命令的

在这里插入图片描述
点击安装
在这里插入图片描述

在这里插入图片描述

基本上一直点下一步即可,带选择的我重点截出来

在这里插入图片描述

下一步就行

在这里插入图片描述

ODBC是无法安装的,不过没关系

安装完之后记得设置环境变量

在这里插入图片描述

这个是本地的数据库密码

,设置一个,然后下一步

在这里插入图片描述
在这里插入图片描述

可以验证一下,继续下一步
在这里插入图片描述

这时就可以使用三叶草链接本地的

在这里插入图片描述

在这里插入图片描述

复制路径C:\Program Files\MySQL\MySQL Server 5.7\bin,添加环境变量

在这里插入图片描述

英文分号;将其隔开

在这里插入图片描述

此时在cmd中再次输入命令,可以使用字符界面使用了

在这里插入图片描述

链接本地的,不需要指定-h

在这里插入图片描述

定义表结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

field 字段名称

char 字符 int 整形字符 varchar 可变长字符
在这里插入图片描述

右击打开

在这里插入图片描述

五:DML语句操作

  • DML语句用于对表中的数据进行管理
  • 包括以下操作
    • INSERT:插入新数据
    • UPDATE:更新原有数据
    • DELETE:删除不需要的数据
  • 向数据表中插入新的数据记录
    • INSERT INTO 表名(字段·,字段2,…) VALUES (字段1的值,字段2的值,…)

在这里插入图片描述

values 值

若是写空的值的话,‘’,即只需要写两个单引号即可

  • 修改、更新数据表中的数据记录
    • UPDATE 表名 SET 字段名1=值1[,字段名2=值2] WHERE 条件表达式

在这里插入图片描述

  • 在数据表中删除指定的数据记录

    • DELETE FROM 表名 WHERE 条件表达式
      在这里插入图片描述
  • 不带where条件的语句表示删除表中所有记录(谨慎操作)

在这里插入图片描述

where 后面是条件,指定对象,若是不跟条件,则将所有删除
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

*表示所有字段

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

六:DQL语句操作

  • DQL是数据查询语句,只有一条:SELECT
  • 用于从数据表中查找符合条件的数据记录

6.1 查询时可不指定条件

  • SELECT 字段名1,字段名2…FROM 表名

在这里插入图片描述

6.2 查询时指定条件

  • SELECT 字段名1,字段名2…FROM 表名 WHERE 条件表达式

在这里插入图片描述

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

在这里插入图片描述

6.4 查看用户的权限

在这里插入图片描述

6.5 撤销用户的权限

在这里插入图片描述

  • GRANT all ON bbs.* TO ‘bbsuser’@’%’ IDENTIFIED BY ‘admin123’;

来源地址写%代表所有IP地址

权限列表 写all 代表放开所有权限

表名写* 代表数据库下所有表

如果用户名已存在,则更改用户密码,如果用户不存在,则直接创建用户

grant 提权之意

revoke 收回权限之意

在这里插入图片描述

在这里插入图片描述

实操:

[root@localhost ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.20 Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

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 databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bbs                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> create database school;
Query OK, 1 row affected (0.00 sec)

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

mysql> 

在这里插入图片描述

右击数据库,查看表

在这里插入图片描述

mysql> use school;
Database changed
mysql> show tables;
Empty set (0.00 sec)

mysql> create table info (
    -> id int(4) not null,
    -> name char(10) not null,
    -> address varchar(50) default '南京',
    -> score decimal,
    -> primary key (id));
Query OK, 0 rows affected (0.01 sec)

mysql> describe info;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(4)        | NO   | PRI | NULL    |       |
| name    | char(10)      | NO   |     | NULL    |       |
| address | varchar(50)   | YES  |     | 南京    |       |
| score   | decimal(10,0) | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
4 rows in set (0.13 sec)

mysql> 

此时在三叶草内刷新,再次查看,多了一份表格

在这里插入图片描述

双击info打开,设计表可以调整属性
在这里插入图片描述

在这里插入图片描述

修改name的类型,从char改为varchar,保存

在这里插入图片描述

mysql> describe info;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id      | int(4)        | NO   | PRI | NULL    |       |
| name    | varchar(10)   | NO   |     | NULL    |       |
| address | varchar(50)   | YES  |     | 南京    |       |
| score   | decimal(10,0) | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> 

字符界面处也被修改

向表内添加数据

mysql> insert into info (id,name,address,score) values (1,'stu01','北京',88);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',88)' at line 1
mysql> insert into info (id,name,address,score) values (1,'stu01','北京',88);
Query OK, 1 row affected (0.01 sec)

mysql> insert into info (id,name,address,score) values (1,'stu02','上海',98);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
mysql> insert into info (id,name,address,score) values (2,'stu02','上海',98);
Query OK, 1 row affected (0.01 sec)

mysql> insert into info (id,name,address,score) values (3,'stu03',default,90);
Query OK, 1 row affected (0.01 sec)

mysql> insert into info (id,name,address,score) values (4,'stu04','',60);
Query OK, 1 row affected (0.01 sec)

mysql> select * from info;
+----+-------+---------+-------+
| id | name  | address | score |
+----+-------+---------+-------+
|  1 | stu01 | 北京    |    88 |
|  2 | stu02 | 上海    |    98 |
|  3 | stu03 | 南京    |    90 |
|  4 | stu04 |         |    60 |
+----+-------+---------+-------+
4 rows in set (0.00 sec)

mysql> 

更新数据

mysql> update info set address='杭州' where id=4 and name='stu04'
    -> ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from info;
+----+-------+---------+-------+
| id | name  | address | score |
+----+-------+---------+-------+
|  1 | stu01 | 北京    |    88 |
|  2 | stu02 | 上海    |    98 |
|  3 | stu03 | 南京    |    90 |
|  4 | stu04 | 杭州    |    60 |
+----+-------+---------+-------+
4 rows in set (0.00 sec)

mysql> 

图形化界面实时查看一下
在这里插入图片描述

删除表内的一条记录

mysql> delete from info where name='stu04';
Query OK, 1 row affected (0.01 sec)

mysql> select * from info;
+----+-------+---------+-------+
| id | name  | address | score |
+----+-------+---------+-------+
|  1 | stu01 | 北京    |    88 |
|  2 | stu02 | 上海    |    98 |
|  3 | stu03 | 南京    |    90 |
+----+-------+---------+-------+
3 rows in set (0.00 sec)

mysql> 

删除表

mysql> drop table school.info
    -> ;
Query OK, 0 rows affected (0.01 sec)

mysql> select * from info;
ERROR 1146 (42S02): Table 'school.info' doesn't exist
mysql> show tables
    -> ;
Empty set (0.01 sec)

mysql> 

删除库

mysql> drop database school;
Query OK, 0 rows affected (0.00 sec)

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

mysql> 

查看权限

mysql> show grants for 'root'@'%';
ERROR 1141 (42000): There is no such grant defined for user 'root' on host '%'
mysql> show grants for 'bbsuser'@'%';
+--------------------------------------------------+
| Grants for bbsuser@%                             |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO 'bbsuser'@'%'              |
| GRANT ALL PRIVILEGES ON "bbs".* TO 'bbsuser'@'%' |
+--------------------------------------------------+
2 rows in set (0.00 sec)

mysql> 
mysql> show grants for root@localhost;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> 

剥夺权限

mysql> revoke all on *.* from 'root'@'%';

七: 案例:建立公司IT运营部工资表

7.1 需求描述

  • 为公司建立员工工资数据库 imployee_salary
  • 在imployee_salary数据库中,建立IT_salary数据表,以保存IT运营部员工的工资信息,如下表所示

在这里插入图片描述

7.2 建立数据库imployee_salary

在这里插入图片描述

7.3 建立数据表IT_salary

在这里插入图片描述

GRANT OPTION |
| GRANT PROXY ON ‘’@’’ TO ‘root’@‘localhost’ WITH GRANT OPTION |
±--------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>


剥夺权限

mysql> revoke all on . from ‘root’@’%’;




# 七: 案例:建立公司IT运营部工资表

## 7.1 需求描述

- 为公司建立员工工资数据库 imployee_salary
- 在imployee_salary数据库中,建立IT_salary数据表,以保存IT运营部员工的工资信息,如下表所示

[外链图片转存中...(img-2QZWWAgI-1577977236705)]

## 7.2 建立数据库imployee_salary

[外链图片转存中...(img-ou6OVmTE-1577977236705)]

## 7.3 建立数据表IT_salary

[外链图片转存中...(img-pw7PRfj5-1577977236706)]

























发布了87 篇原创文章 · 获赞 26 · 访问量 4523

猜你喜欢

转载自blog.csdn.net/Lfwthotpt/article/details/103812706
今日推荐