慕课网oracle的学习笔记—基础篇(一)用户和表空间
1.Oracle用户登录
用 sql plus登录
用户 sys:权限高于 system,不能以普通用户方式登录,仅能以管理员身份登录,密码为全库密码
用户 system:能以普通用户方式登录,也能以管理员身份登录,密码为全库密码
用户 sysman:企业管理器,也是管理员级别,密码为全库密码
用户 scott:创始人之一的名字,密码为 tiger,四个用户里面权限最低,不是管理员级别
使用 system用户登录的语句:[username/password][@sever][as sysdba|sysoper]
示例:system/root @orcl as sysdba
-orcl 就是自己设置的服务器,如果数据库和服务器都在本地就不需要@服务器
另一种示例:connect sys/toor as sysdba;
- 查看登录的用户
show user 命令 -命令不需要分号,若为 sql 语句,结尾必须加分号
desc查看数据字典
示例:desc dba_users -查看数据字典的命令,无所谓分号
select username from dba_users ; -查看某一字段,需要分号
3. 启用scott用户
更改用户语句:alter user username account unlock ;
连接 scott 用户的命令:connect scott/tiger
4. 表空间概述
表空间是数据库的逻辑存储空间,相当于在数据库中开辟的一个空间,用于存放数据库对象。
一个数据库可以由多个表空间构成。
表空间由一个或多个数据文件构成,数据文件的位置以及大小由用户定义。表和数据库对象就是存在数据文件中。
分类:
永久表空间:数据库中永久存放的对象,如表,视图,存储过程
临时表空间:存放数据库操作中的中间内容
UNDO表空间:事务所修改的数据的旧址,可以对修改的数据进行撤销和回滚的操作
- 查看用户的表空间
desc dba_tablespaces/user_tablespaces 查看管理员/普通用户的数据字典
示例:desc dba_tablespaces -管理员的
select tablespace_name from dba_tablespaces;
SYSTEM:系统表空间,存储sys的表、视图等数据库对象,存放系统信息
SYSAUX:作为EXAMPLE的辅助表空间
UNDOTBS1:存储撤销类型的表空间,属于UNDO类型
TEMP:存储sql 语句处理的索引和表的表空间
USERS:存储用户创建的数据库对象,属于永久表空间
EXAMPLE:安装oracle数据库示例的表空间
dba_users/user_users (管理员/普通用户)的数据字典
示例:desc dba_users -管理员的
select default_tablespace,temporary_tablespace from dba_users where username=‘SYSTEM’;
设置用户的默认或临时表空间(普通用户没有修改权限,可以给权限或者管理员帮修改)
ALTER USER username
DEFAULT|TEMPORARY
TABLESPACE tablespace_name
示例:
ALTER USER system
DEFAULT TABLESPACE system;
6. 创建表空间
CREATE [TEMPORARY] TABLESPACE tablespace_name
TEMPFILE|DATAFILE ‘xx.dbf’ SIZE xx
示例:create tablespace test1_tablespace
datafile ‘test1file.dbf’ size 10m;
查看路径的数据字典
desc dba_data_files
select file_name from dba_data_files where tablespace_name=‘TEST1_TABLESPACE’;
-临时表空间的要改成dba_temp_files
7. 修改表空间(永久的表空间)
修改表空间状态
-修改联机与脱机状态
ALTER TABLESPACE tablespace_name
ONLINE|OFFLINE;
查看状态的语句:select status from dba_tablespace where tablespace_name=‘TEST1_TABLESPACE’;
-设置只读或可读写状态
ALTER TABLESPACE tablespace_name
READ ONLY | READ WRITE;
修改表空间中的数据文件
-增加数据文件
ALTER TABLESPACE tablespace_name
ADD DATAFILE ‘xx.dbf’ SIZE xx;
-删除数据文件
ALTER TABLESPACE tablespace_name
DROP DATAFILE ‘filename.dbf’;-最开始的默认文件不能删除
- 删除表空间
-仅删除表空间不删除数据文件
DROP TABLESPACE
tablespace_name
-删除表空间以及其中的数据文件
DROP TABLESPACE
tablespace_name INCLUDING CONTENTS
慕课网oracle的学习笔记—基础篇(二)管理表
解析:nvarchar2和varchar2都可以表示可变长度的字符,其中nvarchar2用于存储Unicode格式的数据,更适合存储中文数据。
- 数据类型
字符型:
固定长度的:char(n-表示长度,不够会用空格补齐,最大为2000)、nchar(n-最大为1000,多用来存汉字)
可变长度的:varchar2(n-不够不会补,最大为4000)、nvarchar2(n-最大为2000)
nvarchar2(n)用于存储Unicode格式的数据,更适合存储中文数据
数值型:
number(p-有效数字,s-小数点后的位数,也可理解为范围
为正表示从小数点到最低有效数字的位数,为负表示最大有效数字到小数点的位数)
示例:number(5,2) -参考:123.45
float(n)用来存储二进制数,有1~126位
日期型:
DATE:表示范围为:公元前4712年1月1日到公元9999年12月31日
TIMESTAMP:能精确到小数秒
其他型:
BLOB:以二进制存储最大4GB的数据
CLOB:以字符串形式存储最大4GB的数据
- 创建表
基本语法:CREATE TABLE table_name(… column_name datatype, …);
示例:create table userinfo
( id number(6,2),
username varchar2(20),
userpwd varchar2(20),
email varchar2(30),
regdate date);
查看表结构:
desc table_name
- 修改表
-添加字段
ALTER TABLE table_name ADD column_name datatype
-更改字段的数据类型(最好是表中无数据时修改)
ALTER TABLE table_name MODIFY column_name datatype;
-删除字段
ALTER TABLE table_name DROP COLUMN column_name;
-修改字段名字
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
-修改表名
RENAME table_name TO new_table_name;
-TRUNCATE 删除表(删除的是表中的全部数据,不删除表结构,速度比delete快,也叫截断表)
TRUNCATE TABLE table_name;
-DROP删除表(删除表的结构以及全部数据)
DROP TABLE table_name;
慕课网oracle的学习笔记—基础篇(三)操作表中的数据
- 操作表中的数据
-添加数据
基本语句:INSERT INTO table_name(column1,column2,…)
VALUES(value1,value2,…);(前一个括号的字段数应与values中数量一致,若values全写了,前一个括号可不要)
示例:
-添加全部值:insert into userinfo values(1,‘xxx’,‘123’,‘xxx@123.com’,sysdate);
(字符串类型要用单引号括起来,sysdate表示添加值的系统时间)
-添加指定字段的值:insert into userinfo(id,username,userpwd)values (2,‘yyy’,‘123’);
-添加默认值:ALTER TABLE userinfo MODIFY regdate default sysdate;(创建/修改表时设置默认值)
insert into userinfo (id)values(3);(此时表中会默认加入系统时间,若自己设置,则对应字段添值即可)
-查看数据:select * from userinfo;(查看全部数据)
select username,userpwd from userinfo;(查看特定字段)
-创建表时复制:create table new_table_name as select column1,…/*from old_table_name
示例:create table userinfo2 as select * from userinfo;(复制全部)
create table userinfo3 as select id,username from userinfo;(复制特定行,显示的时候也只有特定行)
-在添加时复制:insert into table_new [(column1,…)] select column1,…/ *from table_old;
- 修改数据
-update语句
update table_name set column1=value1,…[where conditions];(没有where,则全部更新)
示例:update userinfo set userpwd=123;无条件更新(全部更新,无条件更新)
update userinfo set username=‘zz ‘ where username=‘xx’;(有条件的更新)
- 删除数据
-delete语句
delete from table_name [where conditions];(没有where删除整个表,有where删除特定记录