Oracle数据库的基本操作SQL语句

安装好oracle数据库后直接在cmd里面就可以登录了,使用sqlplus命令:

sqlplus scott/123456    #123456是密码,scott是用户名

还可以直接以管理员身份登录:

sqlplus / as sysdba  #在oracle数据库安装时指定了登陆密码
alter user scott account unlock #解锁用户 (管理员身份登陆,给scott用户解锁。用户默认锁定)
alter user scott identified by 新密码 #修改用户密码 (管理员身份登陆,给scott用户修改密码)
select userenv('language') from dual  #查看当前语言环境

还有一些基本的SQL语句给大家列一下

show user;  #显示当前用户

select * from tab;  #显示当前用户下所有的表

(注意:这个tab 是一个数据字典 ,里面记录着数据库和应用程序源数据的目录,包含当前用户下的表)

设置行宽:set linesize 120;

设置页面:set pagesize 100;

设置员工名列宽:col ename for a20;  (a表示字符串)

设置薪水列为4位数子:col sal for 9999;  (一个9表示一位数字)

查询一个表里的记录:

select * from tablename;  #tablename 为你要查询的表名

select name1, name2, name3 from tablename; #只查询tablename表里的 name1,name2和name3字段里的数据

小技巧:/执行上一条成功执行的SQL语句。

如果查询出来的结果有很多重复的,你可以使用 DISTINCT 来去重!(重复的记录住取一次)

select distinct name1 from tablename;  #tablename表里的name1列要是有重复的就只取出一个

select distinct name1, name2 from tablename; #tablename表的 name1列和name2列 这两列里要是有重复的就只取出一个

SQL的算数运算

在oracle里可以使用+-*/直接对整个 列 进行算术运算,例如你的员工表里有一个字段保存的 员工的月薪 你可以使用“*”直接将他的年薪列出了,看看下面这条SQL:

#      员工号、  姓名、 月薪、 年薪
select deptno, ename, sal, sal * 12 from emp;

Oracle中定义了一个连接符 ’||’ 用来连接字符串。

select ename || ‘ is a ’ || ‘job’ from emp;

如果只是想单纯输出 一段字符怎么办?

select 'hello' || ' world' as "你好" from dual; #方法一

select concat('hello', ' world') as "你好" from dual;  #方法二 这样就会输出一行 hello word

由于SQL99语法规定select后面必须接from,这个两个字符串不是任何一张表里的内容,在Oracle中,系统定义了一张“伪表” dual 用来满足语法。

concat是一个SQL函数。

as 是用来定义别名的 ,在sql中 双引号“ ”表示别名,使用‘ ’来表示字符串。

order by 排序

order by排序有升序和降序两种,默认是采用升序方式。

例如查询员工信息,按照月薪排序:

select * from emp order bu sal;  #升序排序
select * from emp order bu sal desc;    #降序排序
select * from emp order by deptno, sal; #先按deptno排序  如果deptno列相同 在按照sal排序
select * from emp order by deptno desc, sal desc; #降序

order by之后可以跟列名,表达式,别名和序号,但是应注意一点,语法要求order by子句应放在select的结尾。

暂无评论

发表评论