如何操作Oracle數據庫的表

數據庫表的管理

建表

語法:
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 ('張三'118null1);
INSERT INTO stuInfo VALUES ('李四'220null2);
INSERT INTO stuInfo VALUES ('王五'315null3);
INSERT INTO stuInfo VALUES ('張三'418null4);
INSERT INTO stuInfo VALUES ('張三'520null5);
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相關知識,敬請關注作者或前往作者主頁尋找哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章