SQL学习笔记1.2——DDL

2  数据定义语言  DDL

    数据定义语言(Data Definition Language,DDL)用于定义数据库的结构,比如创建、修改或删除数据库对象。

    注意:rollback回滚对于DDL无效。

 

    Oracle中查看用户已创建的表为:

select * from user_tables

    Oracle中查看用户定义的各种数据库对象:

select distinct object_type
from user_objects

    Oracle中查看用户定义的表、视图、同义词和序列:

select *
from user_catalog

2.1  创建表  CREATE TABLE

        表名和列名命名规则:

                (1)必须以字母开头;

                (2)必须在1-30个字符之间;

                (3)必须只能包含A-Z,a-z,0-9,_,$,和#;

                (4)必须不能和用户定义的其他对象重名;

                (5)必须不能是Oracle的保留字。

        例:$abc,2abc,_abc,a-b,a#d中正确的有:a#d。

2.1.1  创建表的第一种方式

create table 表名字 ( 列名1 该列类型,
                     列名2 该列类型,
                     列名3 该列类型,
                     ……
                    )

例: 

create table employees(
                        employee_id NUMBER(6)
                        first_name VARCHAR2(20)Y
                        last_name VARCHAR2(25)
                        email VARCHAR2(25)
                        phone_number VARCHAR2(20)Y
                        hire_date DATE 
                        job_id VARCHAR2(10)
                        salary NUMBER(8,2)Y
                        commission_pct NUMBER(2,2)Y
                        manager_id NUMBER(6)Y
                        department_id NUMBER(4)Y
                       )

        列中salary NUMBER(8,2)表示该数字型一共8位,其中有2位是小数。

2.1.2  创建表的第二种方式(依托于现有的表)

        依托于现有的表,不仅导入原有表的结构,同时导入原有表的数据。

create table 表名字
as
select 列名1,列名2,列名3,列名4
from 已有的表

例1:利用子查询创建表myemp,该表中包含employees表的employee_id(id),last_name(name),salary(sal),email字段。

create table myemp
as
select employee_id id,last_name name,salary sal,email
from employees

例2:若对于现有表的数据有所筛选,可以添加过滤条件。

create table emp2
as
select employee_id id,last_name name,hire_date,salary
from employees
where department_id = 50

例3:若只想要表结构,不想要表中数据,可以添加逻辑非的过滤条件。

create table emp2
as
select employee_id id,last_name name,hire_date,salary
from employees
where 1=2

2.2  修改表  ALTER TABLE

        使用alter table语句可以:

        (1)追加新的列。

alter table 表名字
add (新列名 新列的类型)

例:

alter table employees
add (email varchar2(20))

        (2)修改现有的列的类型,注意此时该列没有数据,若有数据则修改不成功。

alter table 表名字
modify (列名 列的新类型)

        (3)为新追加的列定义默认值,关键字:default。

alter table 表名字
modify (列名 列的类型 default 默认值)

        (4)删除一个列。

alter table 表名字
drop column 列名

例:

alter table employees
drop column email

        (5)重命名表的一个列名。

alter table 表名字
rename column 旧列名 to 新列名

例:

alter table employees
rename column last_name to name1

         (6)将某列设置为不可用。

alter table 表名
set unused column 列名

         (7)删除不可用的列。

alter table 表名
drop unused columns

2.3  删除表  DROP TABLE 

        数据和结构都被删除,所有正在运行的相关事务被提交;所有相关索引被删除。

drop table 表名

2.4  清空表 truncate table

        删除表中所有数据,释放表的存储空间。

truncate table 表名

2.5  改变对象的名称

rename 对象旧名 to 对象新名

2.6  创建索引  CREATE INDEX

2.7  删除索引  DROP INDEX

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值