一关系数据库的一些概念
主键的值一般不可以改变
外键指向另一个表或本表的主键或唯一键的字段外键的值一定要和某一主键相同或者为空
数据库对像表视图序列索引同义词程序(进程函数sql和pl/sql数据)sql command 类别
data retrieval数据检索:select
data manipulationlanguage (DML)数据操作语言:insertupdatedelete
data definition language (DDL)数据定义语言createalterdroprenametruncate
transaction control事务控制:commitrollbacksavepoint
data control language(DCL)数据控制语言grantrevoke
DCL 和DDL命令的执行会导致一次隐式提交之前未提交的操作(包括DML 命令)都会提交写入日志文件并在适当地时候写入数据文件
二SQL的语法
) 连接号||
) 把两个字符连接起来
eg:select game_card_type_id||name from game_card_type;
) select distinct dept_idtitle from emp 对多个字段的唯一
) order by desc(降序)
order by asc(升序)
) where column is (not) null
) like _a% _表示一个字符%表示多少字符
like %x\_y% escape \:显示包括x_y的字符
) where lumn(+)=lumn
place the operator on the side of the join where there is no value to join to
) 联接类型:
equijoin:等式查询
non_equijoin:不等式查询
self:自己和自己建立关联
out join:where lumn=lumn(+)
可以用的操作符是=and不可以用orin
)COUNT 函数所用的列包含空值时空值行被忽略
)where 后的in any all 的区别
in 等于子查询的任何一个数
any 与子查询的每一个值相比
只要比其中一个大(小)就可以了
all:与子查询的所有值相比要比所有的的都大(小)
!=ALL作用跟NOT IN 一样
三SQL*PLUS的环境(可以在gloginsql中定义初始参数)
) START 命令用以执行一个已储存的文件等同于@
) SAVE命令用以创建一个文件
) EDIT命令用以调用编辑器编辑已存文件的内容
) CHANGE 是SQL*Plus的编辑命令用于在当前一行把旧文段转换为新文段
) DEL 命令用以删除文本中一行或多行文字
) SPOOL命令用以把查询结果储存在一个已有文件中注意与SAVE区别
) GET命令用以一个文件的内容写进一个SQL块中
) SPOOL OUT命令用以把文件的结果发送到系统打印机
) set pause off/on:设置页面的滚动按enter看下一页
) PAGESIZE指定每页显示的行的数值
) LONG设置LONG类型数据显示的最大宽度
) FEEDBACK设置查询返回记录的最大值
) DESCRIBE :用于显示表和视图的结构同义词或指定函数和过程的详述
) Timing可以看到语句执行的时间
) Autotrace可以看到sql的执行计划sysdba执行/home/oracle/product//sqlplus/admin/plustrcesql脚本而且必须把plustrace角色赋给执行用户执行用户必须运行/home/oracle/product//rdbms/admin/utlxplansql
) 在各种数据类型中只有NUMBER数据类型的默认显示是靠右对齐的而CHAR DATE和VARCHAR是靠左对齐的
) QUIT 是SQL*PLUS命令用以结束一个SQL*PLUS的对话
) ttitle:
ttitle selina 设select 的结果的抬头为selina
tti 显示ttitle的状态
tti off/on
btitle end 设结果的尾部
) Column
a) column name heading 名字format a
b) column id justify left format
c) column start_date format a null not hired//当字段为空的时候则显示成not hired
d) column :显示所有的column设置
e) column columnname:显示某一个字段的设置
f) clear column :清除所有column设置
g) column columnname clear:清除某一字段的设置
h) 以上的column可用col代替clear可以用cle代替
)定义变量
用&由用户输入变量值此变量可以存在于where后做为整个查询语句的变量也可以在order by 后做为字段的变量也可以放在select 后做为字段或表达式的变量
用&&如果多个地方引用此变量只用输入一次
SQL> SELECTempno ename job &&column_name
FROMemp
ORDER BY &column_name;
accept由用户输入变量值
accept 变量名 datatype prompt 告诉用户需要输入的信息 hide
引用的时候&变名
define(undefined)一开始就定义变量值
四函数
字符函数
lower:把字符转成小写
upper:把字符转成大写
initcap:把单词的第一个字母变成大写
concat:连接字符concat(goodmorning)=goodmoring
SUBSTR (column\expression m[n]) 用于对字符串进行截取操作从第m个位置开始把其后的连续n个字符的部分截取下来如果m位负值则从末尾开始计算
eg:substr(string) =str
substr(string)=ing
INSTR(String r)=
LPAD(sal*) =*******sal
length: 用于返回表达式中的字符数注意返回的是NUMBER
NVL(expression expression)
NVL 函数用以把一个空值转换为一个实值如
NVL(/quantity ) 要是quantity为空值该函数返回一个
如果两个字段类型不同必须进行转换
Min():返回最小值如果是字符A<a
数学函数
round:四捨五入
round()=
round()=
trunc: 截断
trunc()=
trunc()=
mod:
mod(mn):mn*flood(m/n) file://flood是取整数
日期函数:
a) months_between(datedate)算date和date之间的月的数量可以是小数可以是负数
months_between(sepjan)=
b) add_months(daten)为date加上N个月N只可以是整数
c) next_date(datechar)查找date的下一个星期N
next_date(sepFRIDAY)=SEP
d) last_day(date):查找date月的最后一天
e) rount(date)把日期四捨五入
f) rount(MAYMONTH)=JUN
g) rount(MAYYEAR)=JAN
h) trunc(date)把日期截断
i) trunc (MAYMONTH)=MAY
j) trunc (MAYYEAR)=JAN
k) 日期中RR与YY的区别RR格式对日期作类似于捨入的操作YY格式对日期作类似于截取的操作
RR YY
oct
oct
oct
oct
用法select to_char(sysdate YY) from dual;
select to_char(to_date( RRMMDD) YYYYMMDD) from dual;
select to_char(to_date( YYMMDD) YYYYMMDD) from dual;
转换函数
TO_CHAR
TO_CHAR(datefmt)fm前缀用来去除首尾的空字符或
TO_CHAR(totalfm$)
如果想转成$那就要写成fm$
可以把日期转换成字符
TO_CHAR(log_timeMM/YY)
TO_CHAR(lot_timefmddof;mm yyyy)
具体格式如下
HH:MI:SS AM:: pm
DDofMONTH of MAY
Ddspthfourteenth
Ddspfourteen
ddthth
YYYY
MM
MONTHMAY
group 函数avgcountmaxminstddevsumvariance
五数据字典
用户表由用户创建包含用户的内容
数据字典由系统建立包含数据库的信息
前缀:
USER_ 由用户创建显示用户拥有的所有对象
ALL_ 由受权的用户访问 用户可以访问的对象名
DBA_ 由受了DBA权限的人访问显示数据库的所有对象
V$ 由受了DBA权限的人访问显示数据字典数据库服务器性能信息通常是DBA用于显示系统的统计表和动态性能表
数据字典
DICTIONARY数据字典提供用户可以访问的数据字典表和视图的描述
USER_OBJECTS显示用户拥有的对象
USER_VIEWS显示用户拥有的视图
USER_TABLES显示用户拥有的表
ALL_TABLES显示用户可以访问的表
ALL_VIEWS显示用户可以访问的视图
USER_CATALOG显示用户拥有的所有表视图同义词和序列
USER_CONS_COLUMNS显示带约束的列
DBA_CONS_COLUMNS显示数据库里的所有表视图和同义词
USER_TAB_PRIVS_MADE本用户赋给别的用户赋予权限的表
USER_TAB_PRIVS_RECD其他用户给本用户赋予权限的表
USER_COL_PRIVS_MADE本用户赋给别的用户赋予权限的字段
USER_COL_PRIVS_RECD其他用户给本用户赋予权限的字段
ROLE_SYS_PRIVS:有什么系统权限赋给role
ROLE_TAB_PRIVS:有什么关于表的权限赋给role
USER_ROLE_PRIVS:role和用户的对应表
常用的表
user_objects用户对象表(存储用户的所有对象)存储以下的类型的数据
Selina Sql>select distinct object_type from user_objects;
INDEX
LOB
PACKAGE
PACKAGE BODY
PROCEDURE
SEQUENCE
SYNONYM
TABLE
TRIGGER
VIEW
User_catalog:用户类表存储以下的类型的数据
Selina Sql>select distinct table_type from user_catalog;
SEQUENCE
SYNONYM
TABLE
VIEW