先讲下我一开始看到这本书的感觉。。。怪怪的。。。谜题。。。每个谜题后面还附带了一张图片。
开始吧。
第一个谜题让我了解了上数据库课时候一笔带过的知识~还不错~~
1.让我们了解了 DATE的用法。每个DBMS的DATE用法都是不一样的,我用的是SQL SERVER,照着书上的打了后发现不对。郁闷。比如EXTRACT(YEAR FROM date)
查了下发现SQL SERVER根本没有。
函数 | 描述 |
---|---|
GETDATE() | 返回当前日期和时间 |
DATEPART() | 返回日期/时间的单独部分 |
DATEADD() | 在日期中添加或减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的时间 |
CONVERT() | 用不同的格式显示日期/时间 |
GETDATE() | 返回当前日期和时间 |
DATEPART() | 返回日期/时间的单独部分 |
DATEADD() | 在日期中添加或减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的时间 |
CONVERT() | 用不同的格式显示日期/时间 |
DATEPART(part,date)返回日期/时间的单独部分; 整数
DATEADD(part,number,date) 在日期中添加或减去指定的时间间隔;
DATEDIFF(part,startdate,enddate)返回两个日期之间的天数;
CONVERT(data_type(length),date_to_be_conversed,style);转换日期格式
其中part可为:
年 yyyy
月 mm
日dd
年中的日 dy
周ww
星期dw
小时hh
分钟 mi
秒 s
毫秒ms
其中date就是DATE类型 是一个字符串,所以用单引号括起。
2.完整性约束的实践。
看书上都觉得懂,但是一到操作就会觉得怪怪的。
完整性约束分为
(1)primary key(...) 主码
(2)unique(...) 唯一,不能有重复
(3)constraint[name] check(...) 定义了名字后可以清晰差错。
(4)not null 非空
以下是谜题1的解。
CREATE TABLE FiscalYears ( fiscal_year INTEGER not null primary key, start_date DATE not null, constraint start1 check(DATEPART(yyyy,start_date) = fiscal_year-1), constraint start2 check(DATEPART(mm,start_date)=10), constraint start3 check(DATEPART(dd,start_date)=01), end_date DATE not null, constraint end1 check(DATEPART(yyyy,end_date)=fiscal_year), constraint end2 check( DATEPART(mm,end_date)= 09), constraint end3 check(DATEPART(dd,end_date)= 30), constraint end4 check(start_date<end_date ), unique (fiscal_year,start_date,end_date) ); insert into FiscalYears values(1994,'1993-10-01','1994-09-30'); //插入范例
总结:
1.date用法
2.完整性约束用法