数据库表的管理
建表
语法:
Create table 表名(
字段 1 数据类型 [default 默认值],
字段 2 数据类型 [default 默认值],
…
字段 n 数据类型 [default 默认值] );
范例:创建并操作 stuInfo 表
示例 1:创建 stuInfo 表
CREATE TABLE stuInfo /*-创建学员信息表-*/
(
stuName VARCHAR2(20) NOT NULL, --学员姓名,非空(必填)
stuNo CHAR(6) NOT NULL, --学号,非空(必填)
stuAge NUMBER(3,0) NOT NULL, --年龄,非空(必填)
stuID NUMERIC(18,0), --身份证号,代表 18 位数字,小数位数为 0
stuSeat NUMERIC(2,0) --座位号
);
补充:更改 stuName 列的定义,使此列能容纳 25 个字符
ALTER TABLE stuInfo
MODIFY (stuName VARCHAR2 (25));
补充:向 stuInfo 表添加 stuTel_no 和 stuAddress 两个列
ALTER TABLE stuInfo
ADD (stuTel_no VARCHAR2 (12),
stuAddress VARCHAR2(20));
补充:从 stuInfo 表中删除列
ALTER TABLE stuInfo
DROP COLUMN stuTel_no; --删除 stuTel_no 列
--或者
ALTER TABLE stuInfo
DROP (stuTel_no,stuSeat);--删除 stuTel_no 和 stuSeat 列
补充:删除 stuInfo 表
DROP TABLE stuInfo;
补充:插入 stuInfo 表数据
INSERT INTO stuInfo VALUES ('张三',1,18,null,1);
INSERT INTO stuInfo VALUES ('李四',2,20,null,2);
INSERT INTO stuInfo VALUES ('王五',3,15,null,3);
INSERT INTO stuInfo VALUES ('张三',4,18,null,4);
INSERT INTO stuInfo VALUES ('张三',5,20,null,5);
COMMIT;
选择无重复的行
SELECT DISTINCT stuName,stuAge
FROM stuInfo;
按照姓名升序,如果姓名相同按照年龄降序排序
SELECT stuNo,stuName, stuAge
FROM stuInfo
WHERE stuAge>17
ORDER BY stuName ASC, stuAge DESC;
使用列别名
SELECT stuName as "姓 名",stuAge as "年 龄", stuID as 身份证号
FROM StuInfo;
利用现有的表创建新表
CREATE TABLE newStuInfo1 AS SELECT * FROM StuInfo;
CREATE TABLE newStuInfo2 AS SELECT stuName,stuNo,stuAge
FROM StuInfo;
CREATE TABLE newStuInfo3 AS SELECT * FROM StuInfo WHERE 1=2;
SELECT * FROM newStuInfo1;
SELECT * FROM newStuInfo2;
SELECT * FROM newStuInfo3;
查看表中行数
SELECT COUNT(*) FROM stuInfo;
SELECT COUNT(1) FROM stuInfo;
取出 stuName,stuAge 列不完全重复记录
SELECT stuName,stuAge
FROM stuInfo
GROUP BY stuName,stuAge
HAVING(COUNT(stuAge||stuAge) <2);
删除 stuName,stuAge 列重复的行(保留一行)
DELETE
FROM stuInfo
WHERE ROWID NOT IN(
SELECT MAX(ROWID)
FROM stuInfo
GROUP BY stuName,stuAge
HAVING(COUNT(stuAge||stuAge)>1)
UNION
SELECT max(ROWID)
FROM Stuinfo
GROUP BY stuName,stuAge
HAVING(COUNT(stuAge||stuAge)=1)
);
SELECT * FROM stuInfo;
查看当前用户所有数据量>100 万的表的信息
SELECT *
FROM user_all_tables a
WHERE a.num_rows>1000000;
更多Oracle相关知识,敬请关注作者或前往作者主页寻找哦!