图片 11

Oracle DDL 数据定义语言

使用SSMS数据库管理工具修改列

1、连接数据库,打开要修改的数据库,选择数据表-》右键点击-》选择设计。

图片 1

2、在新打开的窗口视图中-》点击要修改的行-》可以修改列名、列类型、是否可空、属性等-》修改完成点击保存按钮(或者ctrl+s)。

图片 2

         例:

2.DDL(data definition language):create,drop,alter,rename to

如果默认值存在

语法:

–第一步判断默认值否存在,如果存在就删除,如果不存在则不删除
if exists (select * from
sys.check_constraints where object_id = object_id(默认值约束名) and
parent_object_id = object_id(表名))
alter table 表名 drop constraint
默认值约束名

–第二步添加默认值

alter table 表名 add constraint  约束名
default 默认值 for 列名;

示例:

–第一步判断约束是否存在,如果存在就删除,如果不存在则不删除
if exists (select * from
sys.check_constraints where object_id = object_id(‘df_h’) AND
parent_object_id = object_id(‘[testss].dbo.[test1]’))
alter table [testss].dbo.[test1] drop
constraint df_h

–第二步添加默认值

alter table [testss].dbo.[test1] add
constraint df_h default 2 for height7;

图片 3

         1.数字类型,可以做所有的数学运算

4.大数据类型
clob character large object 大字符型对象,最大可存4G
blob binary large object 大二进制对象,最大可存4G
注意:大数据类型不支持查看结果

总结

在开发或者生产数据库中,数据列一经建好,不要轻易改动,随意改动可能会引起数据库的级联操作失败和代码错误。

 

              语法:

4.创建表格的第一种方法:
语法:
create table 表名(
列名 数据类型(默认值) 约束,
列名 数据类型(默认值) 约束,
列名 数据类型(默认值) 约束
);

修改列数据类型

语法:alter table 数据库名.dbo.表名 alter
column 列名 类型 [约束];  

示例:alter table [testss].dbo.[test1]
alter column height7 int null;  

图片 4

图片 5

           –修改tbl_user表中password列名为pwd

3.使约束生效
alter table 表名 enable constraint 约束名

使用T-SQL脚本修改列

        

4.使约束失效
alter table 表名 disable constraint 约束名

修改列名

语法:exec sp_rename 
表明.旧列名,新列名; 

示例:exec sp_rename
‘[test1].height6′,’height7’; 

图片 6

图片 7

 

2.字符型,可以做拼接运算
char(20) 定长
varchar2(20) 不定长,表示字符窜最长是20
注意:字符串在数据库中用”

修改列默认值

如果默认值不存在

语法:alter table 数据库名.dbo.表名 add
constraint 约束名 default 默认值 for 列名;

示例:alter table [testss].dbo.[test1]
add constraint df_h default 1 for height7;

图片 8

图片 9

        【
作用:约束表格中是数据,相对于数据类型而言,用来进一步限定表中的数据,使得添加到表中的数据都是合法有效的,符合业务需求的数据,不会出现无效数据】

3.修改列(修改列数据类型和约束)
alter table 表名 modify 原列名 新数据类型 新约束;
例:修改tbl_user表中password列为char(6)默认值‘000000’非空
alter table tbl_user modify password default’000000′ not null;

修改数据列

在开发和生产过程中,列名的拼写错误或者列名的更改是需要操作数据表的,大多数情况下都是不需要修改的.

以下几种情况下我们并不能直接修改数据列:

1、用于索引的列。 
2、用于 CHECK、FOREIGN KEY、UNIQUE 或 PRIMARY KEY 约束的列。 
3、与默认值(由 DEFAULT 关键字定义)相关联的列,或绑定到默认对象的列。 
4、绑定到规则的列。 

              constraints tbl_account_accountNo_un 
unique(accountNo) ,

