Mysqld数据库管理

一.Mysqld数据库类型

常用的数据类型

|--------------|------------------------------------------------------------------------|
| int | 整型 无符号[0-4294967296(2的32次方)-1],有符号[-2147483648(2的31次方)-2147483647] |
| float | 单精度浮点 4字节32位 |
| double | 双精度浮点 8字节64位 |
| char | 固定长度的字符类型 |
| varchar | 可变长度的字符类型 |
| text | 文本 |
| image | 图片 |
| decimal(5,2) | 5个有效长度数字,小数点后面有2位 |

二.查看数据表结构的操作

查看当前的 MySQL 版本信息及连接用户名:
SELECT VERSION();
SELECT USER();
1.查看当前服务器中的数据库
SHOW DATABASES;	  #大小写不区分,分号";"表示结束

MySQL会附带4个系统数据库:

  • information_schema:主要存储系统中的一些数据库对象信息,如数据库名,数据库的表,表栏的数据类型与访问权限等
  • mysql:主要存储系统的用户权限信息
  • performance_schema:主要存储数据库服务器性能参数信息
  • sys:MySQL5.7之后引入的一个新的 sys 数据库,sys 库里面的表、视图、函数以及存储过程可以让用户快速了解MySQL的一些信息,它的数据来源于performance_schema
2.查看数据库中包含的表
USE 数据库名;
SHOW TABLES;
#在不切换库的情况下直接查看表:show tables from 数据库名;
3.查看表的结构(字段)
USE 数据库名;
DESCRIBE [数据库名.]表名;
可缩写成:DESC 表名;
#在不切换库下查看某个表的结构:desc 库名.表名;

三.SQL语句

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

SQL语言分类:

  • DDL:用于管理数据库对象(库、表、索引 等)
  • DML:数据操纵语言,用于对表中的数据进行管理
  • DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
  • DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
1.DDL

1)创建新的数据库

CREATE DATABASE 数据库名;

2)创建新的表

CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。

3)删除指定的数据表

DROP TABLE [数据库名.]表名;		#如不用USE进入库中,则需加上数据库名

4)删除指定的数据库

DROP DATABASE 数据库名;

5)修改表结构

alter table 旧表名 rename 新表名;
alter table 表名 add 新字段 数据类型 [约束属性];
alter table 表名 change 旧字段 新字段 数据类型 [约束属性];
alter table 表名 drop 字段名;

alter table 表名 add primary key(字段名);
alter table 表名 drop primary key;

6)在数据表中删除指定的数据记录

在数据表中删除指定的数据记录
DELETE FROM 表名 [WHERE 条件表达式];

例:
DELETE FROM qwer123 WHERE id=4;

7)克隆表

create table 新表名 like 旧表名;             #克隆表结构
insert into 新表名 select * from 旧表名;     #克隆表数据       可实现表结构和表数据与旧表都一样

create table 新表名 (select * from 旧表名);     #表数据和旧表是一样的,新表的结构和旧表的不一定一样

8)清空表

清空表
delete from 表名;          #一条一条的删除记录,清空表效率较慢;AUTO_INCREMENT自增字段仍保持原有的记录

truncate table 表名;       #直接重建表,清空表效率较快;AUTO_INCREMENT自增字段的记录也会重置
2.DML 用于管理表数据

1)向数据表中插入新的数据记录

INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);

SELECT * FROM xy101;					#查询表的数据记录

2)修改、更新数据表中的数据记录

UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
3.DQL:用于查询表数据
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
select * from 表名\G					#以列表方式竖向显示
select * from 表名 limit 2;		    #只显示头2行
select * from 表名 limit 2,3;			#显示第2行后的前3行
4.DCL:用于管理用户和权限
create user '用户名'@'来源地址 identified by '密码';
来源地址:
localhost ip 网段 %(任意地址) 主机名 
 
修改用户名
rename user 'vc'@'%' to 'dvd'@'%';
修改密码
set password for '用户名'@'来源地址' = password('密码');只可以root用户
alter user '用户名'@'来源地址' identified by '密码'; 修改密码
用户权限管理:
grant 权限1, 权限2  ON 库名.表名 to '主机名'@'来源地址'identified by 密码
查看权限
show grant for '用户名'@'来源地址';
撤回权限
revoke 权限列表 on 数据库名.表名 from '用户名'@'来源地址'

四.拓展

1.如何找回root密码
1)修改MySQL配置文件,在 [mysqld] 配置项下面添加配置 skip-grant-tables 
2)重启MySQL服务,使用 mysql 命令即可直接登录数据库
3)执行命令 update mysql.user set authentication_string=password('密码') where user='root'; 来修改root用户密码
4)还原MySQL配置文件,再重启MySQL服务,即可使用命令 mysql -u root -p密码 [-h 服务器地址 -P 端口] 登录数据库
2.权限管理
grant 权限1,权限2,....  on 库名.表名 to '用户名'@'来源地址' [identified by '密码'];     #在5.7或之前支持 grant 创建新用户和授予权限,8.0开始只能用于授予权限
      all [privileges]        *.*(代表 任意库.任意表)

flush privileges;

show grant for '用户名'@'来源地址';

revoke 权限列表  on 库名.表名  from '用户名'@'来源地址';
       all
相关推荐
两点王爷2 小时前
Java读取csv文件内容,保存到sqlite数据库中
java·数据库·sqlite·csv
凡人的AI工具箱3 小时前
每天40分玩转Django:Django部署概述
开发语言·数据库·后端·python·django
2401_871213303 小时前
mysql之MHA
数据库·mysql
言之。4 小时前
【MySQL】事务
数据库·mysql
潇湘秦4 小时前
Oracle 11G还有新BUG?ORACLE 表空间迷案!
数据库·oracle
凡人的AI工具箱4 小时前
每天40分玩转Django:Django Email
数据库·人工智能·后端·python·django·sqlite
后端转全栈_小伵4 小时前
SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
数据库·spring boot·后端·sqlite·学习方法
dengjiayue6 小时前
MySQL 性能瓶颈,为什么 MySQL 表的数据量不能太大?
数据库·mysql
m0_748232396 小时前
python3 Flask应用 使用 Flask-SQLAlchemy操作MySQL数据库
数据库·mysql·flask
竹影卿心6 小时前
Java连接HANA数据库
java·数据库·windows