sqltask1

数据库基础知识

数据库定义

DB(database)

保存有组织的数据的容器

表(table)

某种特定类型数据的结构化清单
表名
模式 关于数据库和表的布局及特性的信息

列column

表由列组成 列是表中的一个字段 所有表由多个列组成(series)

行row

数据库记录record

主键

表中每一行都应该有一列可以唯一标识表中的每一行
任意两行都不具有相同的主键值(主键列不允许NULL值)
主键列中的值不允许修改或更新
主键值不能重用(如果删除,不能赋值给以后的新行)

外键

DBMS(database manage system)

数据库管理系统

SQL

结构化查询语言
structured query language
关系型数据库
二维表


主键
外键

mySQL数据库管理系统

数据库
数据表
视图
存储过程

导入数据库

cd C:\Program Files\MySQL\MySQL Server 8.0\bin
mysql -u root -p
CREATE DATABASE IF NOT EXISTS email DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
use email;
source C:\Users\14163\Documents\MySQL\yiibaidb/email.sql;
select city,phone,country from `offices`;

这里offices反引号

检索数据

2.1 SELECT语句

SELECT lastname, firstname, jobtitle FROM employees;
SELECT lastname, firstname, jobtitle FROM employees WHERE jobtitle='Sales Rep';
SELECT lastname, firstname, jobtitle FROM employees WHERE jobtitle='Sales Rep' AND officeCode=1;
SELECT lastname,firstname,jobtitle FROM employees WHERE jobtitle!='Sales Rep';
SELECT firstname,lastname,jobtitle FROM employees WHERE officeCode>5;

如果没有明确排序查询结果,则返回的数据没有特定的顺序,返回的数据有可能是数据被添加到表中的顺序,也可能不是

将SQL语句分成多行更容易阅读和调试

检索所有列

SELECT * FROM employees WHERE officeCode=5;
#其中*是通配符

检索不同的值

SELECT DISTINCT firstname FROM employees;


限制结果

SELECT firstname 
FROM employees
LIMIT 5;

使用注释

/*SELECT firstname -- 这是一条注释
FROM employees
# 这是另一条注释
LIMIT 5;*/

排序检索数据(order by)

-- SELECT firstname FROM employees ORDER BY firstname;
-- 按多个列排序
SELECT firstname, lastname, jobtitle FROM employees ORDER BY firstname, lastname, jobtitle;
-- 先按照firstname 排序,再按照lastname排序,最后按照jobtitle排序
/*SELECT employeeNumber,lastName 
FROM employees 
ORDER BY lastName DESC;*/
# 降序(默认为升序,加上DESC为降序)descending

作业一

导入数据库在CMD运行
查询函数为

select Email from email group by Email having count(Email)>1;

作业二

SELECT name,population,area FROM world WHERE area>300 OR (area>2500 AND gdp>2000);

在这里插入图片描述

[ERROR] 2025-05-14 11:47:46.797 +0800 - execute sql error: SQL task prepareStatementAndBind error [ERROR] 2025-05-14 11:47:46.798 +0800 - sql task error org.apache.dolphinscheduler.plugin.task.api.TaskException: SQL task prepareStatementAndBind error at org.apache.dolphinscheduler.plugin.task.sql.SqlTask.prepareStatementAndBind(SqlTask.java:377) at org.apache.dolphinscheduler.plugin.task.sql.SqlTask.executeUpdate(SqlTask.java:311) at org.apache.dolphinscheduler.plugin.task.sql.SqlTask.executeFuncAndSql(SqlTask.java:210) at org.apache.dolphinscheduler.plugin.task.sql.SqlTask.handle(SqlTask.java:161) at org.apache.dolphinscheduler.server.worker.runner.DefaultWorkerDelayTaskExecuteRunnable.executeTask(DefaultWorkerDelayTaskExecuteRunnable.java:49) at org.apache.dolphinscheduler.server.worker.runner.WorkerTaskExecuteRunnable.run(WorkerTaskExecuteRunnable.java:174) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131) at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:74) at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException: null at org.apache.dolphinscheduler.plugin.task.sql.SqlTask.prepareStatementAndBind(SqlTask.java:363) ... 12 common frames omitted [ERROR] 2025-05-14 11:47:46.798 +0800 - Task execute failed, due to meet an exception org.apache.dolphinscheduler.plugin.task.api.TaskException: Execute sql task failed at org.apache.dolphinscheduler.plugin.task.sql.SqlTask.handle(SqlTask.java:168) at org.apache.dolphinscheduler.server.worker.runner.DefaultWor
最新发布
05-16
### 优化Flink SQL以减少任务数量或处理大量任务 #### 减少SQL任务的数量 为了有效管理并减少Flink SQL任务的数量,可以通过合并相似的任务来实现。当多个查询操作目标相同的数据集时,考虑将它们组合成单一的复杂查询而不是多个简单的查询。 对于`FlinkInsertTask`类中的定义[^1],如果存在多个子类分别向不同的表插入数据,则应评估这些插入操作能否被整合在一起。例如: ```scala class CombinedInsertTasks(tableName: String, sqlParts: Seq[String]) extends FlinkInsertTask { override def run(): Unit = { val combinedSql = sqlParts.mkString(", ") flink.addInsertSql(s"INSERT INTO $tableName ($combinedSql)") } override def sql: String = ??? } ``` 通过这种方式可以在一次调用中完成多项插入工作,从而减少了整体的任务数。 #### 处理大量任务的最佳实践 针对批处理模式下的性能问题[^2],启用压缩功能能够显著改善磁盘I/O效率。具体设置如下所示: ```properties taskmanager.network.blocking-shuffle.compression.enabled=true ``` 此外,在作业启动前利用特定的方法对环境进行预处理也非常重要[^3]。这可能涉及到清理旧的日志文件或其他不必要的资源释放动作,以便为新的大规模计算腾出空间。 最后,理解内部执行流程有助于更好地设计应用程序结构[^4]。例如,知道`executeSql()`最终会调用`executeInternal()`可以帮助开发者更合理地安排SQL语句及其依赖关系,进而提高整个系统的吞吐量和响应速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值