表是oracle数据库最基本的对象 在oracle数据库中,存储用户数据可以使用普通表,分区表,索引表,簇表。 sql 数据库中,存储用户数据可以 DDL: 1 /* 2 建表格式 3 create table [schema.]table_name 4 ( 5 column_name datatype [default expr] 6 [,……] 7 ); 8 */ 9 10 create table dept01 11 ( 12 dno number(2), 13 name varchar2(10), 14 loc varchar2(20)default '呼和浩特' 15 ); 16 17 18 insert into dept01(dno,name) 19 values(10,'技术处'); 20 21 select * from dept01; 22 23 /* 24 增加列: 25 alter table table_name add 26 ( 27 column datatype [default expr] 28 [,column datatype ……] 29 ); 30 */ 31 32 alter table dept01 add 33 ( 34 eee number(4) 35 ); 36 37 /* 38 修改列定义: 39 alter table table_name modify 40 ( 41 column datatype [default expr] 42 [,column datatype ……] 43 ); 44 */ 45 alter table dept01 modify 46 ( 47 eee varchar2(15) default 'break' 48 ); 49 50 51 /* 52 删除列: 53 alter table table_name drop (column); 54 */ 55 56 alter table dept01 drop column eee; 57 58 /* 59 修改列名 60 alter table table_name rename column column_name to new_column_name; 61 */ 62 63 alter table dept01 rename column eee to aaa; 64 65 /* 66 修改表名: 67 rename object_name to new_object_name; 68 */ 69 70 rename dept01 to deptt; 71 72 73 select *from deptt; 74 75 76 77 /* 78 增加注释 79 comment on table table_name is 'text'; 80 comment on column table_name.column is 'text'; 81 */ 82 83 comment on table deptt is '系别名'; 84 85 comment on column deptt.name is '名字'; 86 87 ----------------------------------------------------------- 88 /*截断表和删除表 89 */ 90 ----截断表格式:(删除所有数据,也可以用delete 不同点是delete 可以回退,这个不可以) 91 truncate table table_name; 92 93 执行如下: 94 truncate table deptt; 95 96 ----删除表 97 drop table table_name[cascade constraints [purge; 98 --cascade constraints用于指定级联删除从表的外部键约束,purge用于指定彻底删除表,即当删除主表时,必须指定cascade constraints子句 99 drop table deptt; 100 101 102 ----恢复被删除表 103 --当执行drop table 语句删除表时,oracle会将删除表存放到数据库回收站,从10g开始,使用flashback table可以快速恢复被删除表 104 --语法如下: 105 flashback table table_name to before drop; 106 107 flashback table deptt to before drop; 108 109 110 select * from deptt; 111 ---------------------------------------------- 112 113 --显示表信息 114 user_tables 115 --该数据字典视图用于显示当前用户的所有表信息 116 117 --select deptt from user_tables; 118 119 --user_objects该数据字典视图用于显示当前用户的所有数据库对象 120 121 --user_tab_comments该数据字典用于显示当前用户所有表的注释 122 123 --user_col_comments用于显示当前用户所有表列的注释 124 125 126 127 --------------------------------------------------约束---------------------------------------------- 128 129 /* 130 约束包括not null ,unique, primary key , foreign key 以及 check 131 1) not null:用于确保列不能为null 132 133 2) unique(唯一约束):用于唯一地标识列的数据。默认情况下oracle会自动基于唯一约束死建立唯一索引,并且索引名与约束名完全一致 134 135 3) primary key(主键约束):用于唯一地标识表行的数据,当定义主键约束之后,主键约束列的列值不仅不能重复,而且也不能为null 136 137 4) foreign key(外部键约束):用于定义主从表之间的关系。外部键约束要定义在从表上,但主表必须具有主键约束或唯一约束。 138 当定义了外部键约束之后,要求外部键列的数据必须在主表键列中存在,或者为null。 139 140 5) check(检查约束):用于强制表行数据必须要满足的条件。 141 */ 142 143 144 ---------------------------------------------- 145 146 /* 147 定义约束 148 149 create table[schema.]table_name 150 ( 151 column_name datatype [default expr] [column_constraint], 152 …… 153 [table_constraint][,……] 154 ); 155 列级约束: 156 column [constraint constraint_name] constraint_type 157 表级约束: 158 column,……, 159 [constraint constraint_name] constraint_type 160 (column, ...) 161 */ 162 163 --!)定义not null约束 164 create table emp01 165 ( 166 eno int not null, 167 name varchar2(10) constraint nn_name not null, 168 salary number(6,2) 169 ); 170 --正确如下: 171 insert into emp01 172 values(1,'aa',1000); 173 174 --有错 175 insert into emp01 176 values(1,null,1000); 177 178 179 ----------------------------------------------------- 180 181 --2)定义unique约束 182 create table emp02 183 ( 184 eno int, 185 name varchar2(10), 186 salary number(6,2), 187 constraint u_name unique(name) 188 ); 189 190 insert into emp02 191 values(1,'scott',1000); 192 insert into emp02 193 values(2,'scott',1000); 194 --不能重新插入,用于唯一标示 195 ---------------------------------------------------- 196 197 --3)定义primary key 约束 198 create table dept04 199 ( 200 dno int primary key, 201 dname varchar2(10), 202 loc varchar2(20) 203 ); 204 205 insert into dept04 206 values(1,'sales','dallas'); 207 insert into dept04 208 values(1,'admin','dallas'); 209 ---插入有错,主键不能重复 210 211 drop table dept04; 212 ----------------------------------------------------------- 213 --4)定义foreign key约束 214 215 create table emp04 216 ( 217 eno int , 218 name varchar2(10), 219 salary number(6,2), 220 dno int constraint ck_dno references dept04(dno) 221 ); 222 223 insert into emp04 224 values(111,'scott',1000,2); 225 insert into emp04 226 values(111,'scott',1000,2); 227 ---插入出错,违反完整约束条件 228 229 --------------------------------------------------------- 230 231 --5)定义check约束 232 233 create table emp05 234 ( 235 eno int, 236 name varchar2(10), 237 salary number(6,2), 238 check(salary between 1000 and 5000) 239 ); 240 241 insert into emp05 242 values(1111,'scott',800); 243 --违反条件约束 244 245 -------------------------------------------------------- 246 247 --6) 定义复合约束 248 249 create table item 250 ( 251 order_id number(3), 252 item_id number(3), 253 product varchar2(20), 254 primary key(order_id,item_id) 255 ); 256 257 ---------------------维护约束---------------------------------- 258 259 --1)增加约束 260 /* 261 如果增加unique, primary key, foreign key,和check约束,那必须使用alter table 语句的add子句 262 如果增加not null约束,那么必须使用alter table语句的modify子句。 263 */ 264 265 alter table table add[constraint conatraint_name 266 constraint_type (column,...); 267 268 alter table table modify column 269 [constraint constraint_name not null; 270 271 ----1增加not null约束 272 alter table emp02 modify name not null; 273 274 ----2增加unique约束 275 alter table emp04 add constraint u_emp04 unique(name); 276 277 ----3增加primary key约束 278 alter table dept01 add primary key(dno); 279 280 ----4增加foreign key约束 281 alter table emp01 add dno number(2) references dept01(dno); 282 ----------------------------------------------------------------------------------------------------------------------------------- 283 284 select * from emp01; 285 286 select * from dept01; 287 288 ----5增加check约束 289 alter table emp01 add check(salary between 800 and 5000); 290 291 292 --2)修改约束名 293 --格式如下: 294 alter table table rename constraint old_constraint_name 295 to new_constraint_name; 296 297 --3)删除约束 298 299 --格式如下: 300 alter table table drop 301 constraint constraint_name | primary key [cascade; 302 303 --4)禁止约束 304 305 --格式如下: 306 alter table table disable constraint constraint_name [cascade; 307 308 --5激活约束 309 310 --格式如下: 311 alter table table enable constraint constraint_name; 312 313 -------------------------------------------------------------------- 314 315 --显示约束信息 316 317 /* 318 1,user_constraints :存在于dd之中,可以显示当前用户的所有约束信息 319 320 2,user_cons_columns: 用于显示当前用户约束所对应的表列 321 322 */ |
oracle中常用的对象
最新推荐文章于 2022-03-18 08:47:04 发布