數據庫表的管理
建表
語法:
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相關知識,敬請關注作者或前往作者主頁尋找哦!