五、操作表

1、表分为行和列
约定:每行数据唯一性,每列数据同类性,每列列名唯一性。
2、数据类型
字符型 -- 固定长度的字符类型
字符类型:CHAR(n)(MAX n=2000)、NCHAR(MAX n=1000)
-- 可变长度的数据类型(节省空间随着数据的大小生成相应的数据)
VARCHAR2(MAX n=4000)、NVARCHAR2(MAX n=2000)
数值型(通常使用number类型):NUMBER(p,s):
p--有效数字,
s--小数点后的位数
如果s为正数,代表从小数点到最低有效数字的位数;
如果s为负数,代表从最大有效数字到小数点的位数(数值型通常采用NUMBER类型)
例子
number(5,2) 有效数字5位,保留2位小数,如:123.12
FLOAT :用于存储二进制类型1~126位
日期型
DATE 日期类型,表示范围为公元前4712年1月1日到公元9999年12月31日,可精确到秒(日期型通常采用DATE型)
TIMESTAMP 时间戳类型,可以精确到秒
其他型
BLOB 可以存放4GB的大文件,以二进制形式存放
CLOB 可以存放4GB的大文件,字符串存放的

3、管理表的操作
创建表:创建用户信息表
例子:
create table userinfo(
user_a_id number(6,0),
user_username varchar2(20),
user_pwd varchar2(20),
user_email varchar2(30),
user_regdate date
);
修改表:修改结构
1、添加字段
例子:
alter table userinfo add user_remarks varchar2(500);

2、更改字段数据类型(最好是表中没有数据的时候进行更改)
更改原有的数据
alter table userinfo modify user_remarks varchar2(400);
更改数据的类型
alter table userinfo modify user_pwd number(6,0);
3、删除字段
alter table userinfo drop column a;
4、修改字段名
alter table userinfo rename column user_username to user_a_username;
5、修改表名
rename userinfo to user_info;
删除表
删除表中的数据,不是删除表,但是速度快
truncate table table_name;
truncate table user_info;
删除表的结构,真实被删除了
drop table user_info;

查看表
desc table_name;
desc userinfo;

4、操作表中的数据
对表的内容进行操作

1、添加数据
insert into userinfo(user_a_id,user_username,user_pwd,user_email,user_regdate) values(1,'xiaobaitu','123456','[email protected]',sysdate);
全添加,可以省略userinfo后边的()
insert into userinfo values(1,'xiaobaitu','123456','[email protected]',sysdate);
不添加全部数据
insert into userinfo(user_a_id,user_username,user_regdate) values(1,'xiaobaitu',sysdate);

为字段添加默认值
创建表时,创建默认值
create table userinfo_a(
userinfo_a_id number(6,0),
userinfo_regdate date default sysdate
);

添加数据
insert into userinfo_a(userinfo_a_id) values(1);

修改表时,添加默认值
alter table userinfo modify user_email default '无';
如果没有添加,email为默认值:
insert into userinfo(user_a_id) values(3);

select user_a_id ,user_email from userinfo;
如果添加了,就会返回添加的值
insert into userinfo(user_a_id,user_email) values(4,'aa');
select user_a_id ,user_email from userinfo;

2、复制表数据
(1)在建表时复制
(a)复制表中的全部数据
create table userinfo_2 as select * from userinfo;
select * from userinfo_2;
desc userinfo_2;
(b)复制表中部分数据
create table userinfo_3 as select user_a_id from userinfo;
select * from userinfo_3;
desc userinfo_3;
(2)在添加数据时复制
(a)添加全部数据(复制的两个表必须结构相同)
create table user_new(
user_a_id number(6,0),
user_username varchar2(20),
user_pwd varchar2(20),
user_email varchar2(30),
user_regdate date
);
insert into user_new select * from userinfo;
(b)添加部分数据(添加时数据类型要相同)
insert into user_new(user_a_id,user_username) select user_a_id,user_username from userinfo;

3、修改数据(更新操作)
(1)无条件更新
update userinfo set user_pwd='111111';
(2)有条件更新
update userinfo set user_pwd='6666' where user_username='xiaobaitu';

4、删除数据(行删除,不能删除列)
创建一个实验用表
create table user_new2 as select * from userinfo;
(1)无条件删除
delete from userinfo_3; 等同于 truncate table userinfo_3;
(2)有条件删除
delete from user_new2 where user_username='xiaobaitu';

04-16 19:10