数据库操作

现有数据表Customer,其结构如表-1所示:

表-1 customer表结构

1)构造SQL语句,列出Customer数据表中每个客户的信息。如果客户生日未提供,则该列值显示“not available”;如果没有余额信息,则显示“no account”。

2) 构造SQL语句,列出生日在1987年的客户的全部信息。

一、创建customer表的SQL语句如下所示:

CREATE TABLE customer(

cust_id NUMBER(4),

cname VARCHAR2(25),

birthday DATE,

account NUMBER

);

注意:此处NUMBER未指定长度,默认为38位

二、向customer插入如下测试数据,SQL语句如下所示:

     insert into customer(cust_id,cname,birthday,account) 
           VALUES (1001,'郭靖','12-12月-13',200);

           insert into customer(cust_id,cname) 
           VALUES (1002,'黄蓉');

           insert into customer(cust_id,cname,birthday,account) 
           VALUES (1003,'梅超风','12-12月-87',200);

测试插入的数据:


三、列出Customer数据表中每个客户的信息。如果客户生日未提供,则该列值显示“not available”;如果没有余额信息,则显示“no account”

思路:使用TO_CHAR函数将日期类型的birthday列的数据转换为字符类型,然后,使用NVL函数,当birthday为NULL值时,将birthday列的数据显示为“not available”。同理,使用TO_CHAR函数将数值类型的account列数据转换为字符类型,然后,使用NVL函数,当account为NULL值时,将account列的数据显示为“noaccount”,SQL语句如下所示:

  select 

cust_id,

cname,

nvl(to_char(birthday,'YYYY-MM-DD'),'not available'),

nvl(to_char(account),'no account')

FROM customer;

测试结果如下:


四、列出生日在1987年的客户的全部信息

使用TO_CHAR函数将获取birthday列的年份数据,与“1987”使用“=”等号进行比较,SQL语句如下所示:

SELECT * FROM customerWHERETO_CHAR(birthday,'yyyy')='1987'

还可以使用TEXTRACT函数获取时间分量

SELECT * FROM customer WHERE EXTRACT(YEAR FROM BIRTHDAY)=1987;

测试结果如下:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值