DDL、DML、DQL、DCL具体实例与关系

news2024/12/23 1:56:23

 

 一、DDL、DCL、DML、DQL

        通过二维表的形式,更加清晰直观的学习、对比其关系。

DDL

DCL

DML

DQL

英文释义

Data Defination Language

数据库定义语言

Data Control Language

数据库控制语言

Data Manipulation Language 数据操作语言

Data Query Language

数据查询语言

作用

定义数据库对象的结构和属性,及存储过程

控制数据库的访问权限和安全性

对数据库中的数据进行操作

对数据进行查询操作

功能

创建数据库对象--create

修改数据库对象--insert

删除数据库对象(表、视图、索引)

--drop

授予权限

grain

撤销权限

revoke

插入数据

insert into

更新数据

update

删除数据

delete from

查询数据

select

分页查询、排序查询、分组查询、条件查询

select 列名 from 表名 where 限定条件;

应用场景

  1. 数据库设计阶段
  2. 系统升级或重构
  1. 数据库安全管理
  2. 多用户环境
  1. 日常数据处理
  2. 数据检索和分析

从数据库中选择数据

选择数据、过滤数据、排序数据、组合数据、计算数据

操作对象

据库对象的结构,如表、视图、索引等

对用户权限的管理

数据库中的实际数据

数据库中的实际数据

执行结果

永久性地改变数据库的结构

权限授予或撤销会立即生效,并影响用户对数据库的操作权限

临时性的,除非提交事务,否则数据更改可以回滚。

可进行随时调整,以表格形式返回,可通过工具进一步处理或显示

二、DDL语法与实践 

数据库操作

查询所有的数据库名称:

show database;

show database;

创建数据库

create database 数据库名称;

create database if not exists 数据库名称;

删除数据库

drop database 数据库名;

drop database if not exists 数据库名;

使用数据库

select database();——查看当前使用的数据库

use 数据库名;——使用数据库

表操作

查询表

show tables ;

desc 表名;

创建表

create table 表名(

字段名 数据类型,

....

);

修改表

alter table 表名 rename to 新表名;

alter table 表名 add 列名 数据类型;

alter table 表名 modify 列名 新数据类型;

alter table 表名 change 列名 新数据类型;

alter table 表名 drop 列名;

三、DML语法与实践

添加数据

1.给指定列添加数据

insert into 表名(列名1,列名2,...)values(值1,值2,...);

2.给全部列添加数据

insert into 表名 values(值1,值2,...);

3.给指定列添加数据

insert into 表名(列名1,列名2,...)values(值1,值2,...),(值1,值2,...),(值1,值2,...)... ;

insert into 表名 values(值1,值2,...),(值1,值2,...)...;

修改数据

update 表名 set 列名1=值1,列名2=值2,列名3=值3,...

注意:修改语句中如果不加条件,则将所有数据都修改。

删除数据

delete from 表名 [where 条件];

注意:删除语句中如果不加条件,则将所有数据都删除

 代码操作

可以按照模板,去创建表

--查询所有数据
select * from stu;
--给指定列添加数据 INSERT INTO 表名(列名1,列名2,)VALUES(值1,值2,);
INSERT into stu(id, name) VALUES(1,'张三');
--给所有的添加数据
INSERT into stu(id, name,sex,birthday,score,email,tel,status) VALUES(2,'李四','男','1999-11-11',88.88,'lisi@itcanst.cn','13888889990',1);

--列名的列表可以省略
INSERT into stu values(2,'李阳','男','1999-11-11',88.88,'lisi@itcanst.cn','13888889990',1);

--修改数据 update 表名 set、 列名1=值1,列名2=值2,..[where 条件]
--将张三改为女
update stu set sex = '女' where name = '张三';

--将张三的生日改为1999-12-12 分数改为99.99
update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';

--注意,若没有where,表示所有数据全部修改

--删除 DELETE from 表名 where
delete from stu where name = '张三';

四、DQL语法与实践

查询语法

select 字段列表 from 表名列表

where 条件列表

group by 分组字段

having 分组后条件

order by 排序字段

limit 分页限定

1.查询多个字段

select 字段列表 from 表名;

select * from 表名; 查询所有表名

2.去除重复记录

select distinct 字段列表 from 表名;

3.起别名

AS:(AS也可以省略用空格代替)

条件查询

select 字段列表 from 表名 where 条件列表;

排序查询

select 字段列表 from 表名 order by 排序字段名1 [排序方式1],排序字段名2 [排序方式2]...;

排序方式:

ASC升序(默认)

