当前位置:主页 > 查看内容

Oracle 的表以及表基本操作

发布时间:2021-08-03 00:00| 位朋友查看

简介:文章目录 一、表的概念 1.表的列 2.表的行 二、创建表 1.创建表命令 2.创建超女表 3.创建表的主键 3.1在create table时指定主键 3.2修改已经建好的表增加主键约束 三、表记录的增删查改 1.向表中插入记录 2.查询表中的记录 2.1用 select 命令从表中查询记录……

一、表的概念

??数据库是“按照数据结构来组织、存储和管理数据的仓库”。那么数据库如何存储数据?

??表是数据库最基本的逻辑结构,一切数据都存放在表中,其他的数据库对象(索引、视图、同义词等)都是为了方便地操作表中的数据。这个表就是我们在生活中常见的二维表,由行和列组成。Oracle数据库是由若干个表组成。

编号姓名召唤师分类颜值身高体重出生日期备注
01程咬金坦克赛潘安18090.52000-01-01 01:12:35很肉,大招可回血,峡谷中的搅屎棍
02妲己法师祸国殃民17050.51998-03-03 10:50:33爆发高,草丛三婊之一,在草丛令人闻风丧胆
03亚瑟战士帅气18570.61990-03-03 10:54:33图标上的那个男人,谁也无法撼动他的地位

1.表的列

??(1)表的结构是由列组成,习惯上把列也称之为字段,字段的基本属性如下:

1)字段名:字段的名称。

2)数据类型:该字段存放数据的类型和长度。

3)是否允许空值:该字段是否为必填,如果不是必填,表示可以为空。

??(2)列的数据类型,表的每一个列都有它的数据类型,常用的数据类型,就是上篇文章所写的:

1)字符串类型:char 和 varchar2

2)数字类型:number( L, P) ,L 表示数字的长度,P表示精度也就是小数点后面的位数;P为 0 时,表示整数。

3)时间、日期类型:data

4)clob 类型:存放单字节字符串或多字节字符数据,如文本文件、XML文件

5)blob 类型:存放非结构化的二进制数据,如图片、音频、视频、office文档等

6)rowid 类型:存放表中记录在数据库中的物理地址

2.表的行

??表中的数据是由行组成的,每一行就是一条数据,也称之为记录,数据越多,记录就越多。

二、创建表

1.创建表命令

??Oracle数据库用 create table + 表名命令来创建表,建表语法如下

create table 表名
(
   字段名1 数据类型 null or not null,
   字段名2 数据类型 null or not null,
   字段名3 数据类型 null or not null,
   .......
   字段名n 数据类型 null or not null,
);

??表名是标识符,从语法来说表名只要符合Oracle的规定就行了,但一般来说使用的表名尽量让使得可读性比较好,尽量有意义。

2.创建超女表

create table t_girl
(
	id   char(4)          not null,   -- 编号
	name varchar2(30)     not null,   -- 姓名
	yz   varchar2(30)     null,       -- 颜值
	sc   varchar2(20)     null,       -- 身材
	weight number(4,1)    not null,    -- 体重
	height number(3)      not null,    -- 身高
	birthdat date         not null ,   -- 生日
	memo   varchar2(300)  null ,    -- 备注
	primary key(id)
);

??1)在Oracle数据库的SQL命令中,关键字、表名和字段名都不区分大小写,CREATE和create没有区别,表名T_GIRL和t_girl也没有区别,字段名ID和id也没有区别;

??2)两根短线“–”是说明文字,就像C/C++语言中的“//”。

3.创建表的主键

??主键一般指主关键字。主关键字(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。

??在生活中很多数据具有唯一的特性,例如身份证号码,在国家人口基本信息表中,一定不会存在多个人用同一个身份证号码的情况,再例如手机号码、QQ号码、银行帐号等等,还有学生管理系统,学生的年级、班级和学号三个字段组合起来是唯一的标识。

??如果表中一个字段或多个字段组合起来的值是唯一的,就可以作为表的主键,在创建或修改表时用primay key关键字来指定主键。一个表只能有一个主键,而且组成主键的每个字段值都不能为空。

??主键的作用:

??1)体现数据结构设计的合理性。

??2)提升数据操作的速度。

??3)保证数据的完整性,在表中添加或修改记录时,数据库会检查该记录主键的值,不允许与其它记录主键的值重复,这种做法有个专业的名词:主键约束。

