首页 > 数据库 >SQL基础总结(二):SQL基础

SQL基础总结(二):SQL基础

时间:2023-09-14 14:08:42浏览次数:31  
标签:总结 字符 基础 CHARACTER BLOB Unicode SQL 标识符


本系列blog源自前年写的SQL学习笔记,汇总一下发上来。

--------------------------------------------------------------- 

标识符是可以在数据库对象(任何create语句所创建的内容)层次中明确的引用一个对象的名称。

 

标准的SQL区分保留关键字和非保留关键字。

不可以用保留关键字作为标识符,如不能将表命名为select,将列命名为sum。

非保留关键字大多数是内置的表和函数名称,也绝不要使用它们作为标识符。

 

可以使用带双引号的标识符,也称为分隔标识符,来打破某些SQL的标识符规则。带双引号的标识符可能干扰其它程序员,因此不建议使用。

 

数据类型

字符串类型

CHARACTER:同CHAR。表示固定个数的字符。当CHARACTER(length)列中存储比length短的字符串时,用空格填充字符串的末尾。

CHARACTER VARYING:同VARCHAR。表示可变字数的字符。CHARACTER VARYING(length)中存储一个比length短的字符串时,直接存储而无需空格填充。

NATIONAL CHARACTER:同NCHAR。可以保存标准的多字节字符或Unicode字符。NCHAR除了在第一个引号以前有一个N以外和CHAR一样。如N’Unicode字符串’。

NATIONAL CHARACTER VARYING:同NCHAR VARYING。可以保存标准的多字节字符或Unicode字符。

CLOB:同CHARACTER  LARGE  OBJECT。用于保存巨大数量的文本。

NCLOB:国家字符大型对象。可以保存标准的多字节字符或Unicode字符。

 

Unicode编码:统一字符编码标准。编码决定了数字值对字符的映射。

标准美国英语使用ACSII编码。它给出128(2的7次方)个不同的字符指派值。

Unicode单一字符集合,表示世界上几乎所有的书写语言字符。可编码多达2的32次方个字符(使用UTF-32编码)。

 

两个连续的单引号表示字符串里的一个单引号。双引号字符是一个单独的字符,无需这样的处理。

 

二进制大型对象类型:同BLOB LARGE OBJECT。

和存储长字符串的CLOB不同,BLOB存储长的字节序列。

BLOB不能被用作关键字或索引。

BLOB只能进行等于=或者不等于<>的比较。而且也不能将BLOB在DISTINCT、GROUP BY、ORDER BY中使用。

数据库不会解析BLOB,它的含义由应用程序来决定。二进制串字面量以十六进制格式给出。在SQL中,十六进制数在它的第一个引号前有一个X,并且不能插入空格。例如X’4B’对应于01001011。

 

精确数字类型

精度:表示数字中有效数字的个数,它是小数点右侧和左侧全部数字的总个数。

NUMERIC:精确的精度,小数位数是0到精度之间的一个值。如果小数位数省略,默认值是0。

DECIMAL:类似于NUMERIC。DBMS可以选择大于DECIMAL中定义的精度。因此精度定义了最小精度,而不是像在NUMERIC中精确的精度。

INTEGER:同INT。表示一个整数。

SMALLINT:依赖于DBMS的一个更小范围的值。

BIGINT:依赖于DBMS的一个更大范围的值。

 

只包含整数的运算要比包含小数和浮点数的运算快得多。

 

近似数字类型:

FLOAT:表示浮点数字。

REAL:实数,单精度数字。没有参数。

DOUBLE:双精度。精度大于REAL,没有参数。

 

布尔类型:

BOOLEAN:字面量为TRUE、FALSE、UNKNOWN。空值等价于UNKNOWN真值,通常被用于替代UNKNOWN。

 

日期时间类型:

DATE:日期。格式:yyyy-mm-dd。

TIME:时间。hh:mm:ss。

TIMESTAMP:日期和时间的组合。

Datetime类型字面量是datetime类型名,后面跟着空格,再跟着一个被单引号环绕的datetime值。如:DATE ‘2011-1-10’ , TIME ’19:31:00’,TIMESTAMP ‘2011-1-10 19:31:00’.在DB2中省略了日期和时间字面量的数据类型名前缀。

 

时间间隔类型:Oracle支持。

 

唯一标识符:IDENTITY。

标签:总结,字符,基础,CHARACTER,BLOB,Unicode,SQL,标识符
From: https://blog.51cto.com/u_6978506/7469649

相关文章

  • SQL基础总结(三):从表中检索数据
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。---------------------------------------------------------------使用DISTINCT消除重复的行。虽然空值是未知的,但彼此绝不相等,但DISTINCT认为空值是彼此相等的。对于DISTINCT操作,DBMS执行内部排序去识别并消除重复的行。排序......
  • mysql事务回滚
    前几天发现程序有个Bug:使用JPA已经设置了回滚,但抛出异常后,提交的事务并没有回滚。刚开始以为是JPA使用问题,debug了近2个多小时竟然找不到原因。后来上网查了一下,才发现不是程序问题(坑爹啊,看来自己对mysql还是不熟),是数据库表问题(JPA自动建表)。原因如下:mysql建表时如果指定ENG......
  • SQL基础总结(四):操作符和函数
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------派生列是一个计算结果。派生列不会成为表中的永久列,他们用于显示或者报表目的。 包含空值的任何算数运算的......
  • SQL基础总结(六):联结
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------限定名称是一个表名后跟一个点号和表中的列名。限定名称可以在整个数据库中唯一的标识出某个列。如:table.colu......
  • SQL基础总结(七):子查询
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------不要在子查询中使用ORDERBY子句,子查询返回的中间结果是看不到的,对子查询排序没有意义。子查询是单个SELECT......
  • SQL基础总结(五):汇总和分组数据
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)-------------------------只对单个值进行操作的是标量函数。对一组值进行操作以产生一个汇总值的是SQL聚合函数或集合函数。可以对行的集合进行......
  • SQL基础总结(十一):视图
      本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------除了ORDERBY子句通常是被禁止的,几乎所有有效的SELECT语句都可以定义视图。可以嵌套视图,视图的SELECT语句......
  • SQL基础总结(九):插入更新删除行及创建更新删除表
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------插入更新删除行 使用INSERT插入行INSERTINTOtableVALUES(value1,value2,value3…);INSERTINTOtable(col......
  • SQL基础总结(八):集合操作
    本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------使用UNION合并行UNION操作将两个查询返回的结果合并成一个结果。UNION从结果中去掉重复的行,UNIONALL不去掉重......
  • SQL基础总结(十):索引
      本系列blog源自前年写的SQL学习笔记,汇总一下发上来。(1月份发了前三篇笔记,原以为后面的笔记误操作删了,今天在硬盘里又找到了,一起发上来)--------------------------------对于以下列创建索引是恰当的,这些列经常被:查询、排序、分组、联结、用来计算顺序统计(MIN、MAX或中值)。对于......