SQL中数据类型有哪些?

SQL中数据类型有哪些?,第1张

int 整型 int 数据类型可以存储从- 231(-2147483648)到231 (2147483 647)之间的整数。存储到数据库的几乎所有数值型的数据都可以用这种数据类型。这种数据类型在数据库里占用4个字节
tinyint 整型 tinyint 数据类型能存储从0到255 之间的整数。它在你只打算存储有限数目的数值时很有用。 这种数据类型在数据库中占用1 个字节
float 近似数值型 float 数据类型是一种近似数值类型,供浮点数使用。说浮点数是近似的,是因为在其范围内不是所有的数都能精确表示。浮点数可以是从-179E+308到179E+308 之间的任意数
bit 整型 bit 数据类型是整型,其值只能是0、1或空值。这种数据类型用于存储只有两种可能值的数据,如Yes 或No、True 或Fa lse 、On 或Off
char 字符型 char数据类型用来存储指定长度的定长非统一编码型的数据。当定义一列为此类型时,你必须指定列长。当你总能知道要存储的数据的长度时,此数据类型很有用。例如,当你按邮政编码加4个字符格式来存储数据时,你知道总要用到10个字符。此数据类型的列宽最大为8000 个字符
varchar 字符型 varchar数据类型,同char类型一样,用来存储非统一编码型字符数据。与char 型不一样,此数据类型为变长。当定义一列为该数据类型时,你要指定该列的最大长度。 它与char数据类型最大的区别是,存储的长度不是列长,而是数据的长度
nchar 统一编码字符型 nchar 数据类型用来存储定长统一编码字符型数据。统一编码用双字节结构来存储每个字符,而不是用单字节(普通文本中的情况)。它允许大量的扩展字符。此数据类型能存储4000种字符,使用的字节空间上增加了一倍
nvarchar 统一编码字符型 nvarchar 数据类型用作变长的统一编码字符型数据。此数据类型能存储4000种字符,使用的字节空间增加了一倍
text 字符型 text 数据类型用来存储大量的非统一编码型字符数据。这种数据类型最多可以有231-1或20亿个字符
datetime 日期时间型 datetime数据类型用来表示日期和时间。这种数据类型存储从1753年1月1日到9999年12月3 1日间所有的日期和时间数据, 精确到三百分之一秒或333毫秒
Smalldatetime 日期时间型 smalldatetime 数据类型用来表示从1900年1月1日到2079年6月6日间的日期和时间,精确到一分钟
image 二进制数据类型 image 数据类型用来存储变长的二进制数据,最大可达231-1或大约20亿字节
基本查询
select column1,columns2,
from table_name
说明:把table_name 的特定栏位资料全部列出来
select
from table_name
where column1 =
[and column2 > yyy] [or column3 <> zzz]
说明:
1''表示全部的栏位都列出来。
2where 之后是接条件式,把符合条件的资料列出来。
select column1,column2
from table_name
order by column2 [desc]
说明:order by 是指定以某个栏位做排序,[desc]是指从大到小排列,若没有指明,则是从小到大
排列
组合查询
组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的
表格才能够得到结果的。
select
from table1,table2
where table1colum1=table2column1
说明:
1查询两个表格中其中 column1 值相同的资料。
2当然两个表格相互比较的栏位,其资料形态必须相同。
3一个复杂的查询其动用到的表格可能会很多个。
整合性的查询:
select count ()
from table_name
where column_name =
说明:
查询符合条件的资料共有几笔。
select sum(column1)
from table_name
说明:
1计算出总和,所选的栏位必须是可数的数字形态。
2除此以外还有 avg() 是计算平均、max()、min()计算最大最小值的整合性查询。
select column1,avg(column2)
from table_name
group by column1
having avg(column2) >
说明:
1group by: 以column1 为一组计算 column2 的平均值必须和 avg、sum等整合性查询的关键字
一起使用。
2having : 必须和 group by 一起使用作为整合性的限制。
复合性的查询
select
from table_name1
where exists (
select <BR>from table_name2
where conditions )
说明:
1where 的 conditions 可以是另外一个的 query。
2exists 在此是指存在与否。
select
from table_name1
where column1 in (
select column1
from table_name2
where conditions )
说明:
1 in 后面接的是一个集合,表示column1 存在集合里面。
2 select 出来的资料形态必须符合 column1。
其他查询
select
from table_name1
where column1 like 'x%'
说明:like 必须和后面的'x%' 相呼应表示以 x为开头的字串。
select
from table_name1
where column1 in ('','yyy',)
说明:in 后面接的是一个集合,表示column1 存在集合里面。
select
from table_name1
where column1 between xx and yy
说明:between 表示 column1 的值介於 xx 和 yy 之间。
3、更改资料:
update table_name
set column1=''
where conditoins
说明:
1更改某个栏位设定其值为''。
2conditions 是所要符合的条件、若没有 where 则整个 table 的那个栏位都会全部被更改。
4、删除资料:
delete from table_name
where conditions
说明:删除符合条件的资料。
说明:关于where条件后面如果包含有日期的比较,不同数据库有不同的表达式。具体如下:
(1)如果是access数据库,则为:where mydate>#2000-01-01#
(2)如果是oracle数据库,则为:where mydate>cast('2000-01-01' as date)
或:where mydate>to_date('2000-01-01','yyyy-mm-dd')
在delphi中写成:
thedate='2000-01-01';
query1sqladd('select from abc where mydate>cast('+''''+thedate+''''+' as date)');
如果比较日期时间型,则为:
where mydatetime>to_date('2000-01-01 10:00:01','yyyy-mm-dd hh24:mi:ss')
4、增加资料:
insert into table_name (column1,column2,)
values ( value1,value2, )
说明:
1若没有指定column 系统则会按表格内的栏位顺序填入资料。
2栏位的资料形态和所填入的资料必须吻合。
3table_name 也可以是景观 view_name。
insert into table_name (column1,column2,)
select columnx,columny, from another_table
说明:也可以经过一个子查询(subquery)把别的表格的资料填入。