DESC:降序

分组查询

聚合函数

select 聚合函数名(列名) from 表;

注意:null不参与聚合函数运算。

 语法

select 字段列表 from 表名 [where 分组前条件限定] group by 分组字段名 [having]

区分where与having的区别

where

having

执行

在分组前对数据进行过滤

在分组后对数据进行过滤

条件

后不可使用聚合函数

后可使用聚合函数

意义

要分组的条件要求

对分组后的条件要求

 

分页查询

select 字段列表 from 表名 limit 起始索引, 查询条目;

起始索引从零开始

起始索引 = (当前页码-1)* 每页显示的条数

tip是:

分页查询limit是MySQL方言

Oracle分页查询使用rownumber

SQL server分页查询使用top

五、代码实操

创建表、添加表数据、基础查询

-- 删除stu表
DROP TABLE
IF
	EXISTS stu;-- 创建stu表
CREATE TABLE stu (
id INT,
NAME VARCHAR ( 20 ),
age INT,
sex VARCHAR ( 5 ),
address VARCHAR ( 100 ),
math DOUBLE ( 5, 2 ),
english DOUBLE ( 5, 2 ),
hire_date date 
);-- 添加数据
INSERT INTO stu ( id, NAME, age, sex, address, math, english, hire_date )
VALUES
	( 1, '马云', 55, '男', '杭州', 66, 78, '1995-09-01' ),
	( 2, '马画藤', 45, '女', '深圳', 66, 78, '1998-09-01' ),
	( 3, '马斯克', 55, '男', '香港', 66, 78, '1999-09-02' ),
	( 4, '柳白', 20, '女', '湖南', 66, 78, '1997-09-05' ),
	( 5, '柳青', 20, '男', '湖南', 66, 78, '1998-09-01' ),
	( 6, '刘德华', 57, '男', '香港', 66, 78, '1998-09-01' ),
	( 7, '张学友', 22, '女', '香港', 66, 78, '1998-09-01' ),
	( 8, '德玛西亚', 18, '男', '南京', 66, 78, '1994-09-02' );
SELECT
	* 
FROM
	stu;-- 基础查询==============================
SELECT NAME  -- 姓名
	,
	age -- 年龄
FROM
	stu;
	
	
-- 查询地址
SELECT address from stu;
-- 去重
SELECT DISTINCT address from stu;

-- 查询姓名、数学成绩、英语成绩
select name,math as 数学成绩,english as 英语成绩 from stu;

条件查询

SELECT * from stu;
-- 条件查询=====================
-- 1.查询年龄大于20岁的学员信息
select name,id,age,sex,hire_date,math from stu where age > 20;

-- 2.查询年龄 大于等于20岁 的学员信息
select * from stu where age >= 20;

-- 3.查询年龄 大于等于20岁 并且 小于等于 30岁 的学员信息
select * from stu where age >= 20 && age <=30;
select * from stu where age >= 20 and age <=30;
select * from stu where age between 20 and 30;

-- 4.查询入学日期在‘1988-09-01’到‘1999-09-01’之间的学员信息
select * from stu where hire_date between '1988-09-01' and '1999-09-01';

-- 5.查询年龄等于18岁的学员信息
select * from stu where age = 18;
-- 6.查询年龄不等于18岁的学员信息
select * from stu where age != 18;
select * from stu where age <>18;

-- 7.查询年龄=28 或 =20 或=22 的成员
select * from stu where age =18 or age = 20 or age = 22;
select * from stu where age in (18,20,22);

-- 8.查询英语成绩为null的学员成绩
-- 注意:null值的比较不可以用null  is null;用is  is not
-- select * from stu where english = null;
select * from stu where english is null;
select * from stu where english is not null;

-- LIKE 占位符的使用--模糊查询---
-- 1.姓马的学员
select * from stu where name like '马%';
-- 2.查询第二个字是画的
select * from stu where name like '_画%';
-- 3.包含德的学员信息
select * from stu where name like '%德%';

分组查询

-- 分组查询========================

-- 聚合操作--select 聚合函数名(列名) from 表;——纵向计算
-- count--统计数量    1. 主键  2.*

-- 1. 统计班级一共有多少个学生
select count(name) from stu; -- count 统计的列名不能为null
select count(math) from stu;

-- 2. 查询数学成绩的最高分
select max(math) from stu;

-- 3. 查询数学成绩的最低分
select min(math) from stu;

-- 4. 查询数学成绩的总分
select sum(math) from stu;

-- 5. 查询数学成绩的平均分
select avg(math) from stu;