??例如超女基本信息表,编号的字段名是id,在超女选秀活动中,每个超女的编号肯定是唯一的,不可能存在两个编号相同的超女,否则会引起混乱,我们可以把id字段设置为T_GIRL表的主键,后面的工作交给数据库,如果试图往表中插入多条id相同的记录,数据库将拒绝。

??例如:
??表格中已经有 ID为 010101 的记录
在这里插入图片描述
??我再插入一条ID为 010101 的记录,会报错
在这里插入图片描述

在这里插入图片描述

??指定表的主建有两种方法。

3.1在create table时指定主键

create table Tt_girl
(
  id        char(4)         not null,   -- 编号
  name      varchar2(30)    not null,   -- 姓名
  yz        varchar2(20)        null,   -- 颜值
  sc        varchar2(20)        null,   -- 身材
  weight    number(4,1)     not null,   -- 体重
  height    number(3)       not null,   -- 身高
  birthday  date            not null,   -- 出生时间
  memo      varchar2(1000)      null,   -- 备注
  primary key(id)                       -- 指定id为表的主键
);

3.2修改已经建好的表,增加主键约束

alter table 表名 add constraint 主键名 primary key(字段名1,字段名2,......字段名n);

例如:

alter table T_GIRL add constraint PK_GIRL primary key(id);

??在Oracle数据库中,虽然主键不是必需的,但是最好为每个表都设置一个主键,不管是单字段主键还是多字段主键(复合主键),它的存在代表了表结构的完整性,主键还可以用于其他表的外键关联。

三、表记录的增删查改

1.向表中插入记录

??用 insert into 命令向表中插入记录

insert into 表名(字段名1,字段名2,..... 字段名n) values(字段名1的值,字段名2的值,..... 字段名n的值);

??注意:表名后面的字段名列表与values 后面字段值列表必须一一对应。一个萝卜对应一个坑,别填错了。

例如:

insert into T_GIRL(id,name,yz,birthday,sc,weight,height,memo)
  values('0101','西施','漂亮',to_date('2000-01-01 01:12:35','yyyy-mm-dd hh24:mi:ss'),
         '火辣',48.5,170,'这是一个非常漂亮姑娘,老公是夫差,男朋友是范蠡。');
insert into T_GIRL(id,name,yz,birthday,sc,weight,height,memo)
  values('0102','貂禅','漂亮',to_date('1997-08-02 12:20:38','yyyy-mm-dd hh24:mi:ss'),
         '苗条',45.2,168,'王允真不是男人,干不过董卓就把美人往火坑里推,千古罪人啊。');
insert into T_GIRL(id,name,yz,birthday,sc,weight,height,memo)
  values('0103','妲已','漂亮',to_date('1998-03-03 10:50:33','yyyy-mm-dd hh24:mi:ss'),
         '火辣',53.6,172,'如果商真的因我而亡,您们男人做什么去了?');
insert into T_GIRL(id,name,yz,birthday,sc,weight,height,memo)
  values('0104','芙蓉姐姐','猪扒',to_date('1980-05-05 10:11:55','yyyy-mm-dd hh24:mi:ss'),
         '膘肥体壮',85.8,166,'如果不努力学习技术,将来就会娶个芙蓉姐姐,哼哼。');
insert into T_GIRL(id,name,yz,birthday,sc,weight,height,memo)
  values('0105','神密猫女',null,to_date('1989-12-08 12:10:35','yyyy-mm-dd hh24:mi:ss'),
         null,48.5,171,'不知道是什么人,她脸上有一个%符号,很神密。');

??在insert 语句中,字段的值如果是字符串,要yoga单引号包含起来,日期字段要用 to_date 函数转换,数组直接书写。

??插入数据的SQL语句还有一种写法,如下:

insert into 表名 values(字段1的值,字段2的值,....字段n的值);

??这种写法省略了字段名列表,但是这种写法一定不能出现程序中,因为只要表结构发生了改变,或字段的位置改变,SQL语句就会出错。

2.查询表中的记录

2.1用 select 命令从表中查询记录,常用的语法:

select * from 表名;
??查询这个表中的所以记录
在这里插入图片描述

select 字段名1,字段名2,…字段名n from 表名 where 条件1 and 条件2 …条件n;

