达梦数据库是一种关系型数据库管理系统(RDBMS),支持标准SQL语法,包括数据查询(SELECT)、数据插入(INSERT)、更新(UPDATE)、删除(DELETE)等基本操作,以及视图、索引、存储过程等高级功能。
单表查询以SELECT语句为基石,从单一表或视图精准提取数据。其语法架构宛如精密仪器,各子句各司其职。
1.简单查询:轻松选取列,*号一键获取全列,灵活调整列序,满足多样化展示需求。
SELECT * FROM 表名;
select<选择列表>
from[<模式名.>]<基表名>|<视图名>[<相关名>]
[]
[]
[]
[]
[];
设置对于行的查询条件,结果仅显示满足查询条件的数于层次查询,适用于具有层次结构的自相关数据表查询,个字段是另一个字段的外键; SELECT语句用于从表中选取数据,简单查询就是用SELECT语句把一个表中的数据储存到一个结果集中。其基本语法如下: 4.别名查询:列别名重塑输出列名,简洁且个性化;表别名区分同名表,优化自连接查询,提升代码可读性与执行效率。 (二)连接查询:数据整合的桥梁 连接查询架起多表数据沟通的桥梁,借共同列关联实现多表数据协同分析。 1.笛卡尔积查询:展示所有可能组合,虽数据量庞大,但为复杂关联分析奠基。 2.内连接查询:聚焦匹配关联,精准提取符合连接条件记录。 查询子句为优化查询结果而生,深度挖掘数据价值。 1.排序子句:ORDER BY依指定列升降序排列结果,NULLS FIRST或LAST灵活处理空值位置,确保数据呈现契合分析需求。 子查询嵌套于主查询子句,先独立运算再为外层查询供数据支持。 1.使用IN关键字的子查询:IN检验表达式与子查询结果集值匹配情况,多层嵌套实现复杂逻辑。 INSERT INTO语句为数据入库开辟通道,支持值插入与查询插入两种模式。 1.值插入:为表逐行定制数据,精准填充列值。 UPDATE语句精准定位修改目标,SET子句更新列值,WHERE子句严格筛选修改范围。 DELETE FROM语句依条件精准清除表内数据,谨慎操作防误删。 视图是一种虚拟表,基于SQL查询结果集创建。 索引用于提高查询性能,加速数据检索。 存储过程是一组预编译的SQL语句,用于封装业务逻辑。 假设我们有一张“员工表(employee)”,其中包含“员工姓名(employee_name)”、“工资(salary)”、“入职日期(hire_date)”等字段。 1.查询工资高于20000元的员工信息: 7.删除员工信息: 总结: 在数据驱动的时代,数据库管理成为企业与组织的智慧中枢。达梦数据库以其卓越性能和丰富功能,为数据处理提供了坚实支撑。本文将围绕达梦数据库的查询与操作展开深度剖析,帮助读者解锁数据潜能。
的一个字段或多个字段的数据值排序,根据条件可指定可选项
存储到一个结果集中。其基本语法如下:SELECT<选择列表>
FROM[<模式名>.]<基表名>|<视图名>[<相关名>]
或者
selecte *
条件
SELECT *
FROM[<模式名>.]<基表名>|<视图名>[<相关名>]
说明:
(1)<选择列表>是选取要查询的列名;
(2)用户在查询时可以根据应用的需要改变列的显示顺序;
(3)星号(*)是选取所有列的快捷方式,此时列的显示顺序和数据表设计时列的顺序保持一致。
2.条件查询:条件设定丰富多样,运算符家族强大。比较谓词精准比对数值与字符串;BETWEEN精准圈定数值范围;IN判定集合归属;LIKE巧用通配符匹配字符串,复杂查询需求皆能迎刃而解。SELECT * FROM 表名 WHERE 列名 > 值;
SELECT * FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;
SELECT * FROM 表名 WHERE 列名 IN (值1, 值2, ...);
SELECT * FROM 表名 WHERE 列名 LIKE '%字符串%';
3.列运算查询:算术运算符赋能数值列运算,如为员工薪资精准调整,实时模拟数据变化,助力决策评估。SELECT 列1 + 列2 AS 新列名 FROM 表名;
SELECT 列名 AS 别名 FROM 表名;
SELECT t1.列名 AS 别名 FROM 表名 AS t1;
SELECT * FROM 表1 CROSS JOIN 表2;
SELECT 表1.列名, 表2.列名 FROM 表1 INNER JOIN 表2 ON 表1.共同列 = 表2.共同列;
3.外连接查询:全面涵盖数据,除匹配项外,LEFT、RIGHT、FULL OUTER JOIN分别确保左、右表或双侧不匹配数据完整保留。SELECT 表1.列名, 表2.列名 FROM 表1 LEFT JOIN 表2 ON 表1.共同列 = 表2.共同列;
SELECT 表1.列名, 表2.列名 FROM 表1 RIGHT JOIN 表2 ON 表1.共同列 = 表2.共同列;
SELECT 表1.列名, 表2.列名 FROM 表1 FULL OUTER JOIN 表2 ON 表1.共同列 = 表2.共同列;
(三)查询子句:结果优化的魔法棒SELECT * FROM 表名 ORDER BY 列名 ASC; -- 升序
SELECT * FROM 表名 ORDER BY 列名 DESC; -- 降序
2.分组子句:GROUP BY按列值分组数据,结合聚合函数汇总统计。SELECT 列名, COUNT(*) AS 计数 FROM 表名 GROUP BY 列名;
3.HAVING子句:为分组结果设筛选门槛,与WHERE互补,WHERE过滤行,HAVING甄别组,精准聚焦核心分组数据。SELECT 列名, COUNT(*) AS 计数 FROM 表名 GROUP BY 列名 HAVING COUNT(*) > 值;
4.TOP子句:大数据表中,TOP子句迅速提取前N条或前N%记录,优化查询性能。SELECT TOP N * FROM 表名 ORDER BY 列名 DESC;
SELECT TOP (N%) * FROM 表名 ORDER BY 列名 DESC;
(四)子查询:嵌套智慧的力量SELECT * FROM 表名 WHERE 列名 IN (SELECT 列名 FROM 表名 WHERE 条件);
2.使用ANY、SOME、ALL关键字的子查询:与比较运算符协作,定义子查询结果与外部值关系。SELECT * FROM 表名 WHERE 列名 > ANY (SELECT 列名 FROM 表名 WHERE 条件);
SELECT * FROM 表名 WHERE 列名 > ALL (SELECT 列名 FROM 表名 WHERE 条件);
3.使用EXISTS关键字的子查询:专注逻辑判断,子查询结果为空或非空决定返回真值或假值。SELECT * FROM 表名 WHERE EXISTS (SELECT 1 FROM 表名 WHERE 条件);
三、操作功能:数据管理的基石(一)插入表数据:丰富数据宝库
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
2.查询插入:从源表依条件筛选数据,无缝导入目标表。INSERT INTO 表名 (列1, 列2, ...) SELECT 列1, 列2, ... FROM 源表 WHERE 条件;
(二)修改表数据:精准雕琢数据UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2, ... WHERE 条件;
(三)删除表数据:数据清理的利刃DELETE FROM 表名 WHERE 条件;
四、高级操作与查询(一)视图
CREATE VIEW 视图名 AS SELECT 列1, 列2, ... FROM 表名 WHERE 条件;
(二)索引CREATE INDEX 索引名 ON 表名 (列名);
(三)存储过程CREATE PROCEDURE 存储过程名 (参数列表)
BEGIN
-- SQL语句
END;
五、实践案例SELECT employee_name, email, phone_num, hire_date, salary
FROM employee
WHERE salary > 20000;
2.查询员工信息及所属部门名称(员工表与部门表内连接):SELECT d.department_name, e.employee_name, e.email, e.phone_num, e.hire_date, e.salary
FROM employee e
INNER JOIN department d ON e.department_id = d.department_id;
3.查询每个部门的员工数量(分组查询):SELECT department_id, COUNT(*) AS employee_count
FROM employee
GROUP BY department_id;
4.查询工资最高的员工信息(子查询):SELECT *
FROM employee
WHERE salary = (SELECT MAX(salary) FROM employee);
5.插入新员工信息:INSERT INTO employee (employee_name, email, phone_num, hire_date, salary)
VALUES ('张三', '[email protected]', '1234567890', '2023-01-01', 25000);
6.更新员工工资:UPDATE employee
SET salary = 28000
WHERE employee_name = '张三';
DELETE FROM employee
WHERE employee_name = '张三';