MySQL数据库管理

前言:

  • MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一

  • MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,-目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

一、数据库基本操作命令

1.1 基本操作命令
  • Mysql管理操作

    查看数据库结构

    创建及删除库和表

    管理表记录

数据库的基本结构:

先有实例(代表数据库的节点、服务器)——》包含多个数据库——》数据库中放了多个表——》 表由记录和字段组成

1.2 查看数据库列表信息

示例

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

mysql> 

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

格式:use 数据库名 (选择数据库)

show tables; (查看数据表)

示例

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| engine_cost               |
| event                     |
| func                      |
| general_log               |
| gtid_executed             |
| help_category             |
.............省略部分内容
1.4 现实数据库的表结构(字段)

命令格式:describe [数据库名]表名

示例

mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
.............省略部分内容	

数据表的结构

第一字段 Field每条(行)代表的是字段

第二字段 Type代表是此条字段可以写什么样的数据类型

字段中定义了各个类型及是否为默认

第三字段 Null代表此条字段是否可以为空

第四字段 Key 主键 PRI(primary)代表是否为主键 ,主键可以有组合组件,多个字段组成一个组件

第五字段 Default 默认字段,当设置没有输入内容时,生成的表显示的就是默认字段,可以设置默认字段为一个固定值,例如设置默认字段为:nj,则之后创建如果没有设置此字段,表中此项默认为:nj。

第六字段 Extra 扩展 扩展可以显示标识符列:(引申概念:种子、增量,例如种子为1 增量为1,则生成一条记录时,id为1 第二个记录为2)不可人为修改

二、SQL语句概述

  • SQL语言

    是Structured Query Language的缩写,即结构化查询语言

    是关系型数据库的标准语言

    用于维护管理数据库,如数据查询、数据更新、访问控制、对象管理等功能

  • SQL分类

    DDL:数据定义语言

    DML:数据操纵语言

    DQL:数据查询语言

    DCL:数据控制语言

2.1 DDL语句操作
  • DDL语句用于创建数据库对象,如库、表、索引等

  • 使用DDL语句新建库、表

    创建数据库:create database auth;

    创建数据表:create table users (写各字段定义)

mysql> create database auth;  #创建数据表auth
Query OK, 1 row affected (0.00 sec)
mysql> create table users(id int primary key,name char(10));   					#定义表结构
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| users          |
+----------------+
1 row in set (0.00 sec)
  • 使用DDL语句删除库、表

    删除指定的数据表:DROP TABLE [数据库名.]表名

    删除指定的数据库:DROP DATABASE 数据库名

mysql> drop table auth.users;
Query OK, 0 rows affected (0.01 sec)
mysql> drop database auth;
Query OK, 0 rows affected (0.00 sec)
2.2 DML语句操作
  • DML语句用于对表中的数据进行管理

  • 包括以下操作

    insert :插入新数据

    update:更新原有数据

    delete:删除不需要的数据

2.2.1 向数据表中插入新的数据记录
  • insert into 表名(字段1,字段2,…) values(字段1的值,字段2的值,…)
mysql> show tables;   #重新创建auth数据库和users表
+----------------+
| Tables_in_auth |
+----------------+
| users          |
+----------------+
1 row in set (0.00 sec)

DML语句用于对表中的数据进行管理

包括以下操作

INSERT:插入新数据

UPDATE:更新原有数据

DELETE:删除不需要的数据

insert into(固定搭配)

定义:int 数值 char字符串

也可以不跟字段,直接跟users values

示例:

mysql> insert into users(id,name) values(1,'changzhi');
Query OK, 1 row affected (0.06 sec)

mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | changzhi |
+----+----------+
1 row in set (0.00 sec)
###也可以使用以下方式插入新数据
mysql> insert into users values(2,'jiaoshou');
Query OK, 1 row affected (0.01 sec)

mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | changzhi |
|  2 | jiaoshou |
+----+----------+
2 rows in set (0.00 sec)
  • 修改、更新数据表中的数据记录

    格式:update 表名 set 字段名1=值1[,字段2=值2] where 条件表达式

mysql> update auth.users set name='zhangsan' where name='changzhi';  #将changzhi 修改为zhangsan
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | jiaoshou |
+----+----------+
2 rows in set (0.00 sec)

mysql> 
  • 在数据库中删除指定的数据记录

    格式:delete from 表名 where 条件表达式

    示例

