数据库讲义 __【DDL 和 DML】

重点解释:DDL:DDL语句用于定义和管理数据库中的对象。如:Create、Alter、Drop

                  DML:(Date Manipulation Language)数据库操纵语言命令使用户能够查询数                            据库以及操作已有数据库中的数据。如:Insert、Delete、Update、Select                          等都是DML

【【  表的基本操作  】】

1、表有名称。

2、表由行和列组成

3、表是存放数据的最基本对象

4、我们将一般的表叫做 heap table(堆表),其含义为杂乱无章的存储数据,堆表是数               据库的重要组织形式。它有别于索引组织表和 cluster 表。

【【  表的命名规则  】】

1、标准 ASCII 码可以描述

2、字母开头

3、30 个字母内

4、不能是保留字

5、可以包含大小写字母、数字、_、$、#

6、不能和所属用户的其它同名称域的对象重名。不同名称域的对象可以重名。例如有       一个视图是 t1,就不能有一个表的名称是 t1,因为当你 select * from t1;的时候,数据库   不知道你查询的哪个,存在两意性。但是表可以和索引重名,因为这样不会影响数据库   的判断。不存在两意性。千万不要使用汉语做表和列的名称,因为汉语是 ascii 码所不   能描述的,ORACLE的核心是 ASCII 编写的,你使用汉语只是一时痛快,后患无穷。

【【  数据字典  】】

  1. 查出当前用户所有的对象,不包含自己创建的public

Select  object_name, object_type  from  user_objects;

  1. 查出自己的表,自己的权利,自己拥有的表

Select  table_name  from  user_tables;

  1. tab 你所拥有的表和视图      Select  *  from  tab;

实验18:建立简单的表,并对表进行简单的ddl的操作

【【  Create table 语句建立表  】】                       【【  常见的数据类型  】】

1、要指明表的名称                                              1、char(n) 定长、字符

2、列的名称                                                         2、varchar2(n)变长、最大4000

3、列的数据类型                                                  3、number(p,s)  数字型

4、列的宽度                                                         4、Date  日期

5、是否有默认值                                                  5、Lone   长整型

6、Lob

7、raw

  1. 【建立表的SQL】

Create table t1       --创建名字为t1的表

(name char(8),  --名字

Salary number(5) default 0,  --工资,默认为0

Content char(4 char),    --职位

Hiredate date );     --入职时间

其中 name 为 8 个字节,content 为 4 个字

描述表的结构

dese  t1

            Name                                 Null?                    Type           

Name                                                             char(8)

Salary                                                             number(5)

Content                                                           char(4  char)

Hiredate                                                          date

  1. 【在现有的表上加表】

Create  table  t2  as  select  ename  name, sal  salary  from  emp;

当 t2 诞生时就会有子查询中所查出的数据。如果想改变列的名称,请用别名

  1. 【如果不要数据,只要表结构,需要加一个假条件】

Create  table  t3 (c1,c2,c3)  as  Select  ename, empno, sal  from  emp  where  9=1;

  1. 【修改表结构】

1、如果列为 null,可以随便修改列的类型和宽度。

2、如果有数据,修改会受到限制。但不会破坏数据。

3、如果不改变数据类型,只改变宽度的话加大是可以的。

Alter  table  t1  modify (name  char (4));

Alter  table  t2  modify (name  char (8));

  1. 【修改表的名称】  

rename t1 to t_1;

必须是表的 owner 才可以修改表名称 修改列的名称(10g 才可以)

Alter  table  t3  rename  column  c1  to  name;

  1. 【表注释】

Comment  on  table  emp  is  'employee  table';

select  COMMENTS  from  user_tab_comments  where  table_name = 'EMP'

  1. 【列注释】

Comment  on  column  epm.sal  is ‘员工工资’;

Select  comments  from  user_col_comments

Where  table_name = 'EMP'  and  column_name = 'SAL'

  1. 【丢弃表】

