欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > MySQL数据库管理

MySQL数据库管理

2024/10/24 17:47:17 来源:https://blog.csdn.net/m0_67475830/article/details/142911855  浏览:    关键词:MySQL数据库管理

MySQL数据库管理

      • 安装数据库
      • MySQL数据库的管理
        • 查看数据库结构
          • 查看当前的 MySQL 版本信息及连接用户名
          • 查看当前服务器中的数据库
          • 查看数据库中包含的表
          • 查看表的结构
        • SQL语句
          • 数据定义语言DDL
            • 创建数据库和表
            • 列出数据库和表
            • 删除数据库和表
            • 修改表
          • 数据定义语言DDL
            • 在表中插入新记录
            • 修改表中已存在的记录
            • 删除表中记录
          • 数据查询语言DQL
            • 检索数据
          • 数据控制语言DCL
            • 用户管理
            • 授权管理
        • 对于数据库中表的其他操作
          • 克隆表
          • 清空表
          • 临时表

安装数据库

上传软件包(mysql-8.0.33-el7-x86_64.tar.gz)
安装过程

tar -xf mysql-8.0.33-el7-x86_64.tar.gz
mv mysql-8.0.33-el7-x86_64 /usr/local/mysqluseradd -M -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
#编辑数据库配置(桌面安装的linux有自带的数据库mariadb,需要删除)
vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION#设置环境变量,申明/宣告mysql命令便于系统识别
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile#初始化数据库
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data#设置系统识别,进行操作
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl daemon-reload
systemctl restart mysqld#查看数据库服务是否开启
ss -ntlp | grep mysql#初始化数据库密码(直接回车)
mysqladmin -u root -p password "123456"
#进入数据库
mysql -u root -p123456
#创建用户并设置密码
create user 'root'@'%' identified by '123456';
#赋予远程连接的权限
grant all privileges on *.* to 'root'@'%';
#刷新生效
flush privileges;
#修改加密方式,可以进行远程连接
alter user 'root'@'%' identified with mysql_native_password by '123456';

MySQL数据库的管理

查看数据库结构
查看当前的 MySQL 版本信息及连接用户名
select user();
select version();

在这里插入图片描述

查看当前服务器中的数据库
show databases;

在这里插入图片描述
MySQL会附带4个系统数据库:
information_schema:主要存储系统中的一些数据库对象信息,如数据库名,数据库的表,表字段的数据类型与访问权限等
performance_schema:主要存储数据库服务器性能参数信息
mysql:主要存储系统的用户权限信息
sys:MySQL5.7之后引入的一个新的 sys 数据库,sys 库里面的表、视图、函数以及存储过程可以让用户快速了解MySQL的一些信息,它的数据来源于performance_schema

查看数据库中包含的表
#方法一
show tables from mysql;
#方法二
use mysql;
show tables;
查看表的结构
use mysql;
describe user;
#可缩写成desc 表名;
SQL语句

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语言分类:DDL、DML、DQL和DCL。

类型功能
DDL数据定义语言,用于创建数据库对象,如库、表、索引等
DML数据操纵语言,用于对表中的数据进行管理
DQL数据查询语言,用于从数据表中查找符合条件的数据记录
DCL数据控制语言,用于设置或者更改数据库用户或角色权限
数据定义语言DDL

数据定义语言,用于管理数据库对象(库、表、索引等)

创建数据库和表
create database 数据库名;create table 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键(PRIMARY KEY)一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。#例
create database test_base;use test_base;
create table test_table (ID int(4) zerofill,name char(10) not null,age int,sex char(2) default '不详',primary key(ID));

MySQL的6大约束属性

类型名称
主键约束primary key
唯一键约束unique key
非空约束not null
默认值约束default ‘XXX’
自增约束auto_increment
外键约束foreign key
零填充int(N) zerofill

常用的数据类型

名称类型
int整型 无符号[0,2^32 -1] ,有符号[-2^31 ,2^31-1]
float单精度浮点 4字节32位
double双精度浮点 8字节64位
char固定长度的字符类型
varchar可变长度的字符类型
text文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位
列出数据库和表
#列出数据库
show databases;
#列出数据库中的表
show tables [from 库名];
#显示创建指定表的SQL语句
show create table 表名;
#展现表结构
desc 表名;#例
show databases;use test_base;
show tables;
#或
show tables from test_base;show create table test_table;desc test_table;

列出数据库
列出数据库中的表
显示创建指定表的SQL语句
展现表结构

删除数据库和表
#删除数据库
drop database 库名;
#删除表
drop table 表名;#例
#创建数据库和表
create database test1;
use test1;
create table test2 (id int,name char(4),age int);
#删除
drop table test2;
drop database test1;

删除表
删除库

修改表
#修改表名
alter table 旧表名 rename 新表名;
#增加表内字段
alter table 表名 add 新字段 数据类型 [约束属性];
#删除表内字段
alter table 表名 drop 字段;
#修改表内字段
alter table 表名 change 旧字段 新字段 数据类型 [约束属性];#例
use test_base;alter table test_table rename new_table;alter table new_table add date int not null;alter table new_table drop date;alter table new_table change name 姓名 varchar(10) ;

修改表名
增加表内字段
删除表内字段
修改表内字段

数据定义语言DDL

数据操纵语言,用于对表中的数据进行管理

在表中插入新记录
#指定字段插入
insert into 表名 (字段1, 字段2, ....) values (字段1的值, 字段2的值, ....);
#不指定字段插入
insert into 表名 values (所有字段的值);#例
insert into new_table (ID, 姓名,age,sex) values(1,'张三',18,'男');
insert into new_table  values(2,'李四',18,'男');

插入新记录

