MySQL数据库管理的常规操作命令

本文详细介绍了MySQL的基本操作,包括查看数据库、数据表信息,显示表结构,以及SQL语言的四大类别:DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)和DCL(数据控制语言)。此外,还讲解了如何克隆表和进行多表关联查询,是学习MySQL数据库管理和SQL语法的实用教程。
摘要由CSDN通过智能技术生成

前言

  • MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一
  • MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

一:数据库基本操作命令

1.1:查看数据库列表信息的命令

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

1.2:查看数据库中的数据表信息的命令

首先确定查看那个表的信息,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               |
...省略内容

1.3:显示数据表的结构

describe【数据库名.】表名(describe可简写为desc)

mysql> describe user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       | 

1.4:SQL语言概述

  • SQL语言
    • 是Structured Query Language的缩写,及结构化查询语言
    • 是关系型数据库的标准语言
    • 用于维护管理数据库,如数据查询,数据更新,访问控制,对象管理等功能
  • SQL分类
    • DDL:数据定义语言:(create drop alter)

    • DML:数据操纵语言:(insert update delete )

    • DQL:数据查询语言:(select)

    • DCL:数据控制语言:(grant revoke)

二:SQL操作管理命令

2.1DDL语句的作用

DDL语句用于创建数据库对象,如库,表,索引等

  • 创建数据库:create database 数据库名
mysql> create database xiyou;  ###创建库
Query OK, 1 row affected (0.00 sec)
  • 创建数据表:create table 表名(字段定义…)
mysql> use xiyou;
Database changed
mysql> create table tangseng ( 
id int(4) not null primary key auto_increment,
name varchar(10) not null,
score decimal(5,2),
address varchar(50) default '未知');
Query OK, 0 rows affected (0.01 sec)

  • 删除指定的数据表:drop table [数据库名.]表名
mysql> drop table xiyou.tangseng;	'//删除表'
Query OK, 0 rows affected (0.00 sec)
  • 删除指定的数据库:drop database 数据库名
mysql> drop database xiyou;	'//删除库'
Query OK, 0 rows affected (0.00 sec)

2.2DML语句的作用

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

  • 向指定库插入数据
mysql> insert into tangseng (name,score,address) values ('悟空',59,'东胜神州'),('八戒',69,'高老庄'),('悟净',79,'流沙河');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> select * from tangseng;
+----+--------+-------+--------------+
| id | name   | score | address      |
+----+--------+-------+--------------+
|  1 | 悟空   | 59.00 | 东胜神州     |
|  2 | 八戒   | 69.00 | 高老庄       |
|  3 | 悟净   | 79.00 | 流沙河       |
+----+--------+-------+--------------+
3 rows in set (0.00 sec)
  • update 表名 set 字段名 1=值1[,字段名2=值2] where条件表达式
mysql> update tangseng set score=60 where score < 60; ###修改表中‘score’小于60的为60
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from tangseng;
+----+--------+-------+--------------+
| id | name   | score | address      |
+----+--------+-------+--------------+
|  1 | 悟空   | 60.00 | 东胜神州     |
|  2 | 八戒   | 69.00 | 高老庄       |
|  3 | 悟净   | 79.00 | 流沙河       |
+----+--------+-------+--------------+
3 rows in set (0.00 sec)
  • 在数据表中删除指定的数据记录命令
mysql> delete from tangseng where id=2;  ###删除表中id=2的记录
Query OK, 1 row affected (0.00 sec)

mysql> select * from tangseng;
+----+--------+-------+--------------+
| id | name   | score | address      |
+----+--------+-------+--------------+
|  1 | 悟空   | 60.00 | 东胜神州     |
|  3 | 悟净   | 79.00 | 流沙河       |
+----+--------+-------+--------------+
2 rows in set (0.00 sec)

2.3DQL语句的作用

DQL是数据查询语句,只有一条:SELECT

  • 不指定条件查询命令
mysql> select name from tangseng;
+-----------+
| name      |
+-----------+
| 悟空      |
| 八戒      |
| 悟净      |
| 小白龙    |
+-----------+
4 rows in set (0.00 sec)

  • 指定条件查询的命令
mysql> select name,address from tangseng where id=1 or id=4; ###查询表中记录id=1或id=4的name和address字段
+-----------+--------------+
| name      | address      |
+-----------+--------------+
| 悟空      | 东胜神州     |
| 小白龙    | 西海龙宫     |
+-----------+--------------+
2 rows in set (0.00 sec)

2.4DCL语句的作用

设置或查看用户的权限,无用户时创建这个用户

  • 设置用户权限的命令
mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123' with grant option;
'//all privileges:所有权限,%:所有终端'
Query OK, 0 rows affected, 1 warning (0.00 sec)
  • 查看用户权限的命令
    SHOW GRANTS FOR 用户名@来源地址
mysql> show grants for 'root'@'%';
+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
  • 撤销用户权限的命令
    REVOKE 权限列表 ON 数据库名.表名 FROM 用户名@来源地址
mysql> revoke all privileges on *.* from 'root'@'%';
Query OK, 0 rows affected (0.00 sec)

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

三:克隆表的操作

  • 创建一个和tangseng一样的表test
mysql> create table test like tangseng;
Query OK, 0 rows affected (0.00 sec)

mysql> desc test;
+---------+--------------+------+-----+---------+----------------+
| Field   | Type         | Null | Key | Default | Extra          |
+---------+--------------+------+-----+---------+----------------+
| id      | int(4)       | NO   | PRI | NULL    | auto_increment |
| name    | varchar(10)  | NO   |     | NULL    |                |
| score   | decimal(5,2) | YES  |     | NULL    |                |
| address | varchar(50)  | YES  |     | 未知    |                |
+---------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)


此时表中数据没有克隆,只是克隆了表的结构,可以往test表中插入筛选过的数据

mysql> insert into test select * from tangseng where score > 70; ###向test表插入tangseng表中score大于70的记录
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from test;
+----+-----------+-------+--------------+
| id | name      | score | address      |
+----+-----------+-------+--------------+
|  3 | 悟净      | 79.00 | 流沙河       |
|  4 | 小白龙    | 89.00 | 西海龙宫     |
+----+-----------+-------+--------------+
2 rows in set (0.00 sec)

mysql> 

四:多表关联

先创建一个wuqi表

mysql> select * from wuqi;
+----+--------+--------------+
| id | name   | wuqi         |
+----+--------+--------------+
|  1 | 悟空   | 金箍棒       |
|  2 | 八戒   | 九齿钉耙     |
+----+--------+--------------+
2 rows in set (0.00 sec)

多表关联最重要的是表中有相匹配的字段

mysql> select tangseng.name,tangseng.address,wuqi.wuqi from tangseng inner join wuqi on tangseng.name=wuqi.name;
+--------+--------------+--------------+
| name   | address      | wuqi         |
+--------+--------------+--------------+
| 悟空   | 东胜神州     | 金箍棒       |
| 八戒   | 高老庄       | 九齿钉耙     |
+--------+--------------+--------------+
2 rows in set (0.01 sec)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值