掌握基础SQL命令及其连接操作与函数

版权申诉
0 下载量 113 浏览量 更新于2024-10-21 收藏 25KB RAR 举报
资源摘要信息: "SQL基础命令与连接操作" 在数据库管理系统(DBMS)中,SQL(Structured Query Language)是一种专门用于存储、检索和操作数据的标准编程语言。它被广泛应用于各种关系型数据库,如MySQL、PostgreSQL、Oracle、Microsoft SQL Server等。SQL语言主要包括数据查询、数据定义、数据操作和数据控制四个方面的功能。本资源将详细探讨SQL的基础命令,特别是与数据表之间的连接(joins)操作以及函数的应用。 首先,基础命令是构建任何SQL查询的基础。以下是一些核心的基础SQL命令: 1. SELECT语句:用于从数据库表中选择数据。基本语法为:`SELECT 列名称 FROM 表名称`。 2. WHERE子句:用于过滤记录,只返回符合条件的数据。基本语法为:`SELECT 列名称 FROM 表名称 WHERE 条件`。 3. INSERT INTO语句:用于向数据库表中插入新的数据行。基本语法为:`INSERT INTO 表名称 (列1, 列2, ...) VALUES (值1, 值2, ...)`。 4. UPDATE语句:用于修改表中的数据。基本语法为:`UPDATE 表名称 SET 列名称 = 新值 WHERE 条件`。 5. DELETE语句:用于删除表中的数据。基本语法为:`DELETE FROM 表名称 WHERE 条件`。 6. ORDER BY子句:用于对结果集进行排序。基本语法为:`SELECT 列名称 FROM 表名称 ORDER BY 列名称 ASC|DESC`。 7. GROUP BY子句:用于结合聚合函数,按照一个或多个列对结果集进行分组。基本语法为:`SELECT 列名称 FROM 表名称 GROUP BY 列名称`。 接下来,数据表的连接操作(joins)是SQL中一个非常强大的功能,它允许从两个或多个表中根据共同的字段来查询数据。常见的连接类型包括: 1. INNER JOIN(内连接):返回两个表中连接字段相匹配的记录。基本语法为:`SELECT 列名称 FROM 表1 INNER JOIN 表2 ON 表1.列 = 表2.列`。 2. LEFT JOIN(左连接):返回左表(表1)中的所有记录,即使右表(表2)中没有匹配的记录。基本语法为:`SELECT 列名称 FROM 表1 LEFT JOIN 表2 ON 表1.列 = 表2.列`。 3. RIGHT JOIN(右连接):返回右表(表2)中的所有记录,即使左表(表1)中没有匹配的记录。基本语法为:`SELECT 列名称 FROM 表1 RIGHT JOIN 表2 ON 表1.列 = 表2.列`。 4. FULL JOIN(全连接):返回左表和右表中所有的记录,无论它们是否匹配。基本语法为:`SELECT 列名称 FROM 表1 FULL JOIN 表2 ON 表1.列 = 表2.列`。 5. CROSS JOIN(交叉连接):返回左表中的所有记录与右表中的所有记录的组合。基本语法为:`SELECT 列名称 FROM 表1 CROSS JOIN 表2`。 最后,函数在SQL中起到了扩展查询能力的作用,允许对数据进行复杂的处理和转换。SQL函数大致可以分为以下几类: 1. 聚合函数:如COUNT(), SUM(), AVG(), MIN(), MAX()等,这些函数用于对数据集进行计算。 2. 字符串函数:如CONCAT(), SUBSTRING(), UPPER(), LOWER()等,用于处理字符串数据。 3. 日期函数:如NOW(), CURDATE(), DATE_FORMAT()等,用于处理日期和时间数据。 4. 数值函数:如ROUND(), ABS(), CEIL()等,用于处理数值数据。 5. 条件函数:如CASE, COALESCE, IF等,用于根据条件执行不同的操作。 掌握这些基础命令和连接操作,以及函数的运用,对于高效地使用SQL语言进行数据操作和分析至关重要。无论是数据查询、更新还是报告生成,这些知识点构成了数据库操作的基石。通过练习和应用这些知识,可以加深对SQL语言的理解,并提高解决实际问题的能力。

for (int camera_index = 0; camera_index < this->m_safe_camera_list.size(); ++camera_index) { camera* cam = &(this->m_safe_camera_list[camera_index]); if (cam->m_is_exter_calib_check_mark == true) { // as a Internal reference K of the camera, the K-1 is : // 1/ax 0 -px/ax // 0 1/ay -py/ay // 0 0 1 Eigen::Matrix3f invk; invk.setIdentity(); invk(0, 0) = 1.0 / cam->m_inter_calib(0, 0); invk(0, 2) = -1.0 * cam->m_inter_calib(0, 2) / cam->m_inter_calib(0, 0); invk(1, 1) = 1.0 / cam->m_inter_calib(1, 1); invk(1, 2) = -1.0 * cam->m_inter_calib(1, 2) / cam->m_inter_calib(1, 1); Eigen::Vector3f tmp_t_verts = cam->m_exter_calib.topRightCorner(3, 1); Eigen::Matrix3f tmp_inv_r_mat= cam->m_exter_calib.topLeftCorner(3, 3).transpose(); Eigen::Vector3f tmp_root_point = -tmp_inv_r_mat * tmp_t_verts; for (int pose_index = 0; pose_index < cam->m_2D_pose_list.size(); ++pose_index) { Eigen::MatrixXf pose = cam->m_2D_pose_list[pose_index]; // check the pose's Confidence, if all the joints's confidiance is smaller than the gain, drop out float confidence = pose.row(2).maxCoeff(); if (confidence < this->m_joint_confidence_gian) { continue; }; my_radials tmpradials; tmpradials.m_2d_pose = pose; tmpradials.m_root_point = tmp_root_point; tmpradials.m_radials_points = (invk * pose.topRows(2).colwise().homogeneous()).colwise().normalized(); tmpradials.m_radials_points = tmp_inv_r_mat * tmpradials.m_radials_points; tmpradials.m_3d_pose_ID = -1; tmpradials.m_camera_index = camera_index; tmpradials.m_poes_index = pose_index; tmpradials.m_pose_confidence = pose.row(2).leftCols(7).sum(); this->m_3d_radials.push_back(tmpradials); } } }

162 浏览量