最近项目需要用到部分有关存储过程的知识,说实话,关于数据库的知识在任何时候都是很有必要的,程序无非是功能和数据的组合,而如何操作数据,必然少不了SQL,所以从今天起,我会简单的记录一下关于SQL相关的基本知识,目前就放在SQL学堂下面吧。
和其他语言一样,SQL也可以使用函数来处理数据。但是,对于不同的DBMS,尽管他们对几乎所有函数类型都支持,但是不同的DBMS的不同类型的函数展现和使用是有很大区别的,往往是使用频率越高的函数各个DBMS支持的一致性越差。反之亦然。
1,函数差异示例
函数 | 语法 |
提取字符串 | Acceses使用MID(),DB2,Oracle,PostgreSQL,SQLite使用SUBSTR(),MySQL和SQLServer使用SUBSTRING() |
数据类型转换 | DB2和PostgreSQL使用CAST(),MySQL和SQL Server使用CONVERT(),Accese和Oracle使用多个函数 |
提取当前日期 | Accese使用NOW(),DB2和PostgreSQL使用CURRENT_DATE,MySQL使用CURDATE(),Oracle使用SYSDATE(),SQLite使用DATE(),SQL Server使用GETDATE() |
由上面的几个简单示例可以看出,各个DBMS对不同的函数类型基本上都是支持的,但是实现的方式区别还是很大的,具体需要参考对应DBMS的操作文档。考虑到代码的可移植性,许多人不建议在SQL中使用函数来处理数据;这个决定权在你自己。
2,简单使用示例
(1)文本处理类函数
UPPER()
select name UPPER(name) AS UPname
from 表名;
查看表中name对应的那一列的数据,并把查询的数据全部转为大写字母在UPname那一列展示出来;使用很简单
常用文本数据处理函数列表:
函数 | 说明 |
LEFT() | 返回字符串左边字符 |
RIGHT() | 返回字符串右边字符 |
LOWER(),Accses使用LCASE() | 字符串字符全部转为小写 |
UPPER(),Accese使用UCASE() | 字符串字符全部转为大写 |
LENGTH() | 返回字符串长度 |
TRIM() | 去除字符串两边空格 |
LTRIM() | 去除字符串左边空格 |
RTRIM() | 去除字符串右边空格 |
(2)日期和时间处理函数
对于每一种DBMS存储日期和时间的格式都有自己的独特形式,以便可以快速有效的过滤,还可以节省空间。然而应用程序肯定不能直接使用这种形式的数据,所以这个时候就需要相应的函数来处理;这类函数的使用频率很高,还是那句话,不同的DBMS对此类函数支持的一致性很差。所以这一块还是结合具体的DBMS的操作指导来实践,各个DBMS差别是在太大。
(3)数值处理函数
这部分使用的相对较少,然而,各个DBMS对这类函数支持的一致性最好,哈哈哈;下面给出最常用的数值处理函数列表:
函数 | 说明 |
ABS() | 返回一个数值的绝对值 |
COS() | 返回一个数值的余弦值 |
SIN() | 返回一个数值的正弦值 |
TAN() | 返回一个数值的正切值 |
PI() | 返回一个圆周率 |
EXP() | 返回一个数值的指数值 |
SQRT() | 返回一个数值的平方根 |