??从指定的表中查询满足条件的记录的指定字段名。这个查询只展示那些满足条件的记录的字段
在这里插入图片描述

select * from 表名 where 条件1 and 条件2 …条件n;
??从表中查询所有满足条件的记录
在这里插入图片描述

2.2 条件中的字段值区分大小写

关键字不区分大小,但是字段中的值区分大小写。

查询条件为 job=‘SALESMAN’,job为字段名关键字可以不区分大小写
在这里插入图片描述

但是字段值要区分大小写,
在这里插入图片描述

2.3 查出的记录排序

常见排序:

select * from 表名 order by 排序遵循字段名1 排序规则1,排序遵循字段名2 排序规则2;

缺省是升序,降序是 desc;

(1)单一排序遵循字段名
例如:
select * from emp order by deptno;
按照 deptno 升序排序
在这里插入图片描述
(2)多排序遵循字段名
这是先按第一个字段名排序,然后第一个字段名相同的记录按第二个字段名排序

在这里插入图片描述

2.4 to_char()

to_char() j将日期类型数据转换为字符串型数据,并且可以灵活选择多种形式。

(1)查系统时间

select sysdate from dual;
在这里插入图片描述

(2)灵活选择多种时间格式

1) select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual; – 转换为字符串的格式,并且可以灵活使用 to_char()这个函数,指定时间格式
在这里插入图片描述

2)select to_char(sysdate,‘yyyy-mm-dd hh24’) from dual;
在这里插入图片描述

3)select to_char(sysdate,‘yyyy-mm-dd hh24:mi’) from dual;

在这里插入图片描述

3. 修改表中的记录

用 update 命令修改表中的记录,语法如下:

update 表名 set 字段名1=值1,字段名2=值2,…字段名n=值n where 条件1 and 条件2 … 条件n;

在set关键字之后把需要修改的字段名和新的值一一列出来。

(1)修改一条记录的某个字段值

没有修改
在这里插入图片描述
修改后
在这里插入图片描述

(2)where关键字后面是条件表达式,如果没有条件表达式,就会更新表中全部的记录。

没有执行update emp set sal=8888;
在这里插入图片描述

执行了 update emp set sal=8888;
在这里插入图片描述

4.删除表中的记录

delete命令用于删除表中的记录,语法如下:

(1)删除符合条件的一条记录delete from 表名 where 条件1 and 条件2 … 条件n;

在这里插入图片描述
执行删除,yz字段等于“漂亮”的记录
在这里插入图片描述

where关键字后面是条件表达式,如果没有条件表达式,就删除表中全部的记录。

(2)一次删除多条记录

delete from 表名 where 字段1 in(记录1对应的字段1的值,记录2对应的字段1的值,…记录n对应的字段1的值);

现在有3条记录
在这里插入图片描述

执行了 delete t_girl where id in(‘1’,‘2’);
在这里插入图片描述

四、修改表结构

在这里插入图片描述
Oracle 修改表的命令时 alter table 。

1.增加字段

语法:
alter table 表名 add 字段名 数据类型 其他选项;

(1)原始的表的字段
在这里插入图片描述
(2)执行 alter table t_girl add address varchar2(50);

表格中多了address这个字段
在这里插入图片描述

2.修改字段的属性

语法:

alter table 表名 modify 字段名 数据类型 其它选项;

修改字段属性的时候要注意一个问题,如果表中已存在数据,修改可能会失败,包括但不限于以下的情况:

1)把字段由null改为not null时,表中记录存在null的情况。

2)把字段的取值范围由较大(例如number(10))改较小(例如number(5)),表中记录存在大于较小取值范围的情况,例如已经存在123456的值,如果把数据类型改为number(5),无法存放123456。

3)把字段的数据类型时,表中存在记录并且新旧数据类型不兼容的情况。例如原来的数据类型是varchar2(10),表中存在记录的值是’freecplus’,如果要修改为number(10),Oracle无法把’freecplus’转换为number(10)。

3. 修改字段名

语法:

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

4. 删除字段

语法:

alter table 表名 dorp column 字段名;

五、修改表名,删除表

1.修改表名

语法:

alter table 表名 rename to 新表名;

2.删除表

语法:

drop table 表名;

;原文链接:https://blog.csdn.net/qq_43403759/article/details/115750608
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