表的管理:
表的概念
image.png
char()存储定长字符串
varchar2()存储不定长字符串
number(a,b) a:总长度,b:小数点后面长度 存储数字
创建表(图形界面不做记录):
sqlplus sys/Oracle11 as sysdba;
alter user scott account unlock identified by tiger;
connect scott/tiger;
CREATE table xs1(
sno char(10),
sname char(8),
sage number(3)
);
desc xs1; --查看表结构
CREATE table xs2(
sno char(10) PRIMARY KEY, --设置主键
sname char(8),
sage number(3)
);
desc xs2;
CREATE table xs3(
sno char(10) CONSTRAINT PK_SNO PRIMARY KEY --创建主键约束名字为PK_SNO的主键。
sname char(8),
sage number(3)
);
desc xs3;
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,STATUS
FROM USER_CONSTRAINTS
WHERE TABLE_NAME='xs1'; --查看xs1表的所有约束。
SELECT CONSTRAINT_NAME,COLUMN_NAME
FROM USER_CONS_COLUMNS
WHERE TABLE_NAME='xs1'; --查看xs1表,列的约束
主键列不为空,主键值唯一。
表级约束,涉及多个列的约束。
CREATE TABLE sc(
sno char(10),
cno char(3),
grade number(3),
PRIMARY KEY(sno,cno) --同时设置sno和cno为主键。
);
CREATE TABLE xs4(
sno char(10),
sname char(8),
sage number(3),
ssex char(2) default '男' --默认值是男。
);
desc xs4;
CREATE TABLE xs5
as
SELECT *
FROM emp
WHERE SAL < 2500;
--利用子查询创建表
CREATE TABLE xs9
as
SELECT *
FROM xs
WHERE 1=2;
--利用子查询,创建空表,因为1≠2,所以创建出的是空表。
为表添加注释:
COMMENT ON TABLE sc is '选修表'; --给表sc注释为选修表
COMMENT ON TABLE sc is ''; --删除sc表的注释。
SELECT *
FROM user_tab_comments
WHERE table_name='sc'; --查看sc表的注释。表名大小写一致。
COMMENT ON COLUMN sc is ''; --删除列的注释。
RENAME SC1 TO SC2; --把表名SC1改为SC2.
ALTER TABLE XS1 RENAME TO XS2; --把表名XS1改为XS2.只有表的拥有者才能修改表名。
删除表:
DROP TABLE XS1;
DROP TABLE XS1 CASCADE CONSTARINTS; --当删除的表被其他表 参照时,删除参照此表的约束条件。
修改表:
ALTER TABLE xs1 add(sdept char(20),ssex char(2)); --添加列
ALTER TABLE xs1 add address char(20);
desc xs1;
ALTER TABLE XS1 DROP (sdept,ssex); --删除列
ALTER TABLE XS1 DROP (sdept);
ALTER TABLE XS1 DROP COLUMN sdept;
ALTER TABLE XS1 RENAME COLUMN sage TO NL; --修改sage列名为NL。
ALTER TABLE xs1 MODIFY sname varchar(20); --把sname的类型改为varchar(20).
ALTER TABLE xs2 MODIFY (sname char(20),sage number(4));
当表没有数据或者数据为NULL时,才可以缩小表的值范围。改数据类型也是。
char和varchar2任意转换。
当列值为空时,才能加NOT NULL约束。
设定列的默认值时,只影响后插入的数据。
ALTER TABLE XS1 set unused column sname; --设置sname列在表中不显示
ALTER TABLE XS1 drop unused columns; --让它再正常显示
添加数据:
INSERT INTO XS1 VALUES('0001','张三',22);
INSERT INTO XS1(sno,sname,sage) VALUES('0002','lisi',21);
INSERT INTO XS SELECT * FROM XS5; --查询xs5表的数据,插入xs表。
修改数据:
UPDATE XS SET sage=sage+1; --所有sage的值加1.
UPDATE XS SET sage=22 WHERE sno='0001'; --将sno为0001的sage改为22
删除数据:
DELETE FROM XS WHERE sno='0001'; --删除sno为0001的数据
DELETE FROM XS; --删除xs所有数据。
TRUNCATE TABLE XS; -- 清空xs表