MySQL 数据库管理

在 MySQL 数据库的管理中,涵盖了多个方面的操作,包括数据库结构的查看、数据库与表的创建及删除、SQL 语言的运用、表中数据记录的管理以及数据库表的高级操作等,同时还涉及数据库用户的授权。以下是对这些内容的详细介绍。

一、使用 MySQL 数据库

1. 查看数据库结构

通过以下命令可以查看数据库结构:

[root@localhost ~]# mysql -u root -ppwd123
mysql> show databases;
mysql> use mysql
mysql> show tables;
mysql> describe user;
mysql> select * from user\G;

备注:

information_schema 数据库保存着关于 MySQL 服务器所维护的所有其他数据库的信息,例如数据库名、数据库的表、表栏的数据类型与访问权限等。

performance_schema 用于监控 MySQL server 在一个较低级别的运行过程中的资源消耗、资源等待等情况。

mysql 是 MySQL 服务正常运行所需的数据库,其中包含了用户认证相关的表。

2. 创建及删除数据库和表

(1)创建新库

使用以下命令创建新库:

mysql> create database auth;

(2)创建新表

首先使用 use auth; 切换到要操作的数据库,然后执行以下命令创建新表:

mysql> CREATE TABLE users (user_name CHAR(16) NOT NULL, user_passwd CHAR(48) DEFAULT '', PRIMARY KEY (user_name));

备注

DEFAULT '' 表示密码默认为空。

注意

5.7 以前的版本的 password() 加密函数可以生成 16 位密文,5.7 后的 password() 函数可以生成 41 位的密文,其算法为 mysql_native_password 。设置密码字段的时候要考虑加密,提供的字符长度要够用,否则在添加记录时,如果使用了 password() 加密函数保存密码字段,会提示字符长度错误。8.0 的 MySQL 已经弃用 password()

(3)删除一个数据表

使用以下命令删除数据表:

mysql> DROP TABLE auth.users;

(4)删除一个数据库

使用以下命令删除数据库:

mysql>DROP DATABASE auth;

3. SQL 语言

SQL 语言主要包括以下几种类型:

DDL:数据定义语言(createdropalter

DML:数据操纵语言(insertupdatedelete

DQL:数据查询语言(select

DCL:数据控制语言(grantrevokecommitrollback

4. 管理表中的数据记录

(1)插入数据记录

首先使用 use auth; 切换到相应数据库,然后执行以下命令插入数据:

mysql>INSERT INTO users(user_name,user_passwd) VALUES('zhangsan', PASSWORD ('123456')); 
mysql>INSERT INTO users VALUES('lisi', PASSWORD('654321'));

(2)查询数据记录

执行以下命令查询数据:

mysql>select * from auth.users;
mysql>SELECT user_name,user_passwd FROM auth.users WHERE user_name='zhangsan';

(3)修改数据记录

执行以下命令修改数据:

mysql>UPDATE auth.users SET user_passwd=PASSWORD('') WHERE user_name= 'lisi'; 

查看修改结果:

mysql>SELECT * FROM auth.users;

此外:

mysql>UPDATE mysql.user SET authentication_string=PASSWORD('123457') WHERE user='root';
mysql>FLUSH PRIVILEGES; 

还可以通过以下命令修改 root 用户密码:

[root@www ~]# mysqladmin -u root -p'123457' password '123456'

(4)删除数据记录

使用以下命令删除数据:

mysql>DELETE FROM auth.users WHERE user_name='lisi'; 

查看删除结果:

mysql>SELECT * FROM auth.users;

5. 数据库表高级操作

(1)克隆表

通过以下命令克隆表:

mysql>create table user01 like auth.users;     //通过 LIKE 方法,复制 users 表生成 tmp 表,注意,此表为空
mysql>insert into user01 select * from auth.users;     //通过 player 表生成 tmp 表内数据记录 

(2)删除表

执行以下命令删除表中的数据:

mysql> delete from user01 where user_name='zhangsan';
mysql>delete from user01; 

重新插入数据:

mysql>insert into user01 select * from auth.users;

使用以下命令清空表数据并释放空间:

mysql>truncate table user01; 

查看表中的记录数量:

mysql>select count(*) from user01;

备注

truncatedelete 的区别:

  • truncate 删除表中的内容,不删除表结构,释放空间。
  • delete 删除表中的内容,不删除表结构,但不释放空间。

truncate 删除数据后重新写数据会从 1 开始,delete 删除数据后只会从删除前的最后一行续写;内存空间上,truncate 省空间。

delete 属于 DML 语句,而 truncatedrop 都属于 DDL 语句。delete 可以在后续加上 where 进行针对行的删除,truncatedrop 后面只能加上表名,直接删除表,无法使用 where

使用 drop table 表名可以删除表,内容连带结构一起删除。

(3)临时表

执行以下命令查看临时表是否存在:

mysql>select * from mytmp;

创建临时表:

mysql>CREATE TEMPORARY TABLE `mytmp` ( 
`id` int(10) NOT NULL AUTO_INCREMENT, 
`NAME` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
 `level` int(10) NOT NULL, 
PRIMARY KEY (id)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据:

mysql> insert into mytmp(name,level) values('aa',10);

查看临时表中的数据:

mysql>select * from mytmp;

退出当前连接后重新连接,临时表将不存在。

二、数据库用户授权

1. 授予权限

使用以下命令授予权限:

mysql>GRANT select ON auth.* TO 'zhangsan'@'localhost' IDENTIFIED BY '123456';

2. 查看权限

使用以下命令查看权限:

mysql> SHOW GRANTS FOR 'zhangsan'@'localhost';

3. 验证权限

通过以下命令验证权限:

[root@localhost ~]# mysql -u zhangsan -p123456

通过以上对 MySQL 数据库管理的各项操作的介绍,希望能对您在 MySQL 数据库的使用和管理中有所帮助。

相关推荐
拭心10 小时前
Google 提供的 Android 端上大模型组件:MediaPipe LLM 介绍
android
百度智能云技术站10 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
带电的小王12 小时前
WhisperKit: Android 端测试 Whisper -- Android手机(Qualcomm GPU)部署音频大模型
android·智能手机·whisper·qualcomm
梦想平凡12 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
元争栈道12 小时前
webview和H5来实现的android短视频(短剧)音视频播放依赖控件
android·音视频
阿甘知识库13 小时前
宝塔面板跨服务器数据同步教程:双机备份零停机
android·运维·服务器·备份·同步·宝塔面板·建站
元争栈道14 小时前
webview+H5来实现的android短视频(短剧)音视频播放依赖控件资源
android·音视频
夏木~14 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle
MuYe14 小时前
Android Hook - 动态加载so库
android
居居飒15 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin