Oracle用戶和表的操作

用戶操作

/*
  創建用戶
    create user 用戶名
    identified by 密碼
    default tablespace 表空間
    temporary tablespace 臨時表空間
*/

select * from v$tablespace;

--創建student表空間
create tablespace student
	datafile 'C:\myoracle\oradata\orcl\stu01.dbf'
	size 100m
	reuse;

--創建用戶
create user stu_oper
	identified by stu_oper
	default tablespace student;

select * from dba_users;

--此時切換到stu_oper用戶可以成功麼?

/*
  授權
    grant 角色 to 用戶
    connect 角色
    resource 角色
    dba 全部權限
*/
grant connect to stu_oper;
grant resource to stu_oper;

--此時再切換到stu_oper用戶,是否可以成功?
select * from dba_users;

表的操作

/*
   標準建表語法:
    create table 表名( 
          列名 數據類型 [約束],
          列名 數據類型 [約束],
          ...
    );
*/

--創建學生表
CREATE TABLE STUDENT ( 
  STUID VARCHAR2(7) NOT NULL, --學號 學號=‘S’+班號+2位序號 
  STUNAME VARCHAR2(10) NOT NULL, --姓名 
  GENDER VARCHAR2(3) NOT NULL, --性別 
  AGE NUMBER(2) NOT NULL, --年齡 
  SEAT NUMBER(2) NOT NULL, --座號 
  ENROLLDATE DATE, --入學時間 
  STUADDRESS VARCHAR2(50) DEFAULT '地址不詳', --住址 
  CLASSNO VARCHAR2(4) NOT NULL --班號 班號=學期序號+班級序號 
);

select * from student;

INSERT INTO "STU_OPER"."STUDENT" ("STUID", "STUNAME", "GENDER", "AGE", "SEAT", "ENROLLDATE", "STUADDRESS", "CLASSNO") VALUES ('S117301', '張三', '男', '19', '11', TO_DATE('2017-09-01 17:13:21', 'SYYYY-MM-DD HH24:MI:SS'), '地址不詳', '2017');
INSERT INTO "STU_OPER"."STUDENT" ("STUID", "STUNAME", "GENDER", "AGE", "SEAT", "ENROLLDATE", "STUADDRESS", "CLASSNO") VALUES ('S117302', '李四', '女', '20', '12', TO_DATE('2017-09-01 17:14:30', 'SYYYY-MM-DD HH24:MI:SS'), '地址不詳', '2017');


/*
  create as 子查詢建表
    1、如果對於一張以及存在的表,現在想要複製它,則可以使用子查詢複製表來實現。
    2、語法:create table 表名 as select 查詢語句
    
    注意:
    1)如果子查詢有結果,則複製表結構的同時也會複製表中的數據,如果子查詢沒有結果,則只複製表結構
    2)子查詢建的表只複製了目標表的結構(如字段名稱、數據類型),卻不復制約束、索引(如主外鍵、約束、索引)
*/
--通過已經存在的 STUDENT 表複製一張新表 person
CREATE TABLE PERSON AS SELECT * FROM STUDENT;
select * from person;--查詢 person 表
 
--通過已經存在的 STUDENT 表複製一張新表 person1
CREATE TABLE PERSON1 AS SELECT * FROM STUDENT WHERE STUID='1' ;
select * from person1;--查詢 person1 表

--添加 phone 列
alter table person add phone varchar2(11);

--同時添加多列
-- 如果表中已有數據,則新增列不可約束爲"NOT NULL"
alter table person add (     
      fatherName varchar2(16)  not null,
      fatherPhone varchar2(11) 
);

alter table person1 add (     
      fatherName varchar2(16)  not null,
      fatherPhone varchar2(11) 
);
select * from person1;
 
-- 修改表 student 的列 age 的數據類型爲 number(2),默認值爲 0
alter table student modify (age number(2) default 0);
-- 插入數據
INSERT INTO "STU_OPER"."STUDENT" ("STUID", "STUNAME", "GENDER", "SEAT", "ENROLLDATE", "STUADDRESS", "CLASSNO") VALUES ('S117303', '王五', '女', '13', TO_DATE('2017-09-01 17:14:30', 'SYYYY-MM-DD HH24:MI:SS'), '地址不詳', '2017');
select * from STUDENT;
 
alter table person1 modify fatherName varchar2(12);--修改列的數據類型
alter table person rename column gender to sex;--修改列名

alter table person1 drop column fatherName;--刪除列
alter table person1 drop column fatherPhone;--刪除列
select * from person1;
 

select * from user_tables;
rename person to person_new;--修改表名
 
drop table person_new;--刪除表
drop table person1;



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