MySQL数据库——概述及最基本的使用
目录
前言
一、数据库——数据的“智慧仓库”
1、数据库作用
2、数据库分类
3、数据库“黑话”
二、MySQL——登录、建表、管理用户
1、登录
2、退出登录
3、创建数据库
4、列出数据库
5、选择数据库
6、列出库中表
7、查看表结构
方法①
方法②
8、创建并查看用户
①想给别人开个MySQL账号
②看看数据库里有哪些用户
③查看当前登录的用户
9、查看用户权限
①查看当前用户权限
②查看指定用户权限
10、用户授权
11、撤销权限
12、删除用户
前言
嘿,屏幕前的你是不是也曾被 “数据库”“MySQL” 这些名词搞得晕头转向?
别担心,今天带你从数据库的前世今生,一路玩转 MySQL 的实用操作
让你从此对数据库不再陌生!
没有安装MySQL的同学可以参考这篇文章
MySQL下载及安装(Windows 11)-CSDN博客https://blog.csdn.net/qq_73698057/article/details/151074220?spm=1001.2014.3001.5502
一、数据库——数据的“智慧仓库”
数据库顾名思义
就是专门用来存放、管理海量数据的一个仓库
本质是个文件系统
1、数据库作用
- 持久化
把数据保存到可掉电式存储设备中以供之后使用
可掉电式:即使断电或者关闭设备,存储的数据也不会丢失
区别于内存(RAM),断电后数据会丢失
- 实现数据共享
- 减少数据的冗余度
由于数据共享,用户们无需再各自建立文件,减少了大量重复数据
- 数据的独立性
数据库的逻辑结构和应用程序相互独立
数据物理结构的变化不影响数据的逻辑结构
数据的逻辑结构:表、字段、关系等等
数据的物理结构:数据在磁盘上的存储方式、存储位置等物理细节对用户透明
举个例子
逻辑结构 和 应用程序 相互独立:
为一个表添加一个新的列之后
再次查询这个表依旧可以查到
不会因为它改变了字段就查不到了
-- 原来的用户表 CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(50),email VARCHAR(100) );-- 应用程序查询 SELECT id, name, email FROM users;-- 后来添加了新字段 ALTER TABLE users ADD COLUMN phone VARCHAR(20);-- 应用程序代码不需要改变,仍然可以正常工作 SELECT id, name, email FROM users;
物理结构 和 逻辑结构 相互独立:
更换存储引擎
或者文件存储位置变化 等等
都不影响查询结果
-- 原来使用MyISAM存储引擎 CREATE TABLE orders (id INT PRIMARY KEY,user_id INT,amount DECIMAL(10,2) ) ENGINE=MyISAM;-- 后来改为InnoDB存储引擎 ALTER TABLE orders ENGINE=InnoDB;-- 应用程序的SQL语句完全不需要改变 SELECT * FROM orders WHERE user_id = 123;
原来数据文件存储在:/var/lib/mysql/ 后来迁移到:/data/mysql/应用程序完全不需要知道这个变化,查询语句依然正常工作。
- 数据实现集中控制
- 故障恢复
类似于地球的自我调节能力
只不过数据库自带的故障恢复能力更精确更快速且可控
2、数据库分类
数据库可以按很多方式分类,这里我们先来看看按数据模型能分为什么:
3、数据库“黑话”
- DB(数据库)
- DBMS(数据库管理系统)
- RDBMS(关系数据库管理系统)
- Table(表)—— 存储数据的基本单位,类似Excel里的表格
- Row(行)—— 一条完整的数据,比如一个人的姓名、性别、年龄
- Column(列)—— 数据的类别
- SQL(结构化查询语言)—— 和数据库沟通的语言,分为五类
二、MySQL——登录、建表、管理用户
类似于Java的VScode、IDEA
数据库也有便捷的图形化界面工具供程序员使用
这里我用的是Navicat
如果不使用Navicat之类的软件
使用终端的话
就需要手动登录、退出数据库
1、登录
命令格式:
mysql -h'HOST_NAME' -P'PORT' -u'USERNAME' -p'PASSWORD'
参数说明:
-h
:后面跟主机名,比如 “localhost” 或 “127.0.0.1”(代表本机)-P
:后面跟端口号,MySQL 默认是 3306-u
:后面跟用户名,比如默认的 “root”(管理员账户)-p
:后面跟密码,注意-p
和密码之间不能有空格举例:
mysql -hlocalhost -P3306 -uroot -p123456
如果你的MySQL和你用的客户端在同一台电脑上
-hlocalhost
和-P3306
还能省略:mysql -uroot -p123456
密码建议在下一行输入,保证安全
即输入-p之后回车
终端会提示你“Enter password:”
2、退出登录
命令(二选一):
exit
quit
3、创建数据库
命令格式:
create database database_name [character set utf8];
参数说明:
“database_name” 是你给数据库起的名字
后面的 “character set utf8” 是可选的,用来设置数据库的编码为 utf8,避免中文乱码。
举例:创建一个名叫“library”、编码为 utf8 的数据库
create database briup character set utf8;//简化:
create database briup charset=utf8;
4、列出数据库
命令:
show databases;
然后回车即可
5、选择数据库
命令格式:
use database_name;
举例:要操作“library”数据库
use library;
6、列出库中表
命令:
show tables;
7、查看表结构
想详细查看某个表有哪些列、列的类型等信息,有两种方法:
方法①
命令格式:
desc table_name;
举例:查看“s_book”表的结构
desc s_book;
方法②
命令格式:
show columns from table_name;
举例:查看“s_manager”表的列
show columns from s_manager;
8、创建并查看用户
①想给别人开个MySQL账号
命令格式:
CREATE USER 'user_name'@'host_name' IDENTIFIED BY [PASSWORD] 'password_value';
参数说明:
user_name
:用户名host_name
:主机名,指定用户能从哪个主机登录。如果没指定,默认是 “%”,表示可以从任意主机登录PASSWORD
:可选参数,如果用明文设置密码,就不用写这个关键字;如果知道密码的散列值,想直接用散列值设置密码,就加上这个关键字password_value
:密码
举例:创建一个用户名是“people”,密码是“123456”,允许从任意主机登录的用户
CREATE USER 'people'@'%' IDENTIFIED BY '123456';
②看看数据库里有哪些用户
命令:
select user from mysql.user;
③查看当前登录的用户
命令:
select user();
9、查看用户权限
①查看当前用户权限
命令:
show grants;
②查看指定用户权限
命令格式:
show grants for 'user_name';
举例:查看“people@%”的用户权限
show grants for 'people';
10、用户授权
只有超级用户才可以授权(比如root)
给用户分配操作数据库的权限
命令格式:
GRANT privileges ON database_name.table_name TO 'user_name'@'host_name';
参数说明:
privileges
:要授予的权限,比如 SELECT(查询)、INSERT(插入)、UPDATE(修改)、DELETE(删除),也可以用 “all” 表示所有权限database_name.table_name
:指定权限作用的数据库和表。“.” 表示所有数据库的所有表,“briup.*” 表示 “briup” 数据库的所有表user_name@host_name
:要授权的用户
举例:给用户“people@%”授予“library”数据库的查询和插入权限
GRANT SELECT,INSERT ON library.* TO 'people'@'%';
给“people@%”用户授予所有数据库的所有权限
GRANT all on *.* to 'people'@'%';
11、撤销权限
同样也是超级用户才可以
命令格式:
REVOKE ALL PRIVILEGES ON database_name.table_name FROM 'user_name'@'host_name';
举例:收回“people@%”用户在“library”数据库上的所有权限
REVOKE ALL PRIVILEGES ON library.* FROM 'people'@'%';
12、删除用户
命令格式:
DROP USER user;
举例:删除“people@%”用户
drop user 'people'@'%';//简化
drop user people;
看了这么多不难发现
SQL语言的命令通常习惯大写
这是为了提高可读性
当然,小写也没什么问题