Oracle表创建,表连接,及解题思路

数据类型

数字:number、number(n)、number(n,p) 字符:char(n)--存储定长字符串,最多2000个字节;varchar2(n)--存储变长字符串,最多4000个字节 日期:date--精确到秒;timestamp--精确到毫秒

表:table,

表是由列组成,一张表至少包含一个列


表创建

create table 表名 ( 列名 数据类型, 列2 数据类型 )


表名和列名最多为30个字节,只能由数字字母下划线$#等组成,字母下划线开始,通常t_开始

用户表(姓名、性别、出生日期、电话) create table t_user ( name varchar2(20), gender char(2), birth_date date, tel number )

往表中写入数据

insert into 表名(列名,列名2………) values(值1,值2……);

  • 值的个数与列的个数一致(逗号的个数一样),且对应值与列的类型一致

  • insert into语句必须要commit后才能被其他的会话可见,否则只能当前会话可见

  • commit--提交

  • rollback--回滚

更新数据

update 表名 set 列名=值,列名2=值2 where 条件;--where条件限制更新的行数

删除数据

delete from 表名 where 条件;--where条件下限制删除的行数

drop table 表名; 删除表

表关联

N表关联,需要N-1个关联条件

select *

from emp t1 inner join salgrade on t1.sal>=t2.losal and t1.sal>=t2,hisal

将工资与工资等级关联


commit--提交

rollback--回滚,撤销之前操作

表连接

表的连接方式:

通过连接条件将多张表拼成一张大宽表

  • inner join:内连接,基于连接条件仅显示匹配的记录,匹配几条显示几条

  • left join:左外连接,inner join部分+左表未匹配的记录

  • right join:右外连接,inner join部分+右表未匹配的记录

  • full join:全外连接,inner join部分+左表未匹配的记录+右表未匹配的记录

  • on后的条件仅用于表的连接

  • where后的条件是对连接后的结果进行过滤

  • 使用not in的时候如果子查询有null值出现,则一行记录都不会查出来,子查询需要添加is not null的过滤条件

解体思路

1、确定列:查询列、过滤列 2、确定表:筛选步骤1的列至少来源于哪些表 a 3、如果多张表,首先确定表的连接条件(字段)b 4、补充查询列、过滤列 c 5、基于查询列的内容(列和聚集函数一起出现)来决定是否需要group by语句 d 6、如果需要对聚集的结果过滤用having e 7、如果需要排序用order by f

 

posted @ 2021-04-28 11:04  s7s7zx  阅读(188)  评论(0)    收藏  举报