MySQL数据库管理

本文详细介绍了MySQL的基本操作,包括登录、查看数据库、创建和删除数据库与表。讲解了各种数据类型,如int、float、char等,并展示了如何使用SQL进行数据插入、更新、删除和查询。此外,还涉及到了用户授权、临时表、外键约束以及用户管理,包括创建、重命名和删除用户,以及权限的授予和回收。
摘要由CSDN通过智能技术生成
本章目录

数据库基本操作
数据库用户授权

查看数据库结构
  • 登入数据库
[root@www ~]# mysql -uroot -pabc123    (-p后面加登入密码,一般生产环境中这样登入)
[root@www ~]# mysql -u root -p         直接回车
Enter password:                          输入登录密码
  • 查看数据库信息
mysql> show databases;      一般都是以;结束

在这里插入图片描述

  • 进入库
mysql> use mysql   进入到mysql的一个库
mysql> show tables;     查看当前库下的所有表
mysql> describe user    显示字段属性 ;查看数据库结构

在这里插入图片描述

常用的数据类型

int:整形 用于定义整数类型的数据
float:单精度浮点4字节32位 准确表示到小数点后六位
double:双精度浮点8字节64位
char:固定长度的字符类型 用于定义字符类型数据
varchar:可变长度的字符类型 varchar设置上线
text:文本
image:图片
decimal(5,2):5个有效长度数字,小数点后面有两位 指定长度数组
#char 如果存入数据的手机长度比指定长度要小,会补空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错

数据库管理SQL语句
  • SQL语言
    Structured Query Language的缩写,即结构化查询语言
    关系型数据库的标准语言
    用于维护管理数据库:
    包括数据查询、数据更新、访问控制、对象管理等功能
  • SQL语言分类:
    DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
    DML:数据操纵语言,用于对表中的数据进行管理
    DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
    DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
  • 创建一个新的数据库
mysql> create database school;    创建
mysql> use school;   进库

在这里插入图片描述

mysql> create table ky11 (id int not null,name varchar(20)not null,score decimal(5,2)not null,age int(5),address varchar(50) default 'KY11',primary key(id));      在库下面创建一个表
mysql> show tables;   查看表 
mysql> describe ky11       查看表的结构
    -> ;        这里提示忘了加;,补充一下就行

在这里插入图片描述
在这里插入图片描述

  • 删除指定的数据表
    use数据库名
    DROP TABLE school.表名
    DROP TABLE[数据库名.]表名;
    #如不用USE进入库中,则需加上数据库名
    删除指定的数据库
    DROP DATABASE数据库名;
DML管理表中的数据记录

insert:插入新数据
update:更新原有数据
delete:删除不需要的数据

mysql> insert into ky11 (id,name,score,age,address) values(1,'xiaolv',88.111,20,'杭州');     插入一段数据
mysql> select * from ky11;         查询表中数据
注:主键是唯一的 ,

在这里插入图片描述

mysql> select * from ky11\G ;       \G表示以列的形式输出
mysql> insert into ky11 values(4,'zhao',59,29,'深圳'),(5,'zhangsan',10,40,'新疆');      可以一次添加多组数据,使用 , 隔开

查询数据时,密码字串以加密的形式显示;若不使用password,查询时以明文显示。
添加一个新的表

mysql> create table ky12 (id int not null,name char(10) not null,score decimal(5,2),passwd char(48) default'', primary key (id));
                                                                                                                                       添加一个密码

在这里插入图片描述

mysql> insert into ky12 values(2,'zhangsan',55,PASSWORD('abc123'));   对密码设置加密

在这里插入图片描述

  • update更新原有数据
    修改、更新数据中的数据记录
    格式: update 表名 set 字段名1=字段值1[字段名2=字段值2] [where 条件表达式]
mysql> update ky12 set name='xiaolv' where id=1;    where后面加的作为判断 

如果不加where 判断,则表中都会被修改
在这里插入图片描述

  • delete:删除不需要的数据(表内容)
    在数据表中删除指定的数据记录
    格式:delete from 表名 [where 条件表达式]
mysql>  delete from ky12 where id='1';      确定唯一性,精准删除

在这里插入图片描述

  • select
    格式
select   字段名1,字段名2 [....]   from  表名 [where  条件表达式];

例:

mysql> select id,name from ky11 where score>80;  输出分数大于80的id和name  字段
mysql> select * from ky11 where id>1 and id<3;    输出第二行的字段
mysql> select * from ky11 limit 2;    只显示前三行  (前三行包括0行的标头)
mysql> select * from ky11 limit 2,3;      只显示第三行后的前三行内容    2表示从第三行开始,3表示基于某行后的前三行

在这里插入图片描述

DCL
  • alter 修改表名和表结构
    alter table 旧表名 rename 新表名;
    例:
mysql> alter table ky12 rename ky12_new;

在这里插入图片描述

  • 扩展表结构(增加字段)
    alter table 表名 add address varchar(5) default ‘地址不详’;
    #default ‘地址不详’: 表示此字段设置默认值为地址不详,可用 not null 配合使用
    修改字段(列)名,添加唯一键
    alter table 表名 change 旧列名 新列名 数据类型[ unique key];
    unique key :唯一键 (特性:唯一,但可以为空,控制只允许出现一次)
    alter table yyy change name user name varchar(12) unique key;
    #change 可修改字段名、数据类型、约束等所有项
    例:
mysql> alter table ky11 add hobid int(5);

在这里插入图片描述

mysql> alter table ky11 change address address_new varchar(50) unique key default '地址不详';
mysql> insert into ky11 values(6,'didi',73,17,default,'1');     添加一个新的数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 删除字段
    格式
    alter table 表名 drop 字段名;
  • 数据表高级操作