create table tbl_account (
id number(6),
accountNo number(6) ,
realName varchar2(26) not null ,
password char(6) default ‘000000’,
balance number(10,2),

修改列是否可空

语法:alter table 数据库名.dbo.表名 alter
column 列名 类型 约束;  

示例:alter table [testss].dbo.[test1]
alter column height7 int not null;

图片 10

图片 11

 

create table tbl_account (
id number(6),
accountNo number(6) not null,
realName varchar2(26) not null ,
password char(6) default ‘000000’,
balance number(10,2),

           –约束相关

create table p_emp(
id number(6),
name varchar2(25),
title varchar2(25),
salary number(10,2),
start_date date,
manager_id number(6),

                     alter table 表名 add constraint
表名_列名_nn check (is not null)

–创建用户表(有约束)

           alter table 表名 rename column 原列名
to 新列名;

删除表格(注意约束控制)
基本语法:drop table 表名 [cascade constraints];
注意:cascade
constraints表示连带约束一起删除(暴力删除);如果不添加,当有外键引用,不能删除。
例:

       约束(constraint)

注意:在创建表格时,如果不定义约束的名字,则数据库会给约束提供默认名字,并且把这些内容存储到数据库字典中

   );

数据类型:
1.数字类型,可以做所有的数学运算
number
number(4)代表整数,最大能存9999
number(7,2)代表double类型,整数长度为5,小数位2

                    列名 数据类型(默认值) 约束

约束(constraint)
作用:约束表格中是数据,相对于数据类型而言,用来进一步限定表中的数据,使得添加到表中的数据都是合法有效的,符合业务需求的数据,不会出现无效数据

           create table 新表格名 as select
列,列,列from原表格 where 恒假条件;

4.修改列名
alter table 表名 rename column 原列名 to 新列名;
–修改tbl_user表中password列名为pwd
alter table tbl_user rename column password to pwd;

               id number(6),

2.删除列
alter table 表名 drop column 列名;【注意关键字column】
例:删除tbl_user表中age列
alter table tbl_user drop column age;

        

2.【重点】表级语法添加——先定义列,然后在添加约束
–创建账户表(tbl_account,id,accountNo非空唯一,realName,password六位数/默认值000000,balance不能小于0)

   DTL:数据事务语言

1.SQL分为5大类:
DDL:数据定义语言
DCL:数据控制语言
DML:数据操纵语言
DTL:数据事务语言
DQL:数据查询语言

           primary key                        
PK                                
含义:主键约束,非空唯一(表中最多只能含有一个主键约束)

修改表格:
–列相关
1.添加列
alter table 表名 add 列名 数据类型 [default默认值] 约束;
例:–给tbl_user表添加一列年龄
alter table tbl_user add age number(3) default 18 not null;

         注意:not
null不支持表级语法,只能支持列级语法添加。但是也可以采用check

模拟非空

3.Oracle中的5种约束类型
primary key PK 含义:主键约束,非空唯一(表中最多只能含有一个主键约束)
not null NN 含义:非空
unique UK 含义:唯一
check CK 含义:自定义约束(往往用来定义业务的约束,如分数不能为负)
foreign key FK
含义:外键约束(表示此列的值是引用自己的或其他表的主键)
注意:能够被外键所引用的列,其本身也必须是主键约束或唯一性约束

        

》》》》

               balance number(10,2),

–约束相关
1.添加约束
alter table 表名 add constraint 约束名 约束类型(列名)
注意:如果是添加非空约束,则:
alter table 表名 add constraint 表名_列名_nn check (is not null)

           表名_列名_约束类型缩写;

–复制了某张表格的指定列,构建一张新表格(不拷贝数据,取表结构)
create table 新表格名 as select 列,列,列from原表格 where 恒假条件;
例:创建一张表格,表格中只有s_emp表中的id,first_name,salary三列数据
create table new_emp as select id,first_name,salary from s_emp where
1=2;
注意:此处1=2表示恒false,则数据库不会被拷贝,只能得到一张空表

           alter table 表名 disable constraint 约束名

–创建员工表(自关联)

           create table 新表格名 as select
列,列,列from原表格;

注意:not null不支持表级语法,只能支持列级语法添加。但是也可以采用check
模拟非空
例:
–创建账户表(tbl_account,id,accountNo非空唯一,realName,password六位数/默认值000000,balance不能小于0)

              constraints tbl_account_id_pk  primary key (id),

例:
–创建用户表(无约束)
create table tbl_user(
id number(6),
name varchar2(25),
password varchar2(25)
);

                  
  例:修改tbl_user表中password列为char(6)默认值‘000000’非空

);

           2.删除约束

constraints tbl_account_id_pk primary key (id),
constraints tbl_account_accountNo_ck check (accountNo is not null)
,
constraints tbl_account_accountNo_un unique(accountNo) ,
constraints tbl_account_balance_ck check (balance>0)
);

           alter table 表名 modify
原列名新数据类型新约束;

注意:所有的DDL语句都是自动提交事务的,所以语句是不能回滚的
2.删除约束
alter table 表名 drop constraint 约束名;

 

5.添加约束的2中方法:
1.列级语法添加——边定义,边添加约束
如:创建用户表

  约束名的命名规范:

constraints tbl_account_id_pk i primary key(id),
constraints tbl_account_accountNo_nn unique (accountNo),
constraints tbl_account_balance_ck check (balance>0)
);

                   Timestamp       年月日时分秒,还有小时位,如1.2秒

创建表格分为两个步骤:
a.定义列和数据类型
b.添加约束

         –创建用户表(无约束)

3.日期类型,可以做加减运算
Date 年月日时分秒
Time 时分秒
Timestamp 年月日时分秒,还有小时位,如1.2秒

*             accountNo number(6) not null,*

6.补充:创建表格的第二种方法(根据已经存在的某张表创建一张新表格):
–复制某张表中的指定列,构建一张新的表格(拷贝了数据)
create table 新表格名 as select 列,列,列from原表格;
例:创建一张表格,表格中只有s_emp表中的id,first_name,salary三列数据
create table new_emp as select id,first_name,salary from s_emp;

           create table 表名(

constraint p_emp_id_pk primary key (id),
constraint p_emp_name_ck check(name is not null),
constraint p_emp_title_ck check(title is not null),
constraint p_emp_start_date_ck check(start_date is not null),
constraint p_emp_manager_id_fk foreign key(manager_id) references
primary key(id)

                   varchar2(20)          
    不定长,表示字符窜最长是20

添加约束名的语法:
constraint 约束名 约束类型;
约束名的命名规范:
表名_列名_约束类型缩写;

               accountNo number(6) ,

                   clob character large object     
大字符型对象,最大可存4G

           alter table 表名 drop constraint 约束名;

                   char(20)            定长

           1.添加约束

                     constraint p_emp_name_ck check(name is not
null),

【注意:在创建表格时,如果不定义约束的名字,则数据库会给约束提供默认名字,并且把这些内容存储到数据库字典中】

                    例:–给tbl_user表添加一列年龄

           4.修改列名

       例:

           check                                  CK                  
             
含义:自定义约束(往往用来定义业务的约束,如分数不能为负)             
                  

           );

          
注意:此处1=2表示恒false,则数据库不会被拷贝,只能得到一张空表

                            number(4)       代表整数,最大能存9999

                   【number 】           

          
例:创建一张表格,表格中只有s_emp表中的id,first_name,salary三列数据

           1.添加列

              constraints tbl_account_accountNo_ck  check
(accountNo is not null) ,