• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
悬溺
博客园    首页    新随笔    联系   管理    订阅  订阅
数据库的基本操作

数据库的基本操作

创建数据库

//创建数据库
//语法:CREATE DATABASE [IF NOT EXISTS] 'DB_NAME';
//创建数据库wg
mysql> create database wg;
Query OK, 1 row affected (0.00 sec)

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

//删除数据库
//语法:DROP DATABASE [IF EXISTS] 'DB_NAME';
//删除数据库wg
mysql> drop database wg;
Query OK, 0 rows affected (0.00 sec)

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

表操作

//创建表
//语法:CREATE TABLE table_name (col1 datatype 修饰符,col2 datatype 修饰符) ENGINE='存储引擎类型';
//在数据库wg里创建表game
mysql> use wg;     //进入wg数据库
Database changed
mysql> create table game(id int NOT NULL,name varchar(100)NOT NULL,age tinyint);
Query OK, 0 rows affected (0.00 sec)    //创建一个game的表

//查看当前数据库中有哪些表
mysql> show tables;
+--------------+
| Tables_in_wg |
+--------------+
| game         |
+--------------+
1 row in set (0.00 sec)

//删除表
//语法:DROP TABLE [ IF EXISTS ] 'table_name';
//删除表game
mysql> DROP TABLE game;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
Empty set (0.00 sec)

用户操作

mysql用户帐号由两部分组成,如'USERNAME'@'HOST',表示此USERNAME只能从此HOST上远程登录

这里('USERNAME'@'HOST')的HOST用于限制此用户可通过哪些主机远程连接mysql程序,其值可为:

  • IP地址,如:172.16.12.129
  • 通配符
    • %:匹配任意长度的任意字符,常用于设置允许从任何主机登录
    • _:匹配任意单个字符
//数据库用户创建
//语法:CREATE USER 'game'@'host' [IDENTIFIED BY 'password'];
//创建数据库用户game
mysql> CREATE USER 'wg'@'192.168.78.136' IDENTIFIED BY 'Wg1234!';
Query OK, 0 rows affected (0.00 sec)

//使用新创建的用户和密码登录
[root@localhost ~]# mysql -uwg -pWg1234! -h192.168.78.136
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.23 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

//删除数据库用户
//语法:DROP USER 'game'@'host'; 
mysql> DROP USER 'wg'@'192.168.78.136';
    
Query OK, 0 rows affected (0.00 sec)

查看命令SHOW

