oracle入门笔记

进入oracle客户端:运行---->sqlplus    或者使用oracle自带的SQL plus软件.

登陆oracle客户端: conn 用户名/密码;

显示当前用户: show user;

断开当前连接: disc;

.select * from  user_role_privs; 查看当前用户的角色

select name from v$database;  查看数据库

Oracle中常用的数据类型:

 

NUMBER[(precision [, scale])]   NUMBER(p,s)

范围: 1 <= p <=38, -84 <= s <= 127

保存数据范围:-1.0e-130 <= number value < 1.0e+126  

保存在机器内部的范围: 1 ~ 22 bytes

有效位:从左边第一个不为0的数算起的位数。

s > 0

精确到小数点右边s位,并四舍五入。然后检验有效位是否 <= p。

s < 0

精确到小数点左边s位,并四舍五入。然后检验有效位是否 <= p + |s|。

s = 0 等价于NUMBER(p)

此时NUMBER表示整数。

字符串:char,定长,实际内容不足会自动填充.最多2000个字符 查询,存储效率高

varchar2 不定长,所占内存根据内容决定,最多4000个字符

 

表操作:

查询当前用户创建的表:select table_name from user_tables;

查询当前用户创建的视图:select view_name from user_views; 

查询当前用户创建的视图和表:select * from tab ;

查看表结构:desc 表名; 只能看到字段名或者字段名和类型.

添加数据:insert into 表名 values(); 或者insert into 表名(字段名) values(值);

 注意:values的s不能省略.不能使用values(值1),(值2)这种方式.

修改:update 表名 set 字段1=值 [,字段2=值..] where 条件;

查询:select 查询列/* from 表名 where 条件;

删除:delete from 表名 where 条件;

说明:删除和修改,如果没有条件,操作的是所有的数据.

创建表及约束:create table t1(id int primary key,name varchar(20) unique,age int check(age>18 and age<100),sex char(2) default '男',address varchar(40) not null);

注意:oracle中"并且"不能使用&&,可以换成and. User是oracle的关键字,表名不能用user.

在oracle中唯一约束,主键约束,外键约束,检查性约束(强制执行),非空约束,默认约束的效果和mysql相比,效果不变.

|------删除约束:

alter table 表名 drop constraint 约束名称; 可以根据外键匿名删除任何约束

alter table 表名 drop primary key ; #删除主键约束

alter table 表名 drop primary key cascade; #在两张表存在主从关系,带上 cascade,自动删除外键关系

alter table 表名 drop unique (字段名); 删除唯一约束

alter table 表名 modify 字段名 字段类型 null; # 删除非空约束,必须明显指出null

alter table 表名 modify 字段名 字段类型 default null; #删除默认约束,必须明显指出默认值为null

注意:删除外键不能使用mysql的"alter table 表名 drop foreign key 外键匿名;"

|------添加约束:

添加主键约束:alter table 表名modify id int primary key;  通过修改字段类型添加主键约束

             Alter table 表名 add [constraint 约束匿名] primary key (字段名); 添加主键约束

添加唯一约束:alter table表名 modify name varchar(20) unique; 修改字段类型,添加唯一约束

             alter table 表名 add  [constraint 约束匿名]  unique  (字段名);unique后不能有key.

添加外键约束: alter table 表名modify id int [constraint t1_t2]  references t2(num); 通过修改字段类型添加外键约束

alter table 表名 add [constraint 外键匿名] foreign key (外键字段) references 被引用的表的表名(被引用的子段的字段名);

添加非空约束: alter table 表名modify 字段名 字段类型 not null;

注意:通过修改字段类型添加非空约束,如果删除非空约束,可以将"not null"换为"null". 若省去非空说明,则保持原来的约束.

添加检查性约束: alter table 表名modify 字段名 字段类型check(条件); 通过修改字段类型添加检查性约束.

               alter table 表名 add  [constraint 约束匿名] check(条件);

总结:五中约束条件都可以通过修改字段类型的方式,进行添加.

表结构操作:

alter table 旧表名 rename  to 新表名; 或者   rename 表名 to 新名 /*修改表名*/

alter table 表名 modify 字段名 数据类型 /*修改字段的数据类型*/

alter table 表名 rename column 旧列名 to 新列名    /*修改字段名*/

alter table 表名 modify 字段名 default 默认值; /*修改字段的默认值*/

alter table 表名 add 新字段名 数据类型 约束条件 /*添加字段,默认添加在最后一个字段后面.没有after或者first.*/

alter table 表名 drop column 字段名 /*删除字段*/

将外部的sql文件导入到oracle中: start D:\文件名.sql   相当于mysql中的source  D:\文件名.sql

导出数据库/表到外部:

 

等待解决的问题:

问题:mysql中的数据库(test,mydb等),对应oracle中的哪些,如果查看?

Oracle 中的实例:orcl   select name from v$database;

问题: 查询某用户创建的表?

Select table_name from user_tables; //显示当前用户所拥有的所有的表,只返回用户对应方案中的所有表.

Select table_name from all_tables; //显示当前用户可以访问的有的表,返回用户对应方案的所有表.及其他方案中可以访问的表.

Select table_name from dba_tables; //显示所有方案拥有的数据表.要求用户有dba角色或者select any tables系统权限.

问题:Oracle的注释?

-- 注释内容

/* 我是多行注释*/

问题:oracle不能使用user,怎么处理?

User是oracle的关键字,如果必须创建user表,建表和删除表时,表名要加双引号. Create table “user” ....

问题:oracle的主键怎么添加自增长?

Oracle数据库的表的列没有自动增长的功能.可以通过编写序列或者触发器实现.

CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999.INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL

问题: drop table if exists t1;的使用?

在oracle中不能使用if exists.

问题:查看某表的数据类型和约束条件?

查询某表的约束信息

Select table_name,constraint_type,search_condition,constraint_name from user_constraints where table_name='表名';.

constraint_type:约束类型代号(主键,外键,唯一等) search_condition:约束信息内容 constraint_name:外键匿名

 

select column_name,data_type From all_tab_columns where table_name=upper('表名') AND owner=upper('用户名');

 

查询某列的字段类型:

select DATA_TYPE from User_Tab_Columns t where t.column_name=upper('age') and T.TABLE_NAME=upper('表名');

问题:如何查看创建表的语句--show create table 表名; 查看视图的创建: show create view 视图名;

 

附加: 自增长序列

create sequence autoIncrement

increment by 1 --每次增加1

start with 1 -- 从1开始

nomaxvalue -- 没有最大值

nocycle -- 不循环

;

select autoIncrement.nextval from dual;  查询序列中的下一个数

select autoincrement.CURRVAL from dual; 查询序列中的当前数

讲课案例:

表操作使用例子:

Drop table t1;

Drop table t2;

create table t2 (id int primary key,num int unique);

create table t1(id int constraint p_id primary key ,name varchar(20)  constraint u_name

unique,age int  check(age>18 and age<100),sex char(2) default '男',address varchar(40) not null);

查看表的约束条件:Select table_name,constraint_type,search_condition,constraint_name from user_constraints where table_name='T2';

 

posted @ 2018-09-15 11:00  何都督  阅读(253)  评论(0编辑  收藏  举报