oracle笔记

20171121

以管理员身份安装

host cls 或是clear screen清屏

默认创建全局数据库是orcl

如果不给SYS设置新的口令,那么默认就是安装时候设置的。

简单打开方式:在菜单打开SQL plus 命令行工具

里面还有个企业管理的工具,也可以从那里登录进去。

卸载,在deinstall,要慢慢找,全回车,按提示。

系统用户:sys,system。比较高级的。sysman。scott默认密码是tiger。

system/password。服务器和客户端都在一台

 

desc dba_users;里面有过期时间啊什么什么的,用户权限等等。

select username from dba_users;//分号一定要加。

 

show user;看用户,

解锁alter userusername account unlock

connect scott/tiger

 

表空间

表空间就是数据库的逻辑存储空间,开辟了一个空间存放对象。和其他数据库的区别,优化也是通过表空间。表空间由一个或多个数据文件构成,对象什么的都是放到这个文件里的。

表空间分为:永久表空间(表啊,视图),临时表空间(中间过程,结束就释放),UNDO表空间(修改之前的数据)。

 

系统用户级别查看数据字典:descdba_tablespaces,select tablespace_name from dba_tablespaces; //这里能看和系统有关的一些表空间。

 

普通用户的数据字典:descuser_tablespaces   第一项也是表空间,可以select查询,sesc就是describe。如果想要用这个账户查看用户dba的字典,会告诉你这个对象是不存在的。

dba_tablespaces;user_tablespaces;可以看有关的信息

 

temp是默认的临时表空间,如果要使用其他临时表空间就需要自己手动创建。

 

创建表空间

create[temporary]tablespace tablespace_nametempfile|datafile(这里看是创建临时的还是什么) ‘xxx.dbf’size xxx

如果没有指定.dbf路径默认存放到安装目录。

弄好后想看表空间就查看dba_data_files的内容或者临时表空间dba_temp_files,里面有表空间名字(需要用where来定位)和有关这个表空间的其他信息。

很多地方都要大写,不然会出错。如果哪里有问题解决不了一定要大写。

 

修改表空间

创建好表空间之后默认是联机的状态,可以设置为脱机的状态,这时候就不能使用了。

alter tablesapce tablespace_name offline; 查看dba_tablespaces中status就可以查看状态,也要用where。online。

设置只读或者可读写的状态,在线状态才能修改。

alter tablespace tablespace_name READONLY|READ WRITE

 

增加数据文件

alter tablespace tsname add datafile ‘xx.dbf’ size xx;

删除数据文件

alter tablespace tsname drop datafile ‘xxx’;

删除表空间

drop tablespace tsname [including contents]//加了后面这句数据文件也会被删完,就是上面那个.dbf。临时表空间和永久的都是用这句来删除的。

 

存储数据的基本单位,二维结构,行和列组成,行叫记录,列叫域或字段。

列有一样的数据类型,列名唯一,每一行数据不重复//其实好像可以,蛋疼,只是冗余而已。

 

数据类型

字符型:

char(n),nchar(n)。后者是Unicode,存储汉字比较多。前者n最大2000,后者1000

varchar2(n),nvarchar2(n)。n分别最大4000和2000

数值形:

number(p,s)p是有效数字,s是小数点位数。比如number(5,2)。123.45

float(n)存储二进制数据,一般用上者。

日期型:

DATE,从公元前4712年1月1日到公元9999年12月31日,可以精确到秒

timestamp可以精确到秒

其他类型:

blob,存放4g二进制

clob,存放4g字符串

 

创建表

create table table_name(column_namedatatype,…);在一个用户下表名要是唯一的,多个记录用逗号隔开,最后一个不需要逗号。

先考虑好要什么字段。

创建好之后,可以用desc来看看这个表有什么字段。

 

修改表

添加字段:alter tabletb add column_name datatype;

更改字段的数据类型:altertable tb modify column_name datatype;//修改的时候最好没有数据,不然似乎改不了。

删除字段:alter tabletb drop column column_name;似乎直接打个括号也可以。

更改字段名:alter tabletb rename column oldname to newname;

更改表名:renameoldetname to newtname

删除表数据:truncatetable tb;//删除表中的全部数据,比delete快很多。

删除表结构:drop tabletb;

 

添加数据

insert into tb (column1,column2) values (value1,value2);//如果是添加全部字段第一个括号可以省略。想插入时间,推荐可以用sysdate实验 ,这是获得系统时间。添加字符串一定要用单引号。给有默认值的字段添加

 

复制数据

在创建表的时候复制

create table tbnew as selectcoulum1,…|*from tbold;//数据也过来了

在添加的时候复制

insert into tbnew [(column1,…)] selectcolumn1,…|* from tbold;//如果只是复制了部分数据,有默认数据的那些也会自动创建,要注意,新旧两个表的字段类型一定要相匹配。

 

修改数据

update tb set column1=value1,…[where conditions]

 

删除数据

以行为单位:delete fromtb [where conditions];//不加条件也能删除表中的所有数据,但不如truncate效率高。

 

约束

输入的值要满足一定条件,定义规则,哪些一定要输入,输入什么值,什么范围。确保数据的完整性和可靠性。

 

非空约束

创建字段时接not null

或者在修改表的时候altertable tb modify colum_name type not null;要修改掉非空约束,把not null换成null就可以了。

 

主键约束

就是用来确保表数据的唯一性,设置主键约束后自动默认为notnull。

创建字段接primary key(列级约束)

