SQL格式化-格式选项在SQL
当将数据转换为数据的某个版本时,就会出现SQL格式,该版本的显示方式在视觉上更吸引人,并且/或数据库管理系统更有效地使用该版本。可以对文本、数字和其他字符进行格式化,以便以更统一或更结构化的格式显示它们。在SQL中,可以使用Format函数、to_char (Access中的CStr)函数和to_date (Access中的CDate)函数等函数格式化值。Format函数的常见应用程序涉及使用货币和日期格式的值。格式化可以是显式的,也可以是隐式的;如果你想显式地应用一种格式,那么你应该直接应用一种改变格式的方法(例如,通过一个函数)以及选择的格式类型。虽然数据类型的格式化可能涉及解析、翻译和转换等过程;当一个人在编写代码的同时使用一种使代码更容易阅读的方法时,就可以进行格式化。
数据类型
在Oracle中,货币值的数据类型可能是Number,而在Access中,货币值的数据类型可能是Money或currency。MySQL中可能用于货币值的数据类型包括Decimal数据类型。在本文中,我可能更多地关注于SQL for Oracle;但是,如果您还想练习使用其他数据库选项,如Microsoft SQL Server,那么您可能会发现一个Udemy类会感兴趣.在Oracle中,日期的默认格式是dd-mon-yy (day-month-year)日期格式。为了演示如何为日期值应用不同的格式,Select语句将与下表的格式化选项一起使用:
EMPLOYEE_ID | EMPLOYEE_FIRST | EMPLOYEE_LAST | HIRE_DATE |
123 | 布莱德 | 福斯特 | 01 - 1月- 2012 |
124 | 凯拉 | 惠勒 | 01 - 1月- 2012 |
125 | Ruby | 韦弗 | 01 - 1月- 2014 |
126 | 李 | 黄 | 2012年5月- 01 - |
127 | 媚兰 | 科比 | 01 - 1月- 2012 |
128 | 卡罗 | 埃里克森 | 01 - 1月- 2012 |
129 | 弗朗西斯 | 皮尔森 | 2012年5月- 01 - |
130 | 泰勒 | 科恩 | 01 - 1月- 2012 |
131 | 周杰伦 | 韦伯 | 01 - 1月- 2012 |
132 | 路易 | 英格拉姆 | 01 - 1月- 2014 |
133 | 谢尔登 | 交叉 | 01 - 1月- 2012 |
134 | 莎莉 | 莱利 | 01 - 1月- 2014 |
135 | Maryanne | 水域 | 01 - 1月- 2012 |
136 | 布莱克 | 曼宁 | 2012年5月- 01 - |
SELECT Employee_Id, Employee_First, Employee_Last, TO_CHAR(Hire_Date, ' MM-DD-YYYY HH:MI AM ') AS Formatted_Date FROM Employee_Tbl;
EMPLOYEE_ID |
EMPLOYEE_FIRST |
EMPLOYEE_LAST |
HIRE_DATE |
FORMATTED_DATE |
123 |
布莱德 |
福斯特 |
01 - 1月- 2012 |
中午12:00点01-01-2012 |
124 |
凯拉 |
惠勒 |
01 - 1月- 2012 |
01-01-2012上午12:00 |
125 |
Ruby |
韦弗 |
01 - 1月- 2014 |
01-01-2014上午12:00 |
126 |
李 |
黄 |
2012年5月- 01 - |
05-01-2012上午12:00 |
127 |
媚兰 |
科比 |
01 - 1月- 2012 |
01-01-2012上午12:00 |
128 |
卡罗 |
埃里克森 |
01 - 1月- 2012 |
01-01-2012上午12:00 |
129 |
弗朗西斯 |
皮尔森 |
2012年5月- 01 - |
05-01-2012上午12:00 |
130 |
泰勒 |
科恩 |
01 - 1月- 2012 |
01-01-2012上午12:00 |
131 |
周杰伦 |
韦伯 |
01 - 1月- 2012 |
01-01-2012上午12:00 |
132 |
路易 |
英格拉姆 |
01 - 1月- 2014 |
01-01-2014上午12:00 |
133 |
谢尔登 |
交叉 |
01 - 1月- 2012 |
01-01-2012上午12:00 |
134 |
莎莉 |
莱利 |
01 - 1月- 2014 |
01-01-2014上午12:00 |
135 |
Maryanne |
水域 |
01 - 1月- 2012 |
01-01-2012上午12:00 |
136 |
布莱克 |
曼宁 |
2012年5月- 01 - |
05-01-2012上午12:00 |
注意,Formatted_Date列值的时间部分显示为“12:00 AM”;在Oracle and Access中,默认时间设置为午夜。在下面的例子中,你将看到to_date函数在Insert语句中使用的演示:
初始表(用于图书馆记录已借图书):
ACCOUNT_ID | BOOK_TITLE | CHECKOUT_DATE | CHECKIN_DATE |
87563 | 生物学 | 15 - 5 - 2014 | 30 - 5 - 2014 |
62841 | 文学:袖珍文集 | 2014年5月- 01 - | 2014年5月- 20 - |
56422 | 皮特猫 | 2014年5月- 06 - | 12 - 5月- 2014 |
68442 | 足球在星期天 | 05 - 5 - 2014 | 12 - 5月- 2014 |
63587 | 地球科学 | 2014年5月- 01 - | 30 - 5 - 2014 |
62012 | 软件的抽象 | 12 - 5月- 2014 | 29日- 5月- 2014年 |
22745 | 设计:关键概念 | 15 - 5 - 2014 | 30 - 5 - 2014 |
43288 | 编程的介绍 | 26 - 5 - 2014 | 30 - 5 - 2014 |
在这种情况下,当一本书签入时使用Insert语句(在Oracle SQL中);sysdate用于Checkin_Date列的新值,因为它将检索当前日期和时间。
INSERT INTO Library_Tbl VALUES (000068527, ' The Power of Now ', TO_DATE (' 05-30-2014 09:30 AM ', ' MM- dd - yyyy HH:MM AM '), sysdate);
68527 | 当下的力量 | 30 - 5 - 2014 | 03 - jun - 2014 |
请注意,虽然to_date函数的时间部分已经添加,但是时间并没有在输出中与日期一起显示。当使用to_date函数时,时间仍然存储在表中;但是,您必须显式地检索数据。您可以在Udemy上找到一些有用的教程,它们涵盖了一些概念,比如隐式转换和显式转换。
格式和Where子句
需要注意的一个因素是,当Select语句与Where子句一起使用时,即使列的值显示美元符号,也不应该在Select语句中使用美元符号。Select语句用于在包含货币值的列中选择特定值的示例如下:
表:
段 | 描述 | 价格 |
1 | 热带破裂 | 3.00美元 |
2 | 花生蛋白 | 4.00美元 |
3. | Java杏仁 | 4.00美元 |
4 | 非常浆果 | 3.00美元 |
5 | 苹果园 | 3.00美元 |
SELECT * FROM Smoothie_Tbl WHERE价格< 4.00;
段 | 描述 | 价格 |
1 | 热带破裂 | 3.00美元 |
4 | 非常浆果 | 3.00美元 |
5 | 苹果园 | 3.00美元 |
注意,当Where子句用于搜索包含Price列的值小于4.00的所有列时,美元符号被省略了。
可读性
一个人可以应用个人标准,或者组可以采用统一的标准,以使用提高代码可读性的格式。当您回顾以前编写的代码时,使用标记来帮助您回忆为什么添加了每一行代码可能会很有帮助。此外,如果不是代码作者的人阅读了预先编写的代码,这可能有助于他们理解代码的目的,并能够轻松地阅读代码。如果代码是用一种不容易阅读的格式编写的,它可能仍然会产生预期的结果,但是在程序更新等情况下,它可能需要花费更多的时间来解释代码。编写代码时使用的一些格式化技术如下:
- 避免将所有代码放在一行或包装代码段
- 添加注释,以便为代码行的基础和目的提供详细信息
- SQL关键字使用大写字母
- 适当缩进(例如使用嵌套语句时)
报告
格式化选项也可以用于报告。有些情况下,报表包含准确的数据,但报表的格式并不理想。例如;假设前面使用的Library_Tbl表包含了为同一个帐号外借的多个图书实例。与所有实例连同重复的帐号一起显示相反,格式化选项如SQL *PLUS Break命令可以使用如下:
打破ACCOUNT_ID;
Library_Tbl通过使用Break命令,输出仍将包括所有表数据的同一帐号下图书外借,但会有空地Account_Id列(在初始帐号的实例),重复的帐号会被显示出来。
总结
每个SQL版本都有大量可用的格式化选项。本文包含了一些格式化选项;如果你有兴趣发现更多的格式选项,那么我想建议Udemy教程.格式化选项可以改善表格的布局,代码的一般可读性,以及报表的格式。在对数据库执行查询和更新等操作时,确认表中使用的格式也很重要。