-- 6. 查询英语成绩的最低分
select min(english) from stu; -- 如果其中有null,聚合函数中null不参与运算

/*-- 分组查询=======================
-- select 字段列表 from 表名 [where 分组之前的条件限定] group by 分组字段 [ having 分组后条件过滤]...
*/
select * from stu;
-- 1.查询男同学和女同学各自的数学平均分
select sex,avg(math) from stu group by sex;

-- 2.查询男同学和女同学各自的数学平均分 以及各自的人数
select sex,avg(math),count(*) from stu group by sex;

-- 3.查询男同学和女同学各自的数学平均分 以及各自的人数, 要求:分数低于70分的不参加分组
select sex,avg(math),count(*) from stu where math>=70 group by sex;

-- 4.查询男同学和女同学各自的数学平均分 以及各自的人数要求:分数低于70分的不参加分组, 分组后人数大于2
select sex,avg(math),count(*) from stu where math>=70 group by sex having count(*)>2;

select sex,avg(math),count(*) from stu where math>=70 group by sex having count(name)>2;

分页查询

/*
分页查询:
		select 字段列表 from 表名 limit 起始索引,查询条目数*起始索引:从0开始
*/
SELECT * FROM sru;
-- 1. 从0显示3条数据,查询3条数据
select * from stu limit 0, 3;

-- 2. 每页显示3条数据,查询第1页数据
select * from stu limit 0, 3;
-- 3. 每页显示3条数据,查询第2页数据
select * from stu limit 3, 3;
-- 4. 每页显示3条数据,查询第3页数据
select * from stu limit 6, 3;

-- 起始索引 = (当前页码-1)*3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1975097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyMuPDF-Guide

本文翻译整理自&#xff1a; https://pymupdf.readthedocs.io/en/latest/how-to-open-a-file.html 文章目录 一、打开文件1、支持的文件类型2、如何打开文件打开一个错误的文件扩展名 3、打开远程文件从云服务打开文件 4、以文本形式打开文件例子打开一个C#文件打开一个XML文件…

按摩行业的革新者:从挑战到辉煌的转型之路

在时代浪潮的推动下&#xff0c;一个勇于创新的团队于2018年毅然踏入按摩服务市场&#xff0c;创立了一家颠覆传统的按摩店。面对行业内的激烈竞争与瞬息万变的市场环境&#xff0c;他们凭借独树一帜的经营模式和不懈的努力&#xff0c;不仅稳固了市场地位&#xff0c;更在去年…

使用Greenhills生成Lib并使用Lib的两种方法

文章目录 前言GHS工程生成libmake方式生成liblib的使用总结 前言 在软件交付过程&#xff0c;如果不交付源代码&#xff0c;可以将源码编译之后生成lib文件提供给客户。本文介绍GHS中生成lib的两种方法&#xff0c;一种基于GHS工程&#xff0c;一种基于make文件。生成完lib后的…

uniapp自定义网格布局用于选择金额、输入框焦点事件以及点击逻辑实战

样式 <view class="withdraw-section"><text class="section-title">提现金额</text><view class="amount-options"><view v-for="(item, index) in list" :key="index" class="amount-opt…

使用Leaflet进行船舶航行警告区域绘制实战

目录 前言 一、坐标格式转换 1、数据初认识 2、将区域分割成多个点 3、数据转换 4、数据转换调用 二、WebGIS展示空间位置信息 1、定义底图 2、Polygon的可视化 3、实际效果 三、总结 前言 通常而言&#xff0c;海事部门如海事局&#xff0c;通常会在所述的管辖区域内…

Java从入门到精通(十五) ~ IO流

晚上好&#xff0c;愿这深深的夜色给你带来安宁&#xff0c;让温馨的夜晚抚平你一天的疲惫&#xff0c;美好的梦想在这个寂静的夜晚悄悄成长。 目录 前言 什么是IO流&#xff1f; IO流的作用&#xff1a; 一、基础流 1. 字节流 1.1 字节输入流 FileInputStream 1.2 字节…

找到第一个满足条件的格值

表格第1列是科目&#xff0c;之后几列是每次的考试成绩&#xff0c;顺序排列。 ABCDE1Art03.676.27.82History3.786.217.29.83Maths5.66.36.68.9 要求根据指定的科目和成绩&#xff0c;找到该科目中大于等于该成绩的第1个格值&#xff0c;比如参数是Maths、6.5时&#xff0c;…

element-ui简单入门1.0.0