删除主键约束,drop primarykey[cascade];//每个表中只有一个主键约束,直接用这个就干掉了。cascade,如果外键约束和当前主键有关,也一并删掉。

disable|enable constraint constraint_name;

 

下面大部分似乎是针对新建好的一个约束字段,而不是在尾巴后面直接接上primary key的。

表级约束,在创建表的最后constraintconstraint_name primary key(c1,c2…)联合主键(表级约束),中间那个约束名字是任意的,不过最好有提示性。创建好之后,是多个字段不能全部相同,当中有一两个重复的是没有问题的。

有个数据字典user_constraints,可以查询某个表的约束等内容。注意=后面要打上引号,而且要大写。

想在修改的时候直接alter后add那个constraint constraint_name primary key(c1,c2…)就可以了,如果只是给单一字段修改简单modify后面跟上就可以了。

想给主键更改名字,在alter后,rename constraint oname to nname;

禁用约束:alter …disable|enableconstraint constraint_name;//如果禁用后添加了重复数据,再启用就会失败。可以在数据字典user_constraints表中看status状态;

删除约束:ater…dropconstraint constraint_name;

 

默认约束

其实就是在最后面加一个default,没有赋值就默认是那个值。

 

外键约束

涉及两个表

列级约束:

创建表的时候:create tabletb1 (column_name datatype references tb2(column_name),…);//你在表1中创建的这个字段要引用表2的哪个字段。tb1是从表,tb2是主表。最后的那个引用字段必须是主表中的主键,数据类型也必须一样。外键的值必须是主表中相应字段的值或者为null,其他的是不被允许的。

表级约束:

constraint constraint_name foreign key(column_name)references tbname(column_name)[on delete cascade],最后这个就是被引用表删除某个记录的时候,当前表的记录也跟着删除。如果不加上这个,当子表中有相应记录的时候,主表的记录是删不掉的。约束的名字也是要唯一的。在修改表的时候加约束也是用alter …add…

删除外键约束:

禁用:disable|enableconstraint constraint_name;

删除:drop constraintconstraint_name;

 

唯一约束:

唯一约束保证值是唯一的,和主键约束不一样的就是它可以是空的,而且一个表可以设置多个唯一约束,主键约束一个表只能有一个。

create table tbname (column_name typenameunique,…)

修改也是alter然后在尾巴加unique

表级别:添加修改都差不多

…constraint constraint_name unique (c1,c2);

禁用:disable|enableconstraint constraint_name;

删除:dropconstraint constraint_name;//不知道名字可以先查看user_constraints中的相应字段。

 

检查约束:

比如看看字段是不是在一定的范围内。

在创建表中创建:

create table tb(column_name datatypecheck(expression),…);

比如你这里某个字段,agenumber(3) check (age<3);那么输入的age就不能大于3

列级别:…constraintconstraint_name check(expression);//ck开头

如果在修改检查约束的时候,表中原有的数据不符合修改后的表达式,那么就会报错不给你修改//我在这里卡住了一会

修改表中添加也一样。

删除和前面几个一样,如果不知道约束是什么,user_constraints里面有很多状态,比如constraint_type,通过p、c、r之类的来标明是主键约束、检查约束、外键约束等等。

 

查询

别名只是在查询结果中显示,并没有真正更改字段的名字。

select [distinct] c1,…|* from tb [whereconditions]//加上distinct可以去掉重复的行。

更改显示的字段名,col(umn)c1 heading c2;也可以用select ageas 年龄 from tb;

也可以省略as并且多个一起,比如:

selectage 年龄,id 身份 from tb;

更改数据的格式,col(umn)c1 format dataformat;//例如a10,把字符串长度变成10。如果是99.9表明数字最大不超过2位,小数带一位。如果有数字超过就不会输出,像excel一样显示很多####,还可以在前面价格$99.9。

清除掉上面设置的格式。colc1 clear;

 

运算符

算数:+-*/

比较:>,>=,<,<=,=,<>最后这个是不等于

逻辑运算符and,or,not//优先级not,and,or。要先计算比较运算再进行逻辑

 

在查询的时候对某个字段的算数运算并不真正改变它在表空间的值,update才会。

 

模糊查询:

通配符,_代替一个字符 %代替很多个

select *from users where username like‘a%’;

 

范围查询

xxx between …and…//闭合区间 两端都包含

in/not in,select *from users where username in (‘aaa’,’bbb’);

 

排序

select…from…[where] order by c1desc/asc,…//第一个排序条件占主导

 

case..when..

case column_name when value1 thenresult,…[else result] end

例如一个年龄列表查询:

select age,case age when 1 then ‘old’ when2 ‘also_old’ else ‘notold’ end as oldeornot from tb;//as后面是新建列的别名。

 

case when column_name = value1 thenresult1,..[else result]end;

select username,case when salary<800then ‘工资低’ whensalary>5000 then ‘工资高’ end as 工资水平 from users;

 

decode

decode(column_name,value1,result1,…,defaultvalue)

例子:select username,decode(username,’aaa’,’计算机部门’,‘bbb’,’市场部门’,‘其他’)as 部门 from users;

 

1.开启:
   
在运行中输入cmd,进入控制台,lsnrctl start回车,提示启动监听成功后
net start OracleServiceORCL


2
关闭
   
在运行中输入cmd,进入控制台,lsnrctl stop回车,提示启动监听成功后
net stop OracleServiceORCL

你可能感兴趣的:(python3)