MySQL数据库管理的常规操作命令
程序员文章站
2024-02-23 19:35:28
...
文章目录
前言
- 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 [email protected]% |
+-------------------------------------------------------------+
| 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 [email protected]% |
+----------------------------------------------------+
| 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)