当前位置: 首页 > java >正文

MySQL数据库基础(DCL,DDL,DML)详解

目录

  • MySQL数据库入门:从零开始掌握数据库开发
  • 数据库概述
    • 一、MySQL 的宏观定位
      • DBMS
    • 二、MySQL 与 SQL:语言与引擎的关系
    • 三、SQL语言的三大支柱:DDL, DML, DCL
    • DCL
      • 查询所有用户
      • 创建一个用户
      • 授予用户权限
      • 登录新用户
    • DDL
      • create 创建一个数据库/表
      • drop 删除一个数据库/表
      • 创建表(comment添加注释)
      • 查看表结构
      • rename 修改表名
      • alter 更改表结构
        • 增加一个字段
        • 删除一个字段
        • 修改一个字段
        • 总结:DDL
    • DML
      • insert 插入语句
      • select(重点)查询语句
        • 查询所有部门
        • 查询带条件的部门
          • 带有 id 条件
          • 带有 name 条件
          • 同时带有 id 和 name条件 and 链接
          • 带有id 或者 name条件 or 链接
      • update更新语句
      • delete 删除语句
    • 数据库名和表名的大小写敏感性
    • 列名和别名的大小写敏感性
    • 关键字大小写敏感性

MySQL数据库入门:从零开始掌握数据库开发

MySQL数据库是我们从事开发路上必须学习的一部分。下面我们从数据库概述、基础语句、基础操作到练习题,系统性地学习MySQL数据库的基础操作。

数据库概述

一、MySQL 的宏观定位

MySQL 是一个全球最流行的开源关系型数据库管理系统。它是 LAMP(Linux, Apache, MySQL, PHP/Python/Perl)和 LEMP 现代Web应用栈的核心组件,充当着数据的“仓库”角色,负责所有数据的存储、组织、检索和管理。

DBMS

DBMS全称(Database Management system)
一套软件系统,用于创建、管理、使用和维护数据库

二、MySQL 与 SQL:语言与引擎的关系

MySQL是一个数据库管理系统,而SQL是用于管理这个系统的语言。

MySQL (DBMS):好比是一个汽车引擎。它提供动力、机制和所有运行所需的基础部件。

SQL (Language):好比是方向盘、油门和刹车。它是你与引擎交互、控制汽车的方式。

通过SQL语言向MySQL引擎发送指令,它接收、处理并返回结果。

三、SQL语言的三大支柱:DDL, DML, DCL

SQL语言根据其功能,可分为三大类,它们共同构成了数据库管理的基石。

对于应用程序开发者来说,在日常业务代码中很少编写GRANT和REVOKE语句。但对于数据库管理员和系统架构师来说,DCL是至关重要、必须熟练掌握的核心技能。

  • DDL:定义数据(创建/修改表结构)

  • DML:操作数据(增删改查表中的数据)

  • DCL:控制数据(管理权限和事务)

DCL

查询所有用户

在这里插入图片描述
一般来说,我们在管理数据库时使用 root 用户, root 用户拥有最高权限。

创建一个用户

SQL语句:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'YourStrongPassword123!';
  • ‘app_user’: 自定义的用户名。

  • ‘%’: 允许从任何主机连接。为了更安全,可以限制为特定IP或域名,如 ‘192.168.1.%’ 或 ‘app-server.example.com’。

  • IDENTIFIED BY ‘…’: 设置用户的登录密码。

实践一下:在本机创建一个user_demo用户

 create user 'user_demo' @'localhost' identified by '1234';

在这里插入图片描述
创建成功,现在查看一下这个用户的权限

show grants for 'user_demo'@'localhost';

在这里插入图片描述
GRANT USAGE ON * . * 的含义:

  • 用户存在,可以连接到MySQL服务器

  • 但没有对任何数据库的任何权限

  • 不能查询、插入、修改或删除任何数据

  • 不能创建数据库或表

授予用户权限

现在我们要授予其权限,使用 grant 语句,这里我们先授予其创建、查询权限、写权限;

grant select , create , insert , update on demo_dcl.* to 'user_demo'@'localhost';

执行完毕,重新查询这个用户的权限
在这里插入图片描述

ok,有了,接下来我们退出root,改为通过user_demo这个用户访问数据库

exit;

登录新用户

mysql -u user_demo -p

之后输入密码,进入数据库
查询当前权限

show grants;

在这里插入图片描述
由于只授予了demo_dcl的权限,所以在这个用户视角只有demo_dcl这一个数据库,information_schema :

  1. 系统内置数据库
  • information_schema 是 MySQL 自动创建和维护的系统数据库

  • 它包含所有数据库、表、列、权限等的元数据信息

  • 每个 MySQL 实例都有这个数据库

  1. 只读访问权限
  • 所有用户默认都有 information_schema 的只读权限

  • 这是为了让用户能够查询数据库结构信息

  • 只能查询,不能修改其中的数据

在这里插入图片描述
选中demo_dcl数据库

use demo_dcl;

为了方便演示,已经准备好了一个dept表,现在我们看一下这个表的结构
在这里插入图片描述
由 4 个字段构成
在这里插入图片描述
根据我们赋予的权限,我们只可以查表,建表,更新表,写入表 ,是没有办法删除表中的元素的,不信来试试。