SQL >  Select  *  from  tab;

    TNAME                                                  TABTYPE            CLUSTERID

         t1                                                        TABLE

         t2                                                        TABLE

SQL >  Drop table t2

此时表没有真的删除,目前只是改了一个名字

SQL >  Select  *  from  tab;

    TNAME                                                  TABTYPE            CLUSTERID

        t1                                                          TABLE

      BIN$9WMmfz1CRnqF6c5/hfJmaA==$0     TABLE

  1. 【显示回收站的信息】

SQL >  show recyclebin

Original Name                                 Recyclebin Name                                             object Type Drop Time

        T2                        BIN$9WMmfz1CRnqF6c5/hfJmaA==$0 TABLE                     2016-07-01:17:13:00

10、【将回收站的表还原】

FLASHBACK TABLE t2 TO BEFORE DROP;

11、【还原表的同时修改表的名称】

FLASHBACK TABLE T2 TO BEFORE DROP RENAME TO TT2;

12、【清空回收站内指定的表】

PURGE TABLE T2;

13、【清除当前用户的回收站,不会影响其它用户的回收站】

PURGE RECYCLEBIN;

绕过回收站,彻底的删除表,在 10G 前是没有回收站的,就是彻底的删除。回收站内没有的表是不容易恢复的,我只能取备份来恢复了。

Drop table t2 PURGE;

控制回收站的参数是recyclebin=on,生产中一定要设置为off,因为好多的程序是9i 下开发的,drop table 的时候没有加 purge,结果是删除都去了回收站,后果是什么,当 drop table

很多的时候,我们浪费了很多的空间。有一个客户说他的 system 表空间达到 30g 了,为什么?我告诉他的第一句话是 select count(*) from dba_objects;他查询后说有 80 万个对

象,为什么?因为 system 表空间存储的是对象的信息,正常应该小于 1g,如果很大,一定是对象多了。原因是程序每天建立几百个临时表,然后删除。都去了回收站!灾难呀。

 

【【  DML数据库操作语言】】

1、从无到有 insert  into

2、数据变化 update  set

3、删除数据 delete  where

4、表的融合 merge  into

实验19DML语句,插入、修改、删除表的数据

  1. 【insert into语句】

insert  into  t1 (c1, c2, c3)  values (v1, v2, v3)

【解释】:c1、c2、c3...是表的字段名

 v1、v2、v3...是要插入的数据。切记String类型的要加单引号‘’

1、要点关键字写全,列的个数和数据类型要匹配。这种语法每次只能插入一行。

2、可以使用函数

Insert into t1(c2) values(sysdate);

将当前的日期插入

 

2、 【隐式插入null】

在插入中没有列出的列,就会被插入 null,如果该列有 default 值,那么就插如默认值。

SQL >  insert  into  dept (deptno)  values (50) ;

其中 dname, loc 没有说明,都为 null。 显式插入 null 明确的写出该列的值为 null

SQL >  insert  into  dept  values (60, null, null );

SQL >  insert  into  dept (loc , dname , deptno)  values (null, null, 70)

  1. 【日期和字符串】

插入日期格式非常敏感,当插入的列为日期时,最好强制转化为日期类型,默认的转换   在环境变化的时候会报错。

SQL >  insert  into  t3 (hiredate)  values (to_date ('080599 ' , 'mmddrr' );

字符串大小写敏感

SQL >  insert  into  t2 (c1)  values ('BEIJING ');

SQL >  insert  into  t2 (c1)  values ('beijing ');

  1. 【子查询插入】

不加 values 关键字,一次可以插入多行,列的类型和位置要匹配

SQL >  insert  into  d1  select  *  from  dept;

SQL >  insert  into  emp2  select  *  from  emp  where  deptno = 30;

  1. 【update语句】修改表中的数据

SQL >  update  emp  set  sal = sal + 1;

SQL >  update  emp  set  sal = 2000  where  empno = 7900;

SQL >  update  emp  set  comm = null  where  deptno = 30;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值