MySQL数据库管理

使用 MySQL 数据库

查看数据库结构

Mysql是一套数据库管理系统,在每一台Mysql服务器中,均支持运行多个数据库,每个数据库相当于一个容器,其中存放着许多表。

1.查看当前服务器中的数据库

show databases语句:用于査看当前 MySQL服务器中包含的数据库,MySQL 的每一条操作语句都是以分号(;)结束的。

经初始化后的 MySQL服务器,默认建立了四个数据库:test、mysql、information schema和 performance schema(其中 mysql是MySQL服务正常运行所需的数据库,其中包含了用户认证相关的表),执行以下操作可以进行查看。

SHOW DATABASES;

2.查看当前数据库中有哪些表

SHOW TABLES 语句:用于査看当前所在的数据库中包含的表。在操作之前,需要先使用 USE 语句切换到所使用的数据库。

USE mysql;
SHOW TABLES;

3.查看表的结构

DESCRIBE语句:用于显示表的结构,即组成表的各字段(列)的信息。需要指定"数据库名.表名"作为参数;若只指定表名参数,则需先通过 USE 语句切换到目标数据库。

USE mysql;
DESCRIBE user;

数据库目前标准的指令集是 SQL。SQL 是 Structured Query Language 的缩写,即结构化査询语言。

SQL语言主要由以下几部分组成。

DDL(Data Definition Language,数据定义语言):用来建立数据库、数据库对象和定义字段,如 CREATE、ALTER、DROP。

DML(Data Manipulation Language,数据操纵语言):用来插入、删除和修改数据库中的数据,如INSERT、UPDATE、DELETE。

DQL(Data Query Language,数据查询语言):用来查询数据库中的数据,如 SELECT。

DCL(Data Control Language,数据控制语言):用来控制数据库组件的存取许可、存取权限等,如COMMIT、ROLLBACK、GRANT、REVOKE

创建及删除数据库和表

1.创建新的数据库

CREATE DATABASE auth;

2.创建新的表

CREATE TABLE 语句: 用于在当前数据库中创建新的表,需指定数据表名称作为参数,并定义该表格所使用的各字段,基本格式如下所示。

CREATE TABLE 表名(字段1名称类型,字段2名称类型,..., PRIMARY KEY (主键名))

USE auth;
CREATE TABLE users (user name CHAR(16) NOT NULL, user_passwd CHAR(48DEFAULT ", PRIMARY KEY (user name));

3.删除一个数据表

DROP TABLE 语句:用于删除数据库中的表,需要指定"数据库名.表名"作为参数;若只指定表名参数,则需先通过执行"USE"语句切换到目标数据库。例如,执行以下操作可以删除 auth 数据库中的 users 表。

DROP TABLE auth.users;

4.删除一个数据库

DROP DATABASE 语句:用于删除指定的数据库,需要指定数据库名作为参数。例如,执行以下操作可以删除名为 auth 的数据库。

DROP DATABASE auth;

表中的数据记录管理

插入数据记录

INSERT INTO 语句:用于向表中插入新的数据记录,语句格式如下所示。

INSERTINTO 表名(字段 1,字段 2....) VALUES(字段1的值,字段2的值,...)

use auth;
INSERT INTO users(user name,user passwd) VALUES('zhangsan',PASSWORD('123456'));
INSERT INTO users VALUES("lisi', PASSWORD('654321'));

查询数据记录

SELECT语句:用于从指定的表中查找符合条件的数据记录。MySQL数据库支持标准的 SQL 查询语句,语句格式如下所示。

SELECT 字段名1,字段名 2..FROM 表名 WHERE 条件表达式

select *from auth.users;

当需要根据特定的条件查找记录时,WHERE 条件子句是必不可少的。

SELECT user name,user_passwd FROM auth.users WHERE user_name='zhangsan';

数据库表高级操作

create table tmp like player;
insert into tmp select*from player; 
delete from tmp where level >= 45
delete from tmp;
insert into tmp select * from player
truncate table tmp;
select count(*) from tmp;

DELETE 在不加 WHERE 子句的时候,跟 TRUNCATE 是一样的效果,清空整个表。在清空表的时候有一点不同,看他们返回的结果,DELETE 返回的结果内有删除的记录条目,而TRUNCATE 并没有返回被删除的条目。

临时表

MySQL的临时表,顾名思义,就是临时建立的表,并不会长期存在,主要用于保存些临时数据。临时表有个特性,就是只在当前连接可见,当前连接下可执行增删改查等操作,当连接被关闭后,临时表就会被 MySQL删除,相关的资源也会被释放。

select * from mytmp;
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 Ut8;
insert into mytmp(name,level) values{'aa',10);
select * from mytmp;
quit   //退出当前连接


select* from mytmp;   //重新连接 MySQL之后查看临时表状态

数据库用户授权

MYSQL 数据库的 root 用户账号拥有对所有数据库、表的全部权限,频繁使用 root 账号会给数据库服务器带来一定的安全风险。

1.授予权限

GRANT 语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT 语句将会创建新的用户:当指定的用户名存在时,GRANT 语句用于修改用户信息。语句格式如下所示。

GRANT 权限列表 ON 数据库名.表名 TO 用户名@来源地址[IDENTIFIED BY"密码' ]

GRANT select ON auth,* To "xiaogi'@'localhost' IDENTIFIED BY '123456';
mysql .u xiaoqi -p
SELECT*FROM auth.users;
SELECT*FROM mysql.user;   //验证非授权的访问操作
CREATE DATABASE bdgn;
GRANT all ON bdqn.* To "dbuser'@"192.168.4.19' IDENTIFIED BY 'pWd@123';

查看权限

SHOW GRANTS 语句:专门用来查看数据库用户的授权信息,通过FOR 子句可指定查看的用户对象

SHOW GRANTS FOR 用户名@来源地址

SHOW GRANTS FOR "dbuser'@"192.168.4.19';

撤销权限

REVOKE 语句:用于撤销指定用户的数据库权限,撤销权限后的用户仍然可以连接到MYSQL服务器,但将被禁止执行对应的数据库操作,语句格式如下所示。

REVOKE all ON auth.* FROM 'xiaogi@"localhost';
SHOW GRANTS FOR"xiaogi'@"locahost;    //确认已撤销对 auth 库的权限
相关推荐
肘击鸣的百k路3 分钟前
日志和MVCC的详解
数据库·oracle
小小药8 分钟前
011-spring-整合三方框架的命名空间原理(重要)
java·数据库·spring
m0_7482509314 分钟前
Text2SQL(NL2sql)对话数据库:设计、实现细节与挑战
数据库
学Linux的语莫25 分钟前
linux中,redis分布式集群搭建
linux·redis·分布式·mysql
m0_748235071 小时前
MySQL——操作
数据库·mysql·oracle
飞翔沫沫情1 小时前
《快速部署Mysql-slave 容器,实现高效主从同步》
数据库·docker·mysql主从同步
SelectDB技术团队1 小时前
一文了解多云原生的现代化实时数仓 SelectDB Cloud
大数据·数据库·数据仓库·云原生·云计算
m0_748230441 小时前
【MySQL】数据库开发技术:内外连接与表的索引穿透深度解析
android·mysql·数据库开发
m0_748251522 小时前
Linux(CentOS)安装 MySQL
linux·mysql·centos
木卫二号Coding2 小时前
docker-开源nocodb,使用已有数据库
数据库·docker·开源