//查看支持的所有字符集
mysql> SHOW CHARACTER SET;
+----------+---------------------------------+---------------------+--------+
| Charset  | Description                     | Default collation   | Maxlen |
+----------+---------------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
| dec8     | DEC West European               | dec8_swedish_ci     |      1 |
| cp850    | DOS West European               | cp850_general_ci    |      1 |
| hp8      | HP West European                | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian           | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European            | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European     | latin2_general_ci   |      1 |
| swe7     | 7bit Swedish                    | swe7_swedish_ci     |      1 |
| ascii    | US ASCII                        | ascii_general_ci    |      1 |
| ujis     | EUC-JP Japanese                 | ujis_japanese_ci    |      3 |
| sjis     | Shift-JIS Japanese              | sjis_japanese_ci    |      2 |
| hebrew   | ISO 8859-8 Hebrew               | hebrew_general_ci   |      1 |
| tis620   | TIS620 Thai                     | tis620_thai_ci      |      1 |
| euckr    | EUC-KR Korean                   | euckr_korean_ci     |      2 |
| koi8u    | KOI8-U Ukrainian                | koi8u_general_ci    |      1 |
| gb2312   | GB2312 Simplified Chinese       | gb2312_chinese_ci   |      2 |
| greek    | ISO 8859-7 Greek                | greek_general_ci    |      1 |
| cp1250   | Windows Central European        | cp1250_general_ci   |      1 |
| gbk      | GBK Simplified Chinese          | gbk_chinese_ci      |      2 |
| latin5   | ISO 8859-9 Turkish              | latin5_turkish_ci   |      1 |
| armscii8 | ARMSCII-8 Armenian              | armscii8_general_ci |      1 |
| utf8     | UTF-8 Unicode                   | utf8_general_ci     |      3 |
| ucs2     | UCS-2 Unicode                   | ucs2_general_ci     |      2 |
| cp866    | DOS Russian                     | cp866_general_ci    |      1 |
| keybcs2  | DOS Kamenicky Czech-Slovak      | keybcs2_general_ci  |      1 |
| macce    | Mac Central European            | macce_general_ci    |      1 |
| macroman | Mac West European               | macroman_general_ci |      1 |
| cp852    | DOS Central European            | cp852_general_ci    |      1 |
| latin7   | ISO 8859-13 Baltic              | latin7_general_ci   |      1 |
| utf8mb4  | UTF-8 Unicode                   | utf8mb4_general_ci  |      4 |
| cp1251   | Windows Cyrillic                | cp1251_general_ci   |      1 |
| utf16    | UTF-16 Unicode                  | utf16_general_ci    |      4 |
| utf16le  | UTF-16LE Unicode                | utf16le_general_ci  |      4 |
| cp1256   | Windows Arabic                  | cp1256_general_ci   |      1 |
| cp1257   | Windows Baltic                  | cp1257_general_ci   |      1 |
| utf32    | UTF-32 Unicode                  | utf32_general_ci    |      4 |
| binary   | Binary pseudo charset           | binary              |      1 |
| geostd8  | GEOSTD8 Georgian                | geostd8_general_ci  |      1 |
| cp932    | SJIS for Windows Japanese       | cp932_japanese_ci   |      2 |
| eucjpms  | UJIS for Windows Japanese       | eucjpms_japanese_ci |      3 |
| gb18030  | China National Standard GB18030 | gb18030_chinese_ci  |      4 |
+----------+---------------------------------+---------------------+--------+
41 rows in set (0.00 sec)

//查看当前数据库支持的所有存储引擎
mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

表内容的增删改查

DML操作包括增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT),均属针对表的操作。

//创建一个game的表
mysql> create table game(id int(11) not null primary key auto_increment,name varchar(100) not null,age tinyint(4));
Query OK, 0 rows affected (0.01 sec)

mysql> desc game;     //查看表
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | NO   |     | NULL    |                |
| age   | tinyint(4)   | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)

//增加表的内容
mysql> insert game (name,age) values ('zhangsan',12),('lisi',15),('wangwu',17);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

//查看表的内容
mysql> select * from game;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | zhangsan |   12 |
|  2 | lisi     |   15 |
|  3 | wangwu   |   17 |
+----+----------+------+
3 rows in set (0.00 sec)

//删除表的内容
mysql> delete from game where age=17;    
Query OK, 1 row affected (0.00 sec)

mysql> select * from game;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | zhangsan |   12 |
|  2 | lisi     |   15 |
+----+----------+------+
2 rows in set (0.00 sec)

//修改表的内容
mysql> update game set age=50 where name='zhangsan';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from game;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  1 | zhangsan |   50 |
|  2 | lisi     |   15 |
+----+----------+------+
2 rows in set (0.00 sec)

mysql> 

alter结构的添加、删除、修改

