`
pengyeer
  • 浏览: 33838 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

SQL虚拟表应用三例

 
阅读更多
SQL虚拟表应用三例
 
SQL虚拟表是一种通过SELECT语句查询常量表达式形成的一个结果集,和数据库的视图、物理表、临时表都差不多。一旦这个虚拟表构造出来,就可以当作实际的表来查询。
 
环境:
Windows XP Professional 简体中文版
mysql-5.0.45-win32
 
应用三例:
 
1、求数字对会计大写的对应表。
SELECT *
  FROM (SELECT 0 AS CODE, '零' AS NAME
        UNION
        SELECT 1, '壹'
        UNION
        SELECT 2, '贰'
        UNION
        SELECT 3, '叁'
        UNION
        SELECT 4, '肆'
        UNION
        SELECT 5, '伍'
        UNION
        SELECT 6, '陆'
        UNION
        SELECT 7, '柒'
        UNION
        SELECT 8, '捌'
        UNION
        SELECT 9, '玖'
        UNION
        SELECT 10, '拾') AS RMBDX
 ORDER BY CODE ASC;
 
查询结果:
CODE    NAME
--------------
0       零
1       壹
2       贰
3       叁
4       肆
5       伍
6       陆
7       柒
8       捌
9       玖
10      拾
 
 
2、产生0~999之间的数字。
SELECT CAST(CONCAT(CONCAT(N1, N2), N3) AS UNSIGNED INTEGER) AS NUMS
  FROM (SELECT '0' AS N1
        UNION
        SELECT '1'
        UNION
        SELECT '2'
        UNION
        SELECT '3'
        UNION
        SELECT '4'
        UNION
        SELECT '5'
        UNION
        SELECT '6'
        UNION
        SELECT '7'
        UNION
        SELECT '8'
        UNION
        SELECT '9') AS NUM1,
       (SELECT '0' AS N2
        UNION
        SELECT '1'
        UNION
        SELECT '2'
        UNION
        SELECT '3'
        UNION
        SELECT '4'
        UNION
        SELECT '5'
        UNION
        SELECT '6'
        UNION
        SELECT '7'
        UNION
        SELECT '8'
        UNION
        SELECT '9') AS NUM2,
       (SELECT '0' AS N3
        UNION
        SELECT '1'
        UNION
        SELECT '2'
        UNION
        SELECT '3'
        UNION
        SELECT '4'
        UNION
        SELECT '5'
        UNION
        SELECT '6'
        UNION
        SELECT '7'
        UNION
        SELECT '8'
        UNION
        SELECT '9') AS NUM3
 ORDER BY NUMS ASC;
 
查询结果:
NUMS
---------
0
1
2
3
4
...
998
999
 
 
 
3、求0~999之间整数的二次方根(平方根)。
 SELECT NUMS AS SQUARE, ROUND(SQRT(NUMS)) AS BASIS
  FROM (SELECT CAST(CONCAT(CONCAT(N1, N2), N3) AS UNSIGNED INTEGER) AS NUMS
          FROM (SELECT '0' AS N1
                UNION
                SELECT '1'
                UNION
                SELECT '2'
                UNION
                SELECT '3'
                UNION
                SELECT '4'
                UNION
                SELECT '5'
                UNION
                SELECT '6'
                UNION
                SELECT '7'
                UNION
                SELECT '8'
                UNION
                SELECT '9') AS NUM1,
               (SELECT '0' AS N2
                UNION
                SELECT '1'
                UNION
                SELECT '2'
                UNION
                SELECT '3'
                UNION
                SELECT '4'
                UNION
                SELECT '5'
                UNION
                SELECT '6'
                UNION
                SELECT '7'
                UNION
                SELECT '8'
                UNION
                SELECT '9') AS NUM2,
               (SELECT '0' AS N3
                UNION
                SELECT '1'
                UNION
                SELECT '2'
                UNION
                SELECT '3'
                UNION
                SELECT '4'
                UNION
                SELECT '5'
                UNION
                SELECT '6'
                UNION
                SELECT '7'
                UNION
                SELECT '8'
                UNION
                SELECT '9') AS NUM3) AS TMP_TAB
 WHERE SQRT(NUMS) = ROUND(SQRT(NUMS))
 ORDER BY SQUARE ASC;
 
查询结果:
 
SQUARE  BASIS
------------------
0       0
1       1
4       2
9       3
16      4
25      5
36      6
49      7
64      8
81      9
100     10
121     11
144     12
169     13
196     14
225     15
256     16
289     17
324     18
361     19
400     20
441     21
484     22
529     23
576     24
625     25
676     26
729     27
784     28
841     29
900     30
961     31
 
---- 《完》。
分享到:
评论
1 楼 hysoft 2008-04-22  
隐!!!!!!!

相关推荐

    SQL Server 利用触发器对多表视图进行更新的实现方法

    - 当对表进行UPDATE操作时,系统会自动生成两个虚拟表:`inserted`和`deleted`。`inserted`表包含所有新插入或更新后的行,`deleted`表则包含被更新或删除前的旧行。 3. **触发器的创建**: - 使用`CREATE ...

    利用SQLServer触发器实现表跟踪.pdf

    触发器的执行过程中,SQL Server 会维护两个虚拟表,分别是Inserted表和Deleted表。这两个表在触发器被触发时存在,用以存储操作所涉及的数据。具体而言,Deleted表存储的是被DELETE或UPDATE语句影响的行的副本,即...

    SQLserver操作程例

    9. **视图**:视图是虚拟表,基于一个或多个表的查询结果。创建视图`CREATE VIEW EmployeeView AS SELECT Name, Department FROM Employees;`,然后可以像查询普通表一样查询视图。 10. **存储过程**:存储过程是一...

    数据库应用技术:第3章-SQL语言-第4-5节.ppt

    这个虚拟表是由视图定义语句根据特定的映射关系导出的,但不同于实际的基本表,视图本身并不存储任何数据,其数据仍保留在源基本表中。因此,视图被称为“虚表”。视图的主要作用包括: 1. **简化用户操作**:用户...

    例学SQL(帮助文档)

    《例学SQL》帮助文档是为SQL初学者和进阶者设计的一份全面教程,旨在通过实例学习的方式,深入浅出地讲解SQL语言的核心概念、语法和应用技巧。CHM(Compiled HTML Help)格式的文档使得内容易于检索,提高了学习效率...

    SQL例子SQL例子

    - 视图是虚拟表,不存储数据,但提供特定查询结果的便捷访问。例9创建了一个FACULTY视图,例10创建了GRADE_TABLE视图,结合多表提供特定查询结果。 - `DROP VIEW`用于删除视图,例11删除了GRADE_TABLE视图,...

    SQLServer实例语句

    - **创建视图**:例如,`CREATE VIEW FACULTY`创建了一个只包含教师号、姓名和年龄的虚拟表FACULTY。`CREATE VIEW GRADE_TABLE`则创建了一个显示学生姓名、课程名和成绩的视图。 - **删除视图**:如例11,`DROP ...

    例分析—基于SQL Server[电子教案]

    视图是虚拟表,提供数据的不同视图。联接操作允许从多个表中合并数据。理解如何使用视图和联接可以简化复杂查询。 9. **大数据与分析** SQL Server支持大数据处理,如列式存储、数据仓库和OLAP(在线分析处理)...

    SQLServer2000基础教程

    - **创建视图**:基于一个或多个表构建虚拟表。 **4. 存储过程设计** - **编写存储过程**:封装SQL代码块,实现复杂逻辑。 - **执行存储过程**:通过查询分析器调用已创建的存储过程。 **5. 备份与恢复** - **...

    触发器实现sql记录

    #### 三、SQL Server的Inserted和Deleted虚拟表 在SQL Server中,`Inserted`和`Deleted`是两个非常重要的虚拟表,它们用于存储DML(数据操纵语言)操作的结果集。这两个虚拟表只存在于触发器内部,其内容取决于执行...

    利用SQL Server触发器实现表的历史修改痕迹记录

    SQL Server为每个触发器都创建了两个专用虚拟表:inserted表和deleted表。这两个表由系统来维护,他们存在于内存中,而不是在数据库中。这两个表的结构总是与被该触发器作用的表结构相同。触发器执行完成后,与该...

    jeesite sql

    本文将以`bluecrm.sql`为例,深入解析Jeesite中的SQL应用及其在实际业务场景中的运用。 `bluecrm.sql`是一个数据库脚本文件,通常用于初始化Jeesite框架下的BlueCRM(蓝鲸客户关系管理系统)的数据结构。这个文件...

    Visual C#中动态操作SQL Server数据库

    视图则是虚拟表,基于一个或多个表的查询结果。索引用于加速数据检索,可以通过`CREATE INDEX`命令创建。 动态修改表的结构涉及`ALTER TABLE`语句,允许添加、删除或修改列。而读取和显示数据则需要使用`SELECT`...

    Pro Oracle SQL (2010)

    - **视图**:创建虚拟表,以便简化复杂的查询或者隐藏数据的复杂性。 - **函数与过程**:利用内置函数或自定义函数/过程来执行特定任务,如计算或逻辑判断。 - **触发器**:当特定事件发生时自动执行的代码块,常...

    第三章+关系数据库标准语言SQL(1).ppt

    视图是从一个或多个基本表导出的虚拟表,只保存其定义,不存储实际数据,允许用户以更方便的方式查看和操作数据。 以学生-课程数据库为例,它包括以下三个表: - 学生表(Student):Sno(学号)、Sname(姓名)、...

    数据库SQL基础教程(以Mysql为例)

    触发器在特定数据库事件(如INSERT、UPDATE、DELETE)发生时自动执行,视图是基于一个或多个表的虚拟表,提供了一种简化数据访问的方式。 总之,掌握SQL基础并熟悉MySQL数据库的使用,是成为一名合格的数据库管理员...

    sql考证复习资料

    - 视图是从一个或几个基表(或视图)导出的虚拟表。 - 示例:为建工程项目建立一个供应情况的视图`V_SPJ`。 ```sql CREATE VIEW V_SPJ AS SELECT SNO, PNO, QTY FROM SPJ, J WHERE SPJ.JNO = J.JNO AND JNAME...

    一些有用的T_SQL代码

    - **视图(VIEW)**:虚拟表,基于一个或多个表的查询结果。 - **存储过程(Stored Procedure)**:预编译的SQL语句集合,可以包含控制流语句,用于执行复杂的业务逻辑。 这个压缩包中的T-SQL代码涵盖了数据库...

Global site tag (gtag.js) - Google Analytics