·创建部门表(部门编号,部门名称)和用户表(帐号,姓名,性别,出生日期,年龄,密码,部门编号):
depts:did,dname
users:uid,uname,sex,birthday,age,pwd,did
注意指定正确的数据类型和约束
create table depts(
d_id number(2) primary key not null,
d_name varchar2(30)
);
create sequence seq_user increment by 3 start with 2;
create table users(
u_id number(2) not null primary key,
u_name varchar2(40) not null,
sex varchar(2) default '男',
birthday date,
age number(2) check(age>20),
pwd varchar(20),
d_id number(3),foreign key(u_id) references depts(d_id)
);
·通过insert语句添加3个部门(市场部,开发部,财务部),部门编号分别指定为10,20,30。
insert into depts (d_id,d_name) values(10,'市场部');
insert into depts (d_id,d_name) values(20,'开发部');
insert into depts (d_id,d_name) values(30,'财务部');
·打开新的cmd窗口,查询所有部门信息,思考为什么没有查询到部门信息。
——Oracle支持事务机制,修改了的数据库信息先存放在数据库缓存区,在提交后才写入数据库。
·通过insert语句为前2个部门各添加3个员工
要点:工号要求使用序列;注意日期信息的添加要使用某种函数。
insert into users f(u_id,u_name,birthday,age,d_id) values(seq_user.nextval,'test1',to_date('1985-3-3','yyyy-mm-dd'),30,10);
insert into users f(u_id,u_name,birthday,age,d_id) values(seq_user.nextval,'test2',to_date('1985-3-3','yyyy-mm-dd'),44,10);
insert into users f(u_id,u_name,birthday,age,d_id) values(seq_user.nextval,'test3',to_date('1985-3-3','yyyy-mm-dd'),20,10);
insert into users f(u_id,u_name,birthday,age,d_id) values(seq_user.nextval,'test4',to_date('1983-2-3','yyyy-mm-dd'),20,20);
insert into users f(u_id,u_name,birthday,age,d_id) values(seq_user.nextval,'test5',to_date('1982-2-3','yyyy-mm-dd'),50,20);
insert into users f(u_id,u_name,birthday,age,d_id) values(seq_user.nextval,'test6',to_date('1989-2-3','yyyy-mm-dd'),33,20);
·为部门表创建私有同义词bm,通过同义词查询所有部门信息。
·查询所有部门的人数,没有用户的部门显示为0。
·为上面的查询建立视图,通过视图进行查询。
·谈谈dual概念和作用,并且举例说明。
默认只有一行一列;任何用户都可使用;类似java中的超类object;属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用 ;
*dual包含的信息——user(当前用户);sysdate(系统日期);表达式计算后的值;序列号;
·区别以“;”和“/”结束有什么不同。
问题
1、SQL> select to_char(to_date(222,'j'),'jsp')from dual;——何意
TO_CHAR(TO_DATE(222,'J
----------------------
two hundred twenty-two