需要注意的是關鍵字部分,其他內容需要根據自己的表的而適當調整
數據庫操作分類
用戶和角色以及賦於權限(增,刪,對用戶基本操作)
創建用戶
CREATE USER dbowner IDENTIFIED BY dbowner;
或
CREATE USER 'user_name'@'host' IDENTIFIED BY 'password';
user_name:要創建用戶的名字。
host:表示要這個新創建的用戶允許從哪臺機登陸,如果只允許從本機登陸,則填 ‘localhost’ ,
如果允許從遠程登陸,則填 ‘%’
password:新創建用戶的登陸數據庫密碼,如果沒密碼可以不寫。
刪除用戶:
DROP USER user_name;
設置與更改用戶密碼:
SET PASSWORD FOR ‘username’@‘host’ = PASSWORD(‘newpassword’);
如果是設置當前用戶的密碼:
SET PASSWORD = PASSWORD('newpassword');
如: SET PASSWORD = PASSWORD(‘123456’);
創建角色
create role dbrole_t;
授權
grant (權限名) to (角色名or用戶名);
grant (角色名) to (用戶名);
示例
GRANT DBA TO dbowner;
GRANT SELECT ON students TO dbrole_t;
GRANT SELECT, INSERT, DELETE ON operate_reports TO dbrole_t;
GRANT EXECUTE ON 函數名或存儲過程名 TO dbuser_t;
撤銷授權:
REVOKE 權限名 ON 表名 FROM ‘用戶名’@‘host’;
或
REVOKE 權限名 ON 表名 FROM 用戶名;
注意:
若授予權利是這樣寫: GRANT SELECT ON . TO ‘zje’@‘%’;
則用 REVOKE SELECT ON zje.aaa TO ‘zje’@‘%’;是不能撤銷用戶zje 對 zje.aaa 中的SELECT 權利的。
反過來 GRANT SELECT ON zje.aaa TO ‘zje’@‘%’;授予權力
用 REVOKE SELECT ON . FROM ‘zje’@‘%’;也是不能用來撤銷用戶zje 對zje庫的aaa表的SELECT 權利的
創建表(帶約束條件)
示例:
create table student(
studentid number(2) primary key, --主鍵約束
studentname varchar(10) not null, --非空約束
studentsex char(2) check(studentsex='男' or studentsex='女'), --check約束
studenttel number(11) unique, --唯一性約束
studentaddress varchar(50) default '上海', --默認值約束
classid number(2) references classinfo(classid) --外鍵約束
);
如果一個字段有多個約束呢,手動再增加一波
增加約束
主鍵約束
alter table Student add constraint PK_Student_StuId primary key(StuId);
--student是表名; PK_Student_StuId是約束名,是自己起的,不起的話系統一會自動分配;
--stuid指出哪個字段是主鍵。
檢查約束
alter table Student add constraint CK_Student_Gender check(gender='男' or gender='女');
alter table Student add constraint CK_Student_Age check(Age>=0 and Age<=100);
唯一性約束
alter table Student add constraint UQ_Student_StuName unique(StuName);
默認值約束
alter table (表名)add constraint (約束名)default '未填寫' for (字段名);
--也可以這樣
alter table Student Modify Address varchar(50) default '地址不詳';
alter table Student Modify JoinDate Date default sysdate;
外鍵約束
alter table Student add constraint FK_Student_StuCLass_ClassId
foreign key(ClassId) references StuClass(ClassId);
序列操作(創建,刪除,獲取)
示例:(提供一個number(6)的序列)
創建序列:
create sequence seq_id
increment by 1 --每次跳幾
start with 1 --從幾開始
maxvalue 999999 --最大值
minvalue 1; --最小值
刪除序列:
DROP SEQUENCE 序列;
獲取序列:
SELECT 序列名.NEXTVAL FROM DUAL
索引操作(創建,刪除,查詢,禁用和重建)
創建單一索引:
Create Index <Index-Name> On <Table_Name>(Column_Name);
創建複合索引:
Create Index i_deptno_job on emp(deptno,job); —>在emp表的deptno、job列建立索引。
select * from emp where deptno=66 and job='sals' ->走索引。
select * from emp where deptno=66 OR job='sals' ->將進行全表掃描。不走索引
select * from emp where deptno=66 ->走索引。
select * from emp where job='sals' ->進行全表掃描、不走索引。
如果在where 子句中有OR 操作符或單獨引用Job 列(索引列的後面列) 則將不會走索引,將會進行全表掃描。
刪除:
drop index 索引名;
查詢:
--根據索引名,查詢表索引字段
select * from user_ind_columns where index_name='索引名';
--根據表名,查詢一張表的索引
select * from user_indexes where table_name='表名';
禁用和重建索引:
--禁用索引
alter index 索引名 unusable;
--重新啓用索引,重建索引
alter index 索引名 rebuild;
查看當前用戶下的各種信息
查看當前用戶dbowner擁有多少數據庫對象?
select count(*) from all_objects t;
查看當前用戶dbowner擁有哪些表。
select * from all_tables where owner='DBAOWNER';
查看當前用戶dbowner擁有哪些序列。
select * from user_sequences;
查看當前用戶dbowner擁有哪些索引。
select index_name,index_type,table_name from user_indexes order by table_name;
查看當前用戶dbowner擁有哪些約束。
select constraint_name,constraint_type,search_condition from user_constraints;
對錶內容以及自身的操作(增,刪,改,查)
增
增內容:
insert into student values("G0107","S201801200","小明","男","2001-08-09",17) ;
#插入一整行值,不可錯位
insert into student (student_name,gender,age) values("小李","男",19);
#插入部分值
增一個字段(一列):
alter table 表名 add (字段 字段類型) [ default '輸入bai默認值'] [null/not null] ;
例:ALTER TABLE student ADD gender varchar(20) Default 0 NOT NULL ;
--default 和 not null 的順序不能反過來
刪
刪內容:
delete from student where student_name ="孫權" ; #刪掉孫權所在的這一行
刪表中一列:
alter table student drop column gender ; #刪掉gender這一列
刪除表:
drop table student;
改
改內容:
update student set gender ="女" where student_name ="小李" ; #將小李的gender改爲女
改列名:
ALTER TABLE 表名 RENAME COLUMN 舊列名 TO 新列名;
改列類型:
ALTER TABLE 表名 MODIFY (列名VARCHAR(25)); --將列名修改爲varchar(25)類型
查
查內容:
select * from student ; #查詢所有列,即整張表
select student_name,gender from student; #兩列,列之間用逗號隔開
--帶條件的查詢
select * from student where student_name ="孫權"; #顯示孫權這一行所有value
select * from student where age > 14; #找出所有年齡大於14歲的學生
select * from student where student_name like "楊%" ;
#匹配關鍵字like; 通配符%:替代0個或多個字符
select * from student order by class_id ASC ;
#查詢student表的信息 並按class_id排序;ASC可省略
會一直更新完善,如有錯誤,歡迎留言糾正。