概述
现有数据表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;
测试结果如下:
最后
以上就是痴情小蚂蚁为你收集整理的数据库操作的全部内容,希望文章能够帮你解决数据库操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复