mysql> desc home;   //新创建home表
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          
|+-------+--------------+------+-----+---------+----------------+
| id    | int(11)      | NO   | PRI | NULL    | auto_increment |
| name  | varchar(100) | NO   |     | NULL    |                |
| age   | tinyint(4)   | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)mysql> select * from home order by id desc;
+----+----------+------+
| id | name     | age  |
+----+----------+------+
|  5 | zhaosi   |   19 |
|  4 | libai    |   14 |
|  3 | wangwu   |   17 |
|  2 | lisi     |   15 |
|  1 | zhangsan |   12 |
+----+----------+------+
5 rows in set (0.00 sec)
//添加表结构mysql> alter table home add column dengji int(3); 
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> select * from home;
+----+----------+------+--------+
| id | name     | age  | dengji |
+----+----------+------+--------+
|  1 | zhangsan |   12 |   NULL |
|  2 | lisi     |   15 |   NULL |
|  3 | wangwu   |   17 |   NULL |
|  4 | libai    |   14 |   NULL |
|  5 | zhaosi   |   19 |   NULL |
+----+----------+------+--------+5 rows in set (0.00 sec)
mysql> alter table home add column nianling int(3) after id; //在id后面添加一列
Query OK, 0 rows affected (0.07 sec)Records: 0  Duplicates: 0  Warnings: 0
mysql> select * from home;
+----+----------+----------+------+--------+
| id | nianling | name     | age  | dengji |
+----+----------+----------+------+--------+
|  1 |     NULL | zhangsan |   12 |   NULL |
|  2 |     NULL | lisi     |   15 |   NULL |
|  3 |     NULL | wangwu   |   17 |   NULL |
|  4 |     NULL | libai    |   14 |   NULL |
|  5 |     NULL | zhaosi   |   19 |   NULL |
+----+----------+----------+------+--------+
5 rows in set (0.00 sec)
//删除表结构mysql> alter table home drop column nianling;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> select * from home;
+----+----------+------+--------+
| id | name     | age  | dengji |
+----+----------+------+--------+
|  1 | zhangsan |   12 |   NULL |
|  2 | lisi     |   15 |   NULL |
|  3 | wangwu   |   17 |   NULL |
|  4 | libai    |   14 |   NULL |
|  5 | zhaosi   |   19 |   NULL |
+----+----------+------+--------+
5 rows in set (0.00 sec)
//修改表的结构mysql> alter table home modify id varchar(30);
Query OK, 5 rows affected (0.03 sec)Records: 5  Duplicates: 0  Warnings: 0
mysql> desc home;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra 
|+--------+--------------+------+-----+---------+-------+
| id     | varchar(30)  | NO   | PRI | NULL    |       |
| name   | varchar(100) | NO   |     | NULL    |       |
| age    | tinyint(4)   | YES  |     | NULL    |       |
| dengji | int(3)       | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

数据库的授权

创建授权grant

权限类型(priv_type)

权限类型 代表什么?
ALL 所有权限
SELECT 读取内容的权限
INSERT 插入内容的权限
UPDATE 更新内容的权限
DELET 删除内容的权限

指定要操作的对象db_name.table_name

表示方式 意义
. 所有库的所有表
db_name 指定库的所有表
db_name.table_name 指定库的指定表

WITH GRANT OPTION:被授权的用户可将自己的权限副本转赠给其他用户,说白点就是将自己的权限完全复制给另一个用户。不建议使用。

查看授权

//查看当前登录用户的授权信息
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
//查看指定用户wg的授权信息
mysql> SHOW GRANTS FOR wg;
+-----------------------------------------------+
| Grants for wg@%                               |
+-----------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'wg'@'%'       |
+-----------------------------------------------+
1 row in set (0.00 sec)mysql> SHOW GRANTS FOR 'wg'@'localhost';
+-------------------------------------------------------+
| Grants for wg@localhost                               |
+-------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'wg'@'localhost'       |
+-------------------------------------------------------+
1 row in set (0.00 sec)mysql> SHOW GRANTS FOR 'wg'@'192.168.78.136';
+-------------------------------------------------------+
| Grants for wg@192.168.78.136                          |
+-------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'wg'@'192.168.78.136'  |
+-------------------------------------------------------+
1 row in set (0.00 sec)

取消授权REVOKE

//语法:REVOKE priv_type,... ON db_name.table_name FROM 'username'@'host';
mysql> REVOKE ALL ON *.* FROM 'wg'@'192.168.78.136';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

注意:mysql服务进程启动时会读取mysql库中的所有授权表至内存中:

  • GRANT或REVOKE等执行权限操作会保存于表中,mysql的服务进程会自动重读授权表,并更新至内存中
  • 对于不能够或不能及时重读授权表的命令,可手动让mysql的服务进程重读授权表
posted on 2022-04-20 21:07  悬溺·  阅读(71)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3