整数
bigint
从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。
int
从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。
smallint
从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整数数据。
tinyint
从 0 到 255 的整数数据。
bit
bit
1 或 0 的整数数据。
decimal 和 numeric
decimal
从 -10^38 +1 到 10^38 –1 的固定精度和小数位的数字数据。
numeric
功能上等同于 decimal。
money 和 smallmoney
money
货币数据值介于 -2^63 (-922,337,203,685,4775808) 与 2^63 - 1 (+922,337,203,685,4775807) 之间,精确到货币单位的千分之十。
smallmoney
货币数据值介于 -214,7483648 与 +214,7483647 之间,精确到货币单位的千分之十。
近似数字
float
从 -179E + 308 到 179E + 308 的浮点精度数字。
real
从 -340E + 38 到 340E + 38 的浮点精度数字。
datetime 和 smalldatetime
datetime
从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确到百分之三秒(或 333 毫秒)。
smalldatetime
从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,精确到分钟。
字符串
char
固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
varchar
可变长度的非 Unicode 数据,最长为 8,000 个字符。
text
可变长度的非 Unicode 数据,最大长度为 2^31 - 1 (2,147,483,647) 个字符。
Unicode 字符串
nchar
固定长度的 Unicode 数据,最大长度为 4,000 个字符。
nvarchar
可变长度 Unicode 数据,其最大长度为 4,000 字符。sysname 是系统提供用户定义的数据类型,在功能上等同于 nvarchar(128),用于引用数据库对象名。
ntext
可变长度 Unicode 数据,其最大长度为 2^30 - 1 (1,073,741,823) 个字符。
二进制字符串
binary
固定长度的二进制数据,其最大长度为 8,000 个字节。
varbinary
可变长度的二进制数据,其最大长度为 8,000 个字节。
image
可变长度的二进制数据,其最大长度为 2^31 - 1 (2,147,483,647) 个字节。
其它数据类型
cursor
游标的引用。
sql_variant
一种存储 SQL Server 支持的各种数据类型(text、ntext、timestamp 和 sql_variant 除外)值的数据类型。
table
一种特殊的数据类型,存储供以后处理的结果集。
timestamp
数据库范围的唯一数字,每次更新行时也进行更新。
uniqueidentifier
全局唯一标识符 (GUID)。
你可以查看sql server 帮助,获取更为详细的帮助!