mysql> delete from auth.users where name='zhangsan';
Query OK, 1 row affected (0.00 sec) 
#删除auth数据库users表中名为‘zhangsan’记录
mysql> select * from users;
+----+----------+
| id | name     |
+----+----------+
|  2 | jiaoshou |
+----+----------+
1 row in set (0.00 sec)

mysql> 

若不带where条件的语句表示删除表中所有记录

格式:delete from auth.users;

2.3 DQL语句操作
  • DQL是数据查询语句,只有一条:select

  • 用于从数据表中查找符合条件的数据记录

  • 查询时可不指定条件

    select 字段名1,字段名2…from 表名

    示例

mysql> select * from auth.users;
+----+----------+
| id | name     |
+----+----------+
|  2 | jiaoshou |
+----+----------+
1 row in set (0.01 sec)

mysql> ^C
  • 查询时指定条件

    select 字段名1,字段名2…from 表名 where 条件表达式

mysql> select name from auth.users where name='jiaoshou';
+----------+
| name     |
+----------+
| jiaoshou |
+----------+
1 row in set (0.01 sec)

mysql> 
2.4 DCL语句操作
  • 设置用户权限(用户不存在时,则新建用户)

格式:grant 权限列表 on 数据库名.表名 to 用户名@来源地址 [identified by ‘密码’]

grant all privileges on *.* to 'root'@'192.168.181.%' identified by 'abc123' with grant option; #允许192.168.181.0网段使用root账号复制所有数据库数据,登录密码为‘abc123’
mysql> grant all privileges on *.* to 'root'@'192.168.181.%' identified by 'abc123' with grant option;
Query OK, 0 rows affected, 1 warning (0.01 sec)
#允许192.168.181.0网段使用root账号复制所有数据库数据,登录密码为‘abc123’
  • 查看用户的权限

格式:show grants for 用户名@来源地址

mysql> show grants for 'root'@'192.168.181.%';
+-------------------------------------------------------------------------+
| Grants for [email protected].%                                           |
+-------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.181.%' WITH GRANT OPTION |
+-------------------------------------------------------------------------+
1 row in set (0.00 sec)
  • 撤销用户的权限

格式:remove 权限列表 on 数据库名.表名 from 用户名@来源地址

mysql> revoke all privileges on *.* from 'root'@'192.168.181.%';
Query OK, 0 rows affected (0.00 sec)

三、实验案例

需求

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

步骤一

  • 创建一个新的数据库salary
mysql> create database salary;
Query OK, 1 row affected (0.00 sec)
  • 建立数据表IT_salary
mysql> create table IT_salary(岗位类型 varchar(30) not null,姓名 char(16) not null,年龄 tinyint not null,员工ID smallint not null primary key,学历 char(16) default '大专',年限 tinyint not null,薪资 int not null);
Query OK, 0 rows affected (0.02 sec)

mysql> describe IT_salary;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| 岗位类型     | varchar(30) | NO   |     | NULL    |       |
| 姓名         | char(16)    | NO   |     | NULL    |       |
| 年龄         | tinyint(4)  | NO   |     | NULL    |       |
| 员工ID       | smallint(6) | NO   | PRI | NULL    |       |
| 学历         | char(16)    | YES  |     | 大专    |       |
| 年限         | tinyint(4)  | NO   |     | NULL    |       |
| 薪资         | int(11)     | NO   |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)
  • 添加数据
mysql> insert into IT_salary values('网络工程师','孙空武',27,011,'本科',3^C
mysql> select * from IT_salary;
+-----------------+-----------+--------+----------+--------+--------+--------+
| 岗位类型        | 姓名      | 年龄   | 员工ID   | 学历   | 年限   | 薪资   |
+-----------------+-----------+--------+----------+--------+--------+--------+
| 网络工程师      | 孙空武    |     27 |       11 | 本科   |      3 |   4800 |
+-----------------+-----------+--------+----------+--------+--------+--------+
1 row in set (0.00 sec)

同理输入其他数据即可。


----------------+-----------+--------+----------+--------+--------+--------+
| 岗位类型        | 姓名      | 年龄   | 员工ID   | 学历   | 年限   | 薪资   |
+-----------------+-----------+--------+----------+--------+--------+--------+
| 网络工程师      | 孙空武    |     27 |       11 | 本科   |      3 |   4800 |
+-----------------+-----------+--------+----------+--------+--------+--------+
1 row in set (0.00 sec)

总结:

本篇博客主要讲述了数据库管理,之后会介绍数据库中索引、事务、视图、存储过程和存储引擎的理论和使用方法~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章