第一篇&#xff1a;table标签速用 总结&#xff1a;建楼前&#xff0c;先打地基<el-table></el-table>&#xff0c;打完地基看高度&#xff0c;一层楼4米&#xff0c;80米20个<el-table-column></el-table-column>&#xff0c;每次楼的名字是label 第…

[翻译] Asset Administration Shells

关于资产管理外壳 (AAS) 资产管理外壳 (AAS) 是工业4.0中的关键概念&#xff0c;为产品、资源&#xff08;如设备&#xff09;和过程提供信息隐藏和更高层次的抽象。AAS 是技术和设备无关的机器可读描述&#xff0c;提供访问资产属性和功能的统一接口。与现有解决方案不同&…

C# 下的限定符运算详解(全部,任意,包含)与示例

文章目录 1.限定符概述2. 全部限定符运算&#xff08;All&#xff09;3. 任意限定符运算&#xff08;Any&#xff09;4. 包含限定符运算&#xff08;Contains&#xff09;总结 当我们在C#编程中需要进行条件判断或集合操作时&#xff0c;限定符&#xff08;qualifiers&#xff…

Vue项目启动ESLint报错no-unused-vars解决办法

目录 原因分析解决方法 Vue项目启动时报错如下 ✘ http://eslint.org/docs/rules/no-unused-vars index is assigned a value but never usedsrc\views\friend\list.vue:206:17const index this.tableList.indexOf(v)^原因分析 ESLint是一个在JavaScript代码中识别和报告问…

【传知代码】辅助任务改进社交帖子多模态分类(论文复现)

在当今数字化社交时代&#xff0c;社交媒体平台如同人们生活的一部分&#xff0c;每天数以亿计的帖子在网络上涌现。这些帖子不仅仅是信息的载体&#xff0c;更是人们思想、情感和行为的折射。然而&#xff0c;要准确理解和分析这些多样化的社交帖子&#xff0c;仅依靠文本内容…

请问如何做好软件测试工作呢?

一、明确测试目标和范围 理解测试目的&#xff1a;在开始测试之前&#xff0c;首先要明确测试的目标和范围&#xff0c;确保测试计划 与需求相匹配。这有助于测试人员聚焦在关键功能上&#xff0c;避免浪费时间和资源。制定详细的测试计划&#xff1a;根据项目需求&#xff0…

【Python】爬取网易新闻今日热点列表数据并导出

1. 需求 从网易新闻的科技模块爬取今日热点的列表数据&#xff0c;其中包括标题、图片、标签、发表时间、路径、详细文本内容&#xff0c;最后导出这些列表数据到Excel中。 网易科技新闻网址&#xff1a;https://tech.163.com 2. 解决步骤 2.1 前期准备 爬虫脚本中需要引用…

Visio新手安装及超全快捷指令合集

Microsoft Visio是一款专业的流程图和图表绘制软件&#xff0c;是微软旗下的一款图表和矢量图形应用程序&#xff0c;属于Microsoft 365系列的一部分。但Visio需要单独安装&#xff0c;安装完成之后可与Word联用。 一、Visio软件介绍 Visio 是一款用途多样的绘图工具&#xff…

全球氢钎焊市场规划预测:未来六年CAGR为3.4%

随着全球制造业的持续发展和消费者对高质量产品的需求增加&#xff0c;氢钎焊作为一种高效的焊接技术&#xff0c;正逐渐受到市场的广泛关注。本文旨在通过深度分析氢钎焊行业的各个维度&#xff0c;揭示行业发展趋势和潜在机会。 【市场趋势的演变】 1. 市场规模与增长&#…

【uniapp】集成第三方插件示例

文章目录 uniapp芯套Android壳app目录下/libs目录导入全部aar工程目录下导入rewriter文件夹 uniapp芯套Android壳 https://blog.csdn.net/xzzteach/article/details/140800350 app目录下/libs目录导入全部aar工程目录下导入rewriter文件夹 本地引入包内容 在 project 级别的…

解决com.alibaba.csp.sentinel.slots.block.flow.FlowException: null

springboot项目配置sentinel&#xff0c;能限流成功但是不能限流方法 原因 名字没对应上

token和embedding

1. token 2. embedding 1.token token&#xff1a;词元/令牌/词 tokenization&#xff1a;分词 tokenizer&#xff1a;分词器 token是最小语义单元&#xff0c;通常可以是&#xff0c;一个字母、一个词、一个数字、一个汉字或任何其他有意义的字符组合&#xff0c;取决于文本处…

免费【2024】springboot 大学生心理健康诊断专家系统设计与开发

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…