安装好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的结尾。