oracle的dml、ddl(ppt第二章表)

DDL:数据定义语言,用于创建、修改、删除数据对象。包括create/alter/drop/truncate

create:

create table sc(

name varchar2(10),

id number(4)

)

create table sc2 

    as 

       select name,pno

            from sc

where dept=30;

创建表时名字在前,类型在后,小括号里面是大小。用空格隔开,前面的都要有逗号,最后一个没有逗号。

alter:

删除里面的字段:

alter table sc drop(name);

添加里面的字段:

alter table sc add(name varchar(10));

修改里面的字段:

alter table sc modify ()

修改表,可以删除,可以添加,可以修改。


rename:

rename sc1 to sc;

修改表的名字


truncate:

truncate table sc;

截断表,删除表里的数据,释放里面的空间,不可以回退。

comment:

comment on table sc

is "this is good";

注释可以通过以下方式来看:

all_col_comments

user_col_comments

all_tab_commments

user_tab_comments

DML:数据库操作语句

insert:

insert into sc (id,name)values(1.'张三');

update:

update sc set name='李四‘  where name='张三';

delete:

delete from sc where name='李四';

drop table sys_photo1;如果里面有数据将不能删除。但是用delete sys_photo1;将会将表里面的数据删除,表还在

select:


oracle的里面的数据类型:

字符类型:

char(n):用于标识固定的长度的字符串,当实际数据不足定义长度是,右边自动用空格补全。

varchar(n):可变字符串类型,数据库必须实现的数据类型,可以储存空字符串。

varchar2(n):可变字符串类型,当作为列来使用时,最大长度为4000。当做为变量类型使用时可定义为32767.不可储存空的字符串。

数值类型:

number(m,n):m表示有效数字为多少位,n表示小数位数

日期时间类型:

date:包含year(年),month(月),day(天),hour(小时),minute(分钟),second(秒)

(yyyy表示年份,mm表示月份,dd表示天,hh表示小时,min表示分,ss表示秒)

select to_char(sysdate,'YYYY-MM-DD HH24:MI:SS') from dual;

大对象数据类型:
lob用于储存大数据类型,文本长度冲过4000,二进制文件,最大容量为4000.

blob:用于储存二进制数据(图片文件)

bfile:独立文件的二进制数据


oracle里面的约束类型:

not null非空

unique key唯一

primary key主键

1):直接在后面加上primary key(列级约束)

2):在最后面加上 constraint emp_empno_pk primary key (empno)(表及约束)emp_empno_pk相当于重命名,后面是主键的名称

foreign key外键

check:表示输入的数据之只能是check约束里面的数据类型

create table sc(

id int,

name varchar2(10),

sex varchar2(10) check (sex in ('男‘,'女'))

)

数据库本身没有int,integer和long但是sql里面有,说以oracle也是兼容的。

删除表:

删除表时要先删除外键约束才能删除表。drop table sc cascade constraints;

查找当前用户的所有表:

select table_name from user_tables;

select * from all_tables where owner='SCOTT';用户名必须大写

select * from user_tables ;后面不能有用户名了,因为user已经是用户了

select * from dba_tables;不能再下面的用户使用

查找一张表的所有列名:
select column_name from user_table_columnwhere table_name='表名' order by column_id

(all_table_column)   (dba_table_column)

数字和空值相加是空值。如select sum(sal)+sum(comm) from emp where job='' or ename='';如果comm是null,计算结果就会为空但是加上nvl就会解决这一问题。 select sum(sal)+sum(nvl(comm,0)) from emop where job='' or ename='';相当于把空值用0替换。此计算结果为一个数字,而不是想象中的几个数字,几个数字要去掉sum求和,就会把几个值给显现出来。就和汉族和回族女孩的信息一样。

去掉sum后就会显示出sal和comm的求和的几条数据。也可以用sum但后面要加上group by ename。但这样感觉逻辑上怪怪的,因为sum指的是所有的求和。

select a.ename 员工名字,b.ename 上级名字 from emp a,emp b where a.mgr=b.empno(+);查询员工名字和上级名字,后面加上(+)表示最后一个员工也会显示出来

select b.ename 员工姓名,a.ename 直接上级 from (select empno, ename from emp) a, (select ename,mgr from emp) b where a.empno=b.mgr;和上面一个意思是一样的。

查找最晚入职的员工 select * from emp where hiredate=(select max(hiredate) from emp);   select * from emp order by hiredate desc limit 0,1;如果是m,n从m开始取m条数据,如果是1就是从零开始取一条数据

你可能感兴趣的:(oracle的dml、ddl(ppt第二章表))