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

    科技2025-07-26  10

    文章目录

    前言一:数据库基本操作命令1.1:查看数据库列表信息的命令1.2:查看数据库中的数据表信息的命令1.3:显示数据表的结构1.4:SQL语言概述 二:SQL操作管理命令2.1DDL语句的作用2.2DML语句的作用2.3DQL语句的作用2.4DCL语句的作用 三:克隆表的操作四:多表关联

    前言

    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)
    Processed: 0.012, SQL: 8