修改表中已存在的记录
#修改表中已存在的记录
update 表名 set 字段1=值1, 字段2=值2, ....  where 条件表达式;#例
update new_table set age=18+2, sex='女' where ID=2;

修改表中已存在的记录

删除表中记录
#删除表中记录
delete from 表名 where 条件表达式;#例
delete from new_table where 姓名='李四';

删除表中记录

数据查询语言DQL

数据查询语言,用于从数据表中查找符合条件的数据记录。

检索数据
#检索后显示所有字段
select * from 表名 [where 条件表达式];
#检索后显示指定字段
select 字段1,字段2 from 表名 where 条件表达式;
#查看表的前N行的记录
select 字段 from 表名 limit N;
#查看表的第N行之后的连续M行的记录(不包含第N行)
select 字段 from 表名 limit N,M;#例
#添加几条记录
insert into new_table  values(2,'李四',25,'男'),(3,'王二',20,'女'),(4,'韩五',27,'男'),(5,'秋一',22,'女');select * from new_table where sex='女';select ID,姓名 from new_table where sex='女';select * from new_table limit 2;
select 姓名,age from new_table limit 2;select * from new_table limit 2,5;
select 姓名,age from new_table limit 2,5;

检索后显示所有字段
检索后显示指定字段
查看表的前N行的记录
查看表的第N行之后的连续M行的记录(不包含第N行)

数据控制语言DCL

数据控制语言,用于设置或者更改数据库用户或角色权限。

用户管理
#创建用户
#注:来源地址可以是localhost(仅允许本地连接)、一个特定的IP地址、一个IP地址范围(使用通配符,如%表示任何地址),或者是一个主机名。
create user '用户名'@'来源地址' identified by '密码'; 
#查看用户信息
#注:authentication_string字段存储的是加密后的密码
select user,host,authentication_string  from  mysql.user;
#查看当前用户
#返回当前连接的MySQL用户的用户名和主机名
select user();
#重命名用户
rename user '用户名'@'来源地址' to '新用户名'@'新来源地址';
#删除用户
drop user '用户名'@'来源地址';
#修改用户密码
#注MySQL 5.7.6前版本可用set password
set password for '用户名'@'来源地址' = password('密码');
alter user '用户名'@'来源地址' identified by '密码'; #例
create user 'zhangsan'@'localhost' identified by '123zxc'; 
create user 'lisi'@'%' identified by '123zxc'; select user,host,authentication_string  from  mysql.user;select user();rename user 'zhangsan'@'localhost' to 'zhangmin'@'%';drop user 'zhangmin'@'%';alter user 'lisi'@'%' identified by 'def456';

查看用户信息
查看当前用户
重命名用户
删除用户

授权管理
#为用户分配特定的权限
#identified by 用于创建用户,在MySQL 5.7.6或更高版本中不可用
grant 权限1,权限2,....  on  库名.表名  to '用户名'@'来源地址'  [identified by '密码'];
#重新加载授权表
flush privileges;
#显示指定用户的权限
show grants for '用户名'@'来源地址';
#撤销用户的权限
revoke 权限列表  on 库名.表名  from  '用户名'@'来源地址';#例
#显示指定用户lisi的权限
show grants for 'lisi'@'%';#为用户lisi分配特定的权限
#为用户lisi授予所有数据库所有表的所有权限
grant all privileges on  *.*  to 'lisi'@'%';
#重新加载授权表
flush privileges;
#查看用户lisi的权限
show grants for 'lisi'@'%';
#撤销用户lisi的所有权限
revoke all privileges, grant option from 'lisi'@'%';
#为用户lisi分配对数据库test_base里所有表的insert和update权限
grant insert,update on test_base.* to 'lisi'@'%';
#重新加载授权表
flush privileges;
#查看用户lisi的权限
show grants for 'lisi'@'%';
#撤销用户lisi的insert权限
revoke insert on test_base.* from 'lisi'@'%';

用户权限

权限功能
SELECT读取数据。
INSERT插入数据。
UPDATE更新数据。
DELETE删除数据。
CREATE创建数据库、表等对象。
ALTER修改数据库、表等对象的结构。
DROP删除数据库、表等对象。
INDEX创建或删除索引。
USAGE表示用户存在,但不授予任何具体权限。
GRANT OPTION允许用户将自己的权限授予其他用户。
RELOAD允许用户执行刷新操作,如刷新权限表、日志等。
SHOW DATABASES允许用户查看所有数据库列表。
对于数据库中表的其他操作
克隆表
#克隆表结构
create table 新表名 like 旧表名;
#克隆表数据,可实现表结构和表数据与旧表都一样
insert into 新表名 select * from 旧表名;
#表数据和旧表是一样的,但是新表的表结构和旧表的不一定一样
create table 新表名 (select * from 旧表名);#例
#克隆表结构
create table new_table1 like new_table;
#查看表结构
desc new_table1;
desc new_table;
#克隆表数据
insert into new_table1 select * from new_table;
#查看表数据
select * from new_table1;#数据相同,结构不同
create table new_table2  select * from new_table;
#查看表数据
select * from new_table2;
#查看表结构
desc new_table2;
清空表
#一条一条的删除记录,清空表的效率较慢;AUTO_INCREMENT自增字段仍保留原有的记录
delete from 表名;
#直接重建表,清空表的效率较快;AUTO_INCREMENT自增字段的记录会被重置
truncate table 表名;#例
delete from new_table1;
truncate table new_table2;
临时表
#临时表与一般的表的相同点:都可以在表中进行增删改查表数据;不同的:show tables查不到临时表;临时表只能在当前会话中有效,退出当前会话,临时表就会失效
create temporary table 表名 (....);#例
create temporary table new_table3 (id int,age int);
#列出数据库中表
show tables;
#列出new_table3表结构
desc new_table3;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com