之前一直在使用小型免费的关系型数据库MySQL,对于打官司超强的Oracle早就有所耳闻且有一学期之久的课程(还差点加入他们的校园计划)虽然接触时间蛮久也知道有OCA 、OCM、OCP这样的分级存在,但是讲实话现在只记得一些SQL语句了(老脸一红)。作为企业级的一个数据库系统,Oracle的强大自然不用多吹(Sun公司哭死,IBM:??)而这次对一些Oracle的命令和SQL语句再复习和学习一下。
Link Startor:
1. 启动:
win+R ---> cmd -----> sqlplus "/as sysdba" //以sysdba身份登录(此时可以创建用户,分配权限等) win+R ---> cmd -----> sqlplus username/password //以指定用户名/密码身份登录 win+R ---> cmd -----> sqlplus 按照提示,输入用户名密码/直接找到安装目录,打开sqlplus终端。
2.创建用户:
create user username identified by password
3.授予权限:
grant resource ,connect to user; resource: create trigger create sequence create type create procedure create cluster create operator create indextype create table connect: create session
4.切换用户:
conn username/password
5.导入测试数据:因为数据文件的默认语言环境为英语,当前windows系统是中文,中英文时间显示不一致,导入会失败,需要先修改语言环境
alter session set nls_date_language=english; alter session set nls_language=english; @ e:\oracle\summit2.sql start e:/oracle/summit2.sql
6.查看表结构:
desc table_name;
7.查看当前用户具有哪些表:
select table_name from user_tables;
8.sqlplus命令
a:在当前操作的命令行追加内容
a test
c: 在当前操作的命令行修改内容
c/old_char/new_char
clear buffer:清空当前缓存的命令
del:删除当前操作行
del line_num指定删除第几行
i:当前操作命令行的下一行插入内容
l:查看缓存命令
l line_num:查看指定的命令行
n text:替换第n行的整行内容
!:后面接终端命令 ------linux环境下
!clear:清屏 ///
$:后接终端命令
$cls ---------> windows环境下
/:执行缓存sql命令
save file_name:将缓存命令保存到file_name中 (append replace)
get file_name:将文件中的内容提取到sqlplus
start 和 @ file_name:执行文件中的sql命令
edit file_name:使用终端设置好的vi编辑器编辑文件(对于windows使用的是notepad)
spool file_name 将接下来的sql语句以及sql的运行结果保存到文件中(append)
spool off 关闭spool功能
exit:退出
结果不好看,通过column使我们的显示界面好看。
colu last_name format a15;
colu first_name format a15;
Column 有没有改变数据表里数据,它只是改变显示。它是不是SQL命令呢? 不是,它是sqlplus命令。
COLUMN last_name HEADING 'Employee|Name' FORMAT A15
给last_name取别名为Employee|Name , 竖杠代表换行。
A15表示十五个字节长,一短横杠就是一个字节长
COLUMN salary JUSTIFY LEFT FORMAT $99,990.00
salary JUSTIFY LEFT : 仅仅改变列名显示为左齐
FORMAT $99,990.00: 控制显示格式为前面加 $ 符, “,”为分隔符, 0或9代表数字(通配符),0表示替换对齐数值,位数不足会补足,可以混合使用.
COLUMN start_date FORMAT A8 NULL 'Not hired'
如果start_date值为空的话,显示为’Not hired’;
Format后不能直接跟null, 要先a8或a10;
NULL 'Not hired'和nvl有点不同, nvl要求类型匹配
column 显示所有对列格式的设置情况
column last_name 显示对last_name列显示设置的情况
column last_name clear 删除对last_name列格式设置的情况
Clear column 清除所有column的格式设置
Column某列的格式设置,这里的列并不特定于某个表.
SQL:
select :
select [distinct] {*,column [alias],...} from table
select语句可以对指定的列的所有值进行算术运算:select col_name 运算符 数字 from tb_name;
给查询的列区别名:select old_column [as] new_column_name from tb_name;
使用||可以使得多列的值或者列和特殊的字符串合并到一个列进行显示:select col_name||'spe_char'||col_name from tb_name
对null值得替换运算:select nvl(col_name,change_value) from tb_name;nvl2(col_name,不为空显示的值,为空显示的值);
使用distinct关键词,可以将显示中重复的记录只显示一条:select distinct col_name,col_name... from tb_name;
Order by
order by子句在整个select语句中的位置始终位于最后
order by后可以跟列名,列的别名,表达式,列出现在select关键字后的顺序(列号);
order by后可以跟多列,表示先按第一列排序,如第一列有相同值再按第二列进行排序,如前二列均有相同值,则按第三列进行排序...
ASC表升序,可以省略,DESC表降序。
空值永远是最大的。升序排序的时候,空值放在最后。降序排序的时候,空值放在最前面的
Where:
select col_name,...from tb_name where col_name 比较操作表达式 逻辑操作符 col_name 比较操作表达式
所有字符串和日期要用单引号括起来,数值不需要单引号。
由一至多个限定条件组成,限定条件由表达式, 比较符, 字面值组成。
sql比较操作符:
between and:在什么范围之内
in(list):在一个列表中
like:模糊查询,即值不是精确的值的时候使用
通配符,即可以代替任何内容的符号
%:通配0到多个字符
_: 当且仅当通配一个字符
转义字符:默认为\,可以指定 指定的时候用escape 符号指明即可,转义字符只能转义后面的一个字符
逻辑操作符:当条件有多个的时候使用
and:且逻辑
or:或逻辑
注意:and逻辑比or逻辑要高
not:非逻辑
字符函数
LOWER:转换成小写
UPPER:转换成大写
INITCAP:首字母变成大写,其余都小写
CONCAT:字符串的连接
SUBSTR(str,start,length):字符串的截取
LENGTH:求字符串的长度
数字函数
ROUND:四舍五入
TRUNC:截取,不进行四舍五入
MOD:取余
日期函数
MONTHS_BETWEEN:两个日期之间的月数
ADD_MONTHS:在指定日期上增加月数
NEXT_DAY:指定日期的下一个星期几是哪天
LAST_DAY:指定日期的最后一天
ROUND:对指定日期进行四舍五入
TRUNC:对指定日期进行截取
Group Function
select ... from ... where ... group by col_name,col_name having ... order by...
所谓组查询即将数据按照某列或者某些列相同的值进行分组,然后对该组的数据进行组函数运用,针对每一组返回一个结果。其中avg:求平均值,count:求总数,max:最大值,min:最小值,sum:求和
类型转换函数
1).TO_CHAR 将日期或者数值转换成字符串
2).TO_NUMBER 将字符串转换成数字
3).TO_DATE 将日期字符串转换成日期
由于多表查询、子查询涉及内容较多,不作为基本语法写出,但是其重要程度十分之高。而关于更多的知识移步:网友的博客