数据库笔记五:数据库子句二

--数据库高级子句二
--Select...into Index Auto-increment view Data NULL
---------------------------------------------------------
--select into 
--select into用于从一个表中选取数据然后放入另一个表中,常用来备份表数据
--另一张表是复制时创建的,必须为不存在的表
use TSqlDemo
select * into StudentBck from Student--将Student表中的数据放入StudentBck表中
--我们也可以有选择性的备份数据,只需将*换为我们要备份的列的名称即可
select Name,Age into StudentName from Student --我们备份的表中只有2列
--我们也可以为备份数据加一下儿条件
select Name ,Age into StudentAge from Student where Age>20
--当然也可以从2个表中备份数据
select Student.Name,Score.Math into StudentScore from Score inner join Student on Student.Num=Score.SNum
--在StudentScore表中就会有2列,学生的名称和成绩
-----------------------------------------------------------
--Index
--Index创建索引,索引是为了方便我们查询的效率,用户不会看到
create index num on Student (Num)
--如果希望以降序排列,可以再列的名称之后加desc
create index num on Student (Num desc)
--如果希望在2列上同时创建索引,可以在括号内加入列,用‘,’隔开即可
create index num on Student (Num,Id)
--同样我们也可以用drop来删除索引
drop index num on Student
--当数据的查询量比较大的时候,我们需要建立一个索引,方便数据库执行时的效率
--在小的数据面前是不需要建立索引的
------------------------------------------------------------
--Auto-increment
--Auto-increment用来为列设置自动增长值,我们在插入数据的时候,有时希望生成一个标志列
--自动增长,方便数据库存储数据,以及我们之后的操作
create table persons
(
p_id int primary key identity,
lastname varchar(255) not null,
firstname varchar(255),
address varchar(255),
city varchar(255)
)
--我们创建一张表为他的PID列创建自动增长,这样我们在插入数据的时候就不用插入这一列的值
--会默认为我们添加一个值,这个值是从1开始自动增长的,如果我们删除一条数据,这个自动增长的索引不会删除
--在下一次插入数据的时候,还是会加1
-------------------------------------------------------------
--view 
--view视图,视图是基于查询结果集的可视化的表,我们创建一个视图之后,可以很直观方便的读取数据
--视图中的字段来自于我们查询出的结果集,也就是一个或多个表,我们可以将视图作为一张单独的表
--对它进行操作,任何的子句都不会影响到原来的数据
create view stuview as 
select Student.Name,Score.Math  from Score inner join Student on Student.Num=Score.SNum
--创建视图时在视图名称之后加一个as,as后是我们的查询语句
--可以这么理解,创建作为select...Score.SNum结果集的视图stuview
select * from stuview--接下来我们可以直接查询这个视图
--我们还可以再对这个视图进行操作
select * from stuview where Math>80
--当视图不满足我们的需求时,我们可以修改视图
alter view stuview as
select Student.Name,Score.Math  from Score inner join Student on Student.Num=Score.SNum where Score.Math>80
--同样也可以删除视图
drop view stuview
--------------------------------------------------------------
--data
--当我们在数据库中存储时间时,时间的格式往往是最麻烦的问题,数据库为我们提供了几种生成时间的函数
--getdata:返回当前的时间,我们可以通过为列指定默认值,当我们没插入一行数据的时候,会在时间列自动生成时间
select GETDATE() as NowTime --2011-09-09 11:01:01.427
--datepart(datepart,date),用于返回时间的单独部分,datepart指定返回时间的那部分,date是指从那里返回
select DATEPART(q,getdate())
--年            yy, yyyy 
--季度          qq, q 
--月            mm, m 
--年中的日      dy, y     指这是一年中的第几天
--日            dd, d 
--周            wk, ww 
--星期          dw, w 
--小时          hh 
--分钟          mi, n 
--秒            ss, s 
--毫秒          ms 
--微妙          mcs 
--纳秒          ns 
--dateadd(),用来对日期进行加减
--dateadd(datepart,number,date),datepart是指你希望在哪个数据上进行加减,number是指加减的数目,可以为正也可以为负,
select dateadd(d,1,getdate())
--datediff(),计算2个日期之间的差值
select datediff(d,getdate(), dateadd(d,5,getdate()))
--convert(),转换日期的格式为指定的格式,有时我们得到的日期格式并不是我们需要的格式,这时我们可以转换为我们需要的格式
--convert(length,date,style),lenght表示数据的长度,date需要转换的数据,style转换的格式
--Style ID Style 格式 
--100\0    mon dd yyyy hh:miAM (或者 PM) 
--101      mm/dd/yy 
--102      yy.mm.dd 
--103      dd/mm/yy 
--104      dd.mm.yy 
--105      dd-mm-yy 
--106      dd mon yy 
--107      Mon dd, yy 
--108      hh:mm:ss 
--109\9    mon dd yyyy hh:mi:ss:mmmAM(或者 PM) 
--110      mm-dd-yy 
--111      yy/mm/dd 
--112      yymmdd 
--113\13   dd mon yyyy hh:mm:ss:mmm(24h) 
--114      hh:mi:ss:mmm(24h) 
--120\20   yyyy-mm-dd hh:mi:ss(24h) 
--121\21   yyyy-mm-dd hh:mi:ss.mmm(24h) 
--126      yyyy-mm-ddThh:mm:ss.mmm(没有空格) 
--130      dd mon yyyy hh:mi:ss:mmmAM 
--131      dd/mm/yy hh:mi:ss:mmmAM 
select convert(char(20),GETDATE(),102)
---------------------------------------------------------
--Null空值 not null 非空值,
--我们在查询数据的时候,通常会遇到数据库中的列存在空值
--比如学生没有考试,则成绩为null,我们想要获得没有考试的学生就必须对空值进行操作
select * from Score where Math=null--这是不对的,我们不能对null进行=,可以这么写
select * from Score where Math is not null--我们用is 和is Not来比较是否为空
--sql server还为我们提供了一个函数,来为空值做运算
--isnull(colname,data),colname代表列的名称,data代表要显示的数据,这个函数可以这么理解
--如果这个值为空,那么我们用data这个值来代替
select *,ISNULL(Math,4) from Score--所有为空的Math均为4了就
----------------------------------------------------------
--下面介绍一下sql server中所有的数据类型
--Character 字符串:
--数据类型            描述                     
--char(n)             固定长度的字符串。最多 8,000 个字符。 
--varchar(n)          可变长度的字符串。最多 8,000 个字符。   
--varchar(max)        可变长度的字符串。最多 1,073,741,824 个字符。   
--text                可变长度的字符串。最多 2GB 字符数据。 
--Unicode 字符串:
--数据类型            描述 
--nchar(n)            固定长度的 Unicode 数据。最多 4,000 个字符。   
--nvarchar(n)         可变长度的 Unicode 数据。最多 4,000 个字符。   
--nvarchar(max)       可变长度的 Unicode 数据。最多 536,870,912 个字符。   
--ntext               可变长度的 Unicode 数据。最多 2GB 字符数据。 
--Binary 类型:
--数据类型            描述 
--bit                 允许 0、1 或 NULL   
--binary(n)           固定长度的二进制数据。最多 8,000 字节。   
--varbinary(n)        可变长度的二进制数据。最多 8,000 字节。   
--varbinary(max)      可变长度的二进制数据。最多 2GB 字节。   
--image               可变长度的二进制数据。最多 2GB。 
--Number 类型:
--数据类型            描述 
--tinyint             允许从 0 到 255 的所有数字。 1 字节 
--smallint            允许从 -32,768 到 32,767 的所有数字。 2 字节 
--int                 允许从 -2,147,483,648 到 2,147,483,647 的所有数字。 4 字节 
--bigint              允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 8 字节 
--decimal(p,s)        固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
--p                   参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
--s                   参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。-- 5-17 字节 
--numeric(p,s)        固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
--p                   参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
--s                   参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
--smallmoney          介于 -214,748.3648 和 214,748.3647 之间的货币数据。 4 字节 
--money               介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。 8 字节 
--float(n)            从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。  4 或 8 字节 
--real                从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 4 字节 
--Date 类型:
--数据类型            描述  
--datetime            从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 bytes 
--datetime2           从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 bytes 
--smalldatetime       从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 4 bytes 
--date 仅存储日期。   从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytes 
--time 仅存储时间。   精度为 100 纳秒。 3-5 bytes 
--timestamp           存储唯一的数字,每当创建或修改某行时,该数字会更新。 
------------------------------------------------------------------
--今天的内容就到这里了,下回看一下数据库中的函数


 

转载于:https://www.cnblogs.com/yinzihui/archive/2011/09/09/2172433.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值