文章目录
前言:
-
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 root@192.168.181.% |
+-------------------------------------------------------------------------+
| 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)
总结:
本篇博客主要讲述了数据库管理,之后会介绍数据库中索引、事务、视图、存储过程和存储引擎的理论和使用方法~