SQL92标准定义了若干种基本数据类型,它们是SQL数据库中各种数据类型的基础。在《字符串数据类型》一文中,我们已经详细讨论了SQL92标准所定义的字符串数据类型。现在,我们来进一步讨论数值数据类型。
你开始尝试使用不同数据库实现方法并在它们传递数据,这样可以加深你对数值数据类型的理解。本文将给你一个数值数据类型的概要,你可以结合你的数据库的文档资料来学习。
在字符串、数值、datetime和interval这四种数据类型中,数值型的种类最多,约束也最多。在不同数据库实现方法之间交换数据时,数值型的精度也最容易降低。Oracle和SQL服务器之间的实现分歧(同样的数据类型长度不同)导致它们之间的数据传递过程会截短数字、改变它们的数值。因此,在移植程序前,你有必须很明确的了解两个平台间的数据定义差异,以及危及数据精度的风险。

谨记上述警告后,让我们看看SQL92标准的数值类型

基本数值类型
与数值有关的类型统称为数值类型。所有的数值都有精度,精度指的是有效数字位数。有的数值还有标度值(scale value),它用来指示小数点右边的最小有效数字位数。例如,数字123456的精度为6,标度值为2,可以定义为NUMERIC(6,2)。

每一个数据库实现方法都有关于如何近似数值或者截短数值的规则。除了提供获取数值长度和其它数值处理所需的属性外,SQL92提供了内建函数,如加、减、乘、除等。所有的数值类型之间都可以互相比较、互相赋值。尽管实现方法不同,但是它们有一个的共同点,即它们的结果一般都保留精度。

NUMERIC

用法:NUMERIC(精度,标度值)

是一种精确数值类型,即它是数字的值的文字表示。(可以对该数字进行取舍或者截取以符合指定精度,标度值由预定义的规则确定。)
为了符合标度值指定的小数数字位数,舍去多余的小数部分,舍入过程采用十进制。
数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1。
小数部分的位数要符合标度值。
DECIMAL | DEC
用法:DECIMAL(精度,标度值) | DEC(精度,标度值)

是一种精确数值类型。
用十进制。
数字的总长度等于精度,如果标度值大于0(有小数部分),则长度加1。
小数部分的位数不得小于标度值,小数位数的上限由数据库提供商设定。

INTEGER | INT
用法: INTEGER(精度)

是一种精确数值类型。
使用二进制或者十进制,这基于表示该数值的二进制位(bit)的个数(这是implementation-specific,与SMALLINT对应)。
标度值恒为0。
数据库供应商对其定义了精度和最小精度。
供应商可能会提供的默认精度。
SMALLINT
用法:SMALLINT(精度)

是一种精确数值类型。
位数取舍方法与INTEGER (二进制或者十进制)相同。
标度值恒为0。
精度等于或者小于INTEGER的精度。

查找表中列是否存在缺省约束:
select from sysobjects where name='DF_表名_列名'
删除约束
alter table 表名 drop constraint 约束名
查询表中某列类型:
select type_name(xtype) from syscolumns where id=object_id('表名') and name='列名'

用SQL语句查询一个数据表所有字段的类型可以参考下面的代码:

SELECT

name AS column_name,TYPE_NAME(system_type_id) AS column_type,

max_length,is_nullable

FROM syscolumns

WHERE object_id=OBJECT_ID(N'Address')

扩展资料:

SQL语句

创建索引:create [unique] index idxname on tabname(col…。)

增加列:Alter table table_name add column_name column_type [default 默认值]--在表中增加一列,[]内的内容为可选项

删除索引:drop index idxname on tabname

参考资料来源:百度百科-结构化查询语言


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12956683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存