create table yyy2 like yyy;
复制格式,通过LIKE方法,复制yyy表结构生成yyy2表
insert into yyy2 select *  from yyy;
#备份内容

mysql> create table ky12_kole like ky12_new;

在这里插入图片描述

  • 清空表,删除表内所有数据
    1、delete from yyy3;
    delete清空表后,返回的结果内有删除的记录条目;
    delete工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用delete from删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增写入记录。
    属于DML
    可回滚
    可带where
    表结构在,表内容要看where执行的情况
    删除速度慢,需要逐行删除
    2、truncate table test01;
    truncate清空表后,没有返回被删除的条目:truncate 工作时是将表结构按原样重新建立,因此在速度上truncate会比delete清空表快;使用truncate table 清空表内数据后,
    ID会从l开始重新记录
    属于DDL
    不可回滚
    不可带where
    表内容删除
    删除速度快
    3、drop table table_name
    属于DDL
    不可回滚
    不可带where
    表内容和结构删除
    删除速度快
    注:删除速度 drop>truncate>delete
    安全性:delete 最好
  • 创建临时表
create temporary  table xxxx (id int(4),name varchar(10));

临时表:只会保存在内存中,在数据库退出连接之前的所有操作,都是在内存中进行的,不会保存在磁盘里面,退出连接后,临时表会释放掉

永久表:sql 写入——》数据表中—》先把数据保存在内存中—》写入到磁盘

MySQL中6种常见的约束

主健约束(prima ry key)
外键约束( foreign key)
非空约束(not null)
唯一性约束(unique [ key l index ] )
默认值约束(default)
自增约束(auto_increment)

外键的定义:如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。
创建外键约束作用(误删、修改),保证数据的完整性和一致性。

主键表和外键表的理解

1、以公共关键字作主键建的表为主键表(父表、主表)
2、以公共关键字作外键的表为外键表i从表、外表)
注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主表外键字段和从表的字段具备相同的数据类型、字符长度和约束。

  • 创建主表
mysql> create table p1 (hobid int(4), hobname varchar(50));

创建从表

mysql> create table p2 (id int(5) primary key auto_increment,name varchar(10),age int(3),,hobid int(4));

为主表添加一个主键约束,主键名以pk开头

mysql> alter table p1 add constraint PK_hobid primary key (hobid); 

为从表添加外键 ,将从表和主表建立外键关联,外键以FK 开头

mysql> alter table p2 add constraint FK_hobid foreign key (hobid) references p1 (hobid);

查看设置

mysql> show create table p2
    -> ;

在这里插入图片描述

  • 插入新的数据记录时,先主表再从表
mysql> insert into p1 values(1,'runing');     主
mysql> insert into p2 values(1,'speaking',18,1);   从

删数数据记录时,要先从表再主表,也就是说删除主键表时必须先删除其他与之关联的表

mysql> drop tables test1;
mysql> drop tables test;

如果要删除外键约束字段先删除外键约束,再删除外键名

mysql> alter table test01drop foreign key FK_hob;
mysql> alter table test01 drop key Fk_hob ;
数据库用户管理

1、新建用户
CREATEUSER ‘用户名’@'来源地址’[IDENTIFIED BY[PASSWORD] ‘密码’];
‘用户名’:指定将创建的用户名.
‘来源地址T:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录
可用通配符%
‘密码’:若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD(‘密码’);获取密文,再在语句中添PASSWORD ‘密文’;若省略"IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)
直接创建

mysql> create user 'lisi'@'localhost' identified by 'abc123';

加密创建

mysql> select password ('abc123');
mysql> create user 'zhangsan'@'localhost' identified by password '*6691484EA6B50DDDE1926AA220

在这里插入图片描述

  • 查看用户信息
    创建后的用户保存再mysql数据库的user表里
    user mysql;
    select user, authentication_string,host from user;
    select user, authentication_string,host from mysql.user;
mysql> select user,authentication_string,host from user;  拉取数据

在这里插入图片描述

重命名指定
rename user ‘zhangsan’@‘localhost’ to ‘lisi’@‘localhost’;

mysql> rename user 'zhangsan'@'localhost' to 'wangwu'@'localhost';

在这里插入图片描述

删除用户
drop user ‘lisi’@‘localhost’;
在这里插入图片描述

修改当前密码
set password = password(‘abc123’);

mysql> set password = password ('123123');  修改的是当前登录用户的密码 

修改其他用户密码
set password for ‘user’@‘localhost’ = password(‘abc123c’);

在这里插入图片描述

忘记root密码解决方法

修改/etc/my.cnf 配置文件,免密登陆mysql
vim /etc/my .cnf
[mysqld]
skip-grant-tables #添加,使登录mysql不使用授权表
systemctl restart mysqld
mysql #直接登录
然后使用SQL语句修改密码
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD ( ‘123456’) where user=root"

 vim /etc/my.cnf
 systemctl restart mysqld.service   重启服务

在这里插入图片描述

数据库用户授权
  • 授予权限
    grant 提权
    grant 权限列表 on 数据库名,表名 to ‘用户名’@ ‘来源地址’ [identified by ‘密码’];
    select、alter、update、delete、drop、truncate 可以用来修改部分权限
    在这里插入图片描述
    flush privileges; 刷新权限(刷新的是权限表,可以让权限提前生效)
  • 查看权限
show grants for 'zhangsan'@'%';

在这里插入图片描述

  • 移除权限
    revoke权限列表ON数据库名.表名FROM用户名@来源地址;
    revoke all on . from ’ lisi’@’%’;
    show grants for ’ lisi’ @ ‘%’;
    usage权限只能用于数据库登陆,不能执行任何操作;usage权限不能被回收,即revoke不能删除用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值