删除表的语句(删除 id = 5 的信息):
在这里插入图片描述
命令被拒绝,无法删除,所以说,一般的删库跑路是做不到滴。

回到我们的root用户

DDL

create 创建一个数据库/表

create database demo_2;

drop 删除一个数据库/表

drop database demo_2;

创建表(comment添加注释)

在这里插入图片描述

查看表结构

show create table dept;

在这里插入图片描述

 desc dept;

在这里插入图片描述

rename 修改表名

rename table 旧表名 to 新表名

在这里插入图片描述

alter 更改表结构

增加一个字段
alter table new_dept add email varchar(50);

在这里插入图片描述

删除一个字段
alter table new_dept drop email;

在这里插入图片描述

修改一个字段
alter table new_dept modify column name varchar(200);

在这里插入图片描述

总结:DDL

主要操作集中在数据库和表结构上

DML

insert 插入语句

insert into 表名 value(与表名对应的值);
INSERT INTO new_dept(id, name, create_time, update_time) VALUES (1,'学工部','2023-09-25 09:47:40','2024-07-25 09:47:40'),(2,'教研部','2023-09-25 09:47:40','2024-08-09 15:17:04'),(3,'咨询部','2023-09-25 09:47:40','2024-07-30 21:26:24'),(4,'就业部','2023-09-25 09:47:40','2024-07-25 09:47:40'),(5,'人事部','2023-09-25 09:47:40','2024-07-25 09:47:40'),(6,'行政部','2023-11-30 20:56:37','2024-07-30 20:56:37');

select(重点)查询语句

select 需要查询的字段 from 表名 where 条件过滤
查询所有部门
* 代表查询所有

在这里插入图片描述

查询带条件的部门
带有 id 条件

查询 id = 1 的部门所有信息

 select * from new_dept where id = 1;

在这里插入图片描述

带有 name 条件

查询 name = ‘教研部’ 的部门所有信息

 select * from new_dept where name= '教研部';

在这里插入图片描述

同时带有 id 和 name条件 and 链接

查询 id = 3 并且 name = ‘教研部’ 的部门所有信息

 select * from new_dept where id= 3 and name= '教研部';

在这里插入图片描述

带有id 或者 name条件 or 链接

查询 id = 3 或者 name = ‘教研部’ 的部门所有信息
在这里插入图片描述

update更新语句

将 id = 3 的部门 name 更新为后勤部

update new_dept set name ='后勤部' where id = 3;

在这里插入图片描述

delete 删除语句

删除 id = 2 和 name ='后勤部’的信息

delete from new_dept where id = 2 or name = '后勤部';

在这里插入图片描述

数据库名和表名的大小写敏感性

这个层面的敏感性主要取决于操作系统。

  • 操作系统: Linux / Unix 大小写敏感 mytable 和 MyTable 是两个不同的表
  • 操作系统: Windows / macOS 大小写不敏感

列名和别名的大小写敏感性

列名和别名在任何平台上都是大小写不敏感的

关键字大小写敏感性

SQL 关键字(如 SELECT, FROM, WHERE, INSERT, UPDATE 等)在所有的 SQL 数据库系统中都是大小写不敏感的。

http://www.xdnf.cn/news/20298.html

相关文章:

  • Axure笔记
  • 【VoNR】VoNR是5G语音,VoLTE是4G语音,他们是同一个IMS,只是使用了新的访问方式?
  • 传统神经网络实现-----手写数字识别(MNIST)项目
  • 状压 dp --- 棋盘覆盖问题
  • 使用smb协议同步远程文件失败
  • javaweb(【概述和安装】【tomeat的使用】【servlet入门】).
  • SQL工具30年演进史:从Oracle到Navicat、DBeaver,再到Web原生SQLynx
  • 【开题答辩全过程】以 智能商品数据分析系统为例,包含答辩的问题和答案
  • 商密保护密码:非公知性鉴定的攻防之道
  • 介电常数何解?
  • 苍穹外卖 day03
  • 数字时代的 “安全刚需”:为什么销售管理企业都在做手机号码脱敏
  • 小学爱国教育主题班会PPT课件模板
  • MySql的事务机制
  • 让语言模型自我进化:探索 Self-Refine 的迭代反馈机制
  • 均匀圆形阵抗干扰MATLAB仿真实录与特点解读
  • 结合机器学习的Backtrader跨市场交易策略研究
  • Linux进程死锁
  • SpringBoot 中 ThreadLocal 的妙用:原理、实战与避坑指南
  • 2025年度全球人工智能驱动的营销技术格局透视:探索领先的GEO优化公司
  • 一笔成形,秒绘标准图!Pen Kit重构“自然书写”体验
  • 为什么后端接口不能直接返回数据库实体?聊聊 Product 到 ProductDetailVo 的转换逻辑
  • 轨迹文件缺少时间
  • 【HEMCO第一期】用户教程
  • 3-8〔OSCP ◈ 研记〕❘ WEB应用攻击▸REST API枚举
  • Java IO 流深度剖析:原理、家族体系与实战应用
  • 【问题解决】mac笔记本遇到鼠标无法点击键盘可响应处理办法?(Command+Option+P+R)
  • 监管罚单背后,金融机构合规管理迎大考!智慧赋能或是破局关键
  • 数据库基础操作命令总结
  • 基于单片机智能家居环境检测系统/室内环境检测设计