首页 > 数据库 > Oracle > 正文

oracle数据库中sql基础

2020-03-09 22:54:15
字体:
来源:转载
供稿:网友
    一、关系数据库的一些概念
  
 1、主键的值一般不可以改变
  
 2、外键:指向另一个表或本表的主键或唯一键的字段。外键的值一定要和某一主键相同,或者为空。
  
 3、数据库对像:表,视图,序列,索引,同义词,程序(进程,函数,sql和pl/sql数据)4、sql command 类别
  
  data retrieval数据检索:select
  data manipulationlanguage (dml)数据操作语言:insert,update,delete
  data definition language (ddl)数据定义语言:create,alter,drop,rename,truncate
  transaction control事务控制:commit,rollback,savepoint
  data control language(dcl)数据控制语言:grant,revoke
  dcl 和ddl命令的执行会导致一次隐式提交,之前未提交的操作(包括dml 命令)都会提交写入日志文件,并在适当地时候写入数据文件。
  
 二、sql的语法
  
 1) 连接号:||
  
 2) 把两个字符连接起来
  eg:select game_card_type_id||name from game_card_type;
  
 3) select distinct dept_id,title from emp: 对多个字段的唯一
  
 4) order by desc(降序)
  order by asc(升序)
  
 5) where column is (not) null
  
 6) like ‘_a%’  _表示一个字符。%表示多少字符
  like ‘%x/_y%’ escape ‘/’:显示包括x_y的字符
  
 7) where table1.column(+)=table2.column
  place the operator on the side of the join where there is no value to join to.
  
 8) 联接类型:
  equijoin:等式查询
  non_equijoin:不等式查询
  self:自己和自己建立关联
  out join:where a.column=b.column(+)
  可以用的操作符是:’=’,’and’,不可以用’or’,’in’
  
 9) count 函数所用的列包含空值时,空值行被忽略。
  
 10) where 后的in any all 的区别
  in :等于子查询的任何一个数
  any :与子查询的每一个值相比
  只要比其中一个大(小)就可以了
  all:与子查询的所有值相比要比所有的的都大(小)
  !=all作用跟not in 一样
  
 三、sql*plus的环境(可以在glogin.sql中定义初始参数)
  
  1) start 命令用以执行一个已储存的文件,等同于@
  
  2) save命令用以创建一个文件
  
  3) edit命令用以调用编辑器编辑已存文件的内容
  
  4) change 是sql*plus的编辑命令,用于在当前一行把旧文段转换为新文段
  
  5) del 命令用以删除文本中一行或多行文字
  
  6) spool命令用以把查询结果储存在一个已有文件中,注意与save区别
  
  7) get命令用以一个文件的内容写进一个sql块中
  
  8) spool out命令用以把文件的结果发送到系统打印机。
  
  9) set pause off/on:设置页面的滚动。按enter看下一页。
  
  10) pagesize:指定每页显示的行的数值,
  
  11) long:设置long类型数据显示的最大宽度
  
  12) feedback:设置查询返回记录的最大值
  
  13) describe :用于显示表和视图的结构,同义词,或指定函数和过程的详述。
  
  14) timing:可以看到语句执行的时间
  
  15) autotrace:可以看到sql的执行计划,sysdba执行/home/oracle/product/9.2.0/sqlplus/admin/plustrce.sql脚本,而且必须把plustrace角色赋给执行用户。执行用户必须运行/home/oracle/product/9.2.0/rdbms/admin/utlxplan.sql
  
  16) 在各种数据类型中,只有number数据类型的默认显示是靠右对齐的,而char, date和varchar2是靠左对齐的
  
  17) quit 是sql*plus命令,用以结束一个sql*plus的对话。
  
  18) ttitle:
  ttitle ‘selina’ 设select 的结果的抬头为selina
  tti :显示ttitle的状态
  tti off/on
  btitle ‘end’ 设结果的尾部
  
  19) column:
  
  a) column name heading ‘名字’format a15
  
  b) column id justify left format 999999
  
  c) column start_date format a9 null ‘not hired’//当字段为空的时候则显示成not hired
  
  d) column :显示所有的column设置
  
  e) column columnname:显示某一个字段的设置
  
  f) clear column :清除所有column设置
  
  g) column columnname clear:清除某一字段的设置
  
  h) 以上的column可用col代替.clear可以用cle代替
  
  13)定义变量
  
  用&:由用户输入变量值,此变量可以存在于where后,做为整个查询语句的变量。也可以在order by 后。做为字段的变量。也可以放在select 后,做为字段或表达式的变量。
  
  用&&:如果多个地方引用此变量。。只用输入一次
  
  sql> select empno, ename, job, &&column_name
  from emp
  order by &column_name;
  
  accept:由用户输入变量值
  accept 变量名 datatype prompt ‘告诉用户需要输入的信息:’ hide
  引用的时候:&变名
  define(undefined):一开始就定义变量值
  
 四、函数:
  
  1、字符函数
  
  lower:把字符转成小写
  upper:把字符转成大写
  initcap:把单词的第一个字母变成大写
  concat:连接字符 concat(‘good’,’morning’)=goodmoring
  substr (column/expression, m[,n]) 用于对字符串进行截取操作,从第m个位置开始,把其后的连续n个字符的部分截取下来,如果m位负值,则从末尾开始计算。
  eg:substr(‘string’,1,3) =str
  substr(‘string’-3,3)=ing
  instr('string', 'r')=3
  lpad(sal,10,'*') =*******sal
  length: 用于返回表达式中的字符数,注意返回的是number。
  nvl(expression1, expression2)
  nvl 函数用以把一个空值转换为一个实值,如:
  nvl(100/quantity, 0) ,要是quantity为空值,该函数返回一个0。
  如果两个字段类型不同必须进行转换。
  min():返回最小值。。如果是字符。。a  
  2、数学函数
  
  round:四舍五入
  round(2.566,2)=2.27
  round(45,-1)=50
  trunc: 截断
  trunc(2.566,2)=2.56
  trunc(45,-1)=40
  mod:
  mod(m,n):m-n*flood(m/n)   file://flood是取整数
  
  3、日期函数:
  
  a) months_between(date1,date2):算date1和date2之间的月的数量,可以是小数可以是负数
  months_between(’01-sep-95’,’11-jan-94’)=1.9774194
  
  b) add_months(date,n):为date加上n个月,n只可以是整数
  
  c) next_date(date,’char’):查找date的下一个星期n
  next_date(’01-sep-95’,’friday’)=08-sep-95
  
  d) last_day(date):查找date月的最后一天。
  
  e) rount(date):把日期四舍五入
  
  f) rount(25-may-95’,’month’)=01-jun-95
  
  g) rount(25-may-95’,’year’)=01-jan-95
  
  h) trunc(date):把日期截断
  
  i) trunc (25-may-95’,’month’)=01-may-95
  
  j) trunc (25-may-95’,’year’)=01-jan-95
  
  k) 日期中rr与yy的区别,rr格式对日期作类似于舍入的操作,yy格式对日期作类似于截取的操作
  rr  yy
  1995 27-oct-95 1995 1995
  1995 27-oct-17 2017 1917
  2001 27-oct-17 2017 2017
  2001 27-oct-95 1995 2095
  用法:select to_char(sysdate, 'yy') from dual;
  select to_char(to_date('95-11-27', 'rr-mm-dd'), 'yyyy-mm-dd') from dual;
  select to_char(to_date('95-11-27', 'yy-mm-dd'), 'yyyy-mm-dd') from dual;
  
  4、转换函数
  to_char:
  to_char(date,’fmt’):fm前缀用来去除首尾的空字符或0
  to_char(total,’fm$999999’)
  
  如果想转成$0.25,那就要写成fm$9999990.99
  
  可以把日期转换成字符
  to_char(log_time,’mm/yy’)
  to_char(lot_time,’fmdd’’of;’’mm yyyy’)
  
  具体格式如下
  hh24:mi:ss am-----------15:24:32 pm
  dd’’of’’month-----------12 of may
  ddspth------------------------fourteenth
  ddsp--------------------------fourteen
  ddth---------------------------4th
  yyyy-----------------------1978
  mm-----------------------------12
  month-------------------------may
  
  5、group 函数avg,count,max,min,stddev,sum,variance
  
 五、数据字典
  
  用户表:由用户创建,包含用户的内容
  
  数据字典:由系统建立,包含数据库的信息
  
  前缀:
  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国内最大的酷站演示中心!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表