!clear 清屏。
col title for a20; 设置title的字符最多有20个。
oracle介绍。
rdbsrdb
基本的存储结构是,二维表。表头。行。
列。字段。
sql的分类:
dsl 关键字 select
dml(操作) insert delete update
ddl(定义) create drop alter
tclcommit rollback s**epoint
dclgrant revoke
创建表:create table qwe(id number,nmae varchar2(20));
增加列:alter table qwe add birth date;
插入数据:insert into qwe values(14,'rong','1990-04-07');
给id加主键:
alter table qwe add constraint qwe_id_pk primary key(id);
删除一列数据:
alter table qwe drop column 列名;
修改name的属性。
alter table qwe modify name char(20);
order by
asc 默认的升序。
desc 降序。
主函数。select count(*)from s_emp;//查看表的行数。
telnet id
openlab
open123
sqlplus
sql>
查看表的结构。
sql>desc 《表名》
数据类型:varchar2(n变长字符串。
char(n定长字符串。
number数字类型。
date日期类型。
sql> desc s_emp;
namenull? type
id 员工标示not null number(7)
last_name 姓not null varchar2(25)
first_name 名varchar2(25)
useridvarchar2(8)
start_date 入职日期date
comments 说明varchar2(255)
manager_id 领导的idnumber(7)
title 职位varchar2(25)
dept_id 部门编号number(7)
salary 月薪number(11,2)
commission_pct 提成number(4,2)
选择:当所有的列被选中,部分行被选中。
连接:查询的数据从多张表里来,需要让几张表关联起来。
join--表连接--表与表自之间的联系。
投影:所有行被选中,部分列被选中。
查询:select 列,列 from 表名。
1.查询一个字段。
select salary from s_emp;
2.查询多个字段。
select first_name,salary from s_emp;
3.查询所有的字段。
select * from s_emp;
select id,first_name,name,..from s_emp;
4.数**算。
算每个人的年薪。
select id,salary*12 from s_emp;
算每个人的每天的薪水。
select id,salary/12 from s_emp;
5.别名。select id,salary*12 yearsal from s_emp;
原样显示 (双引号)
select id,salary*12 "yearsal" from s_emp;
6.改变运算的优先级,可以用小括号()
7.字符串的连接。
c中的字符串拼接。
strcat
sprintf
oracle中的字符串拼接 ||
select first_name||last_name,salary from s_emp;
数据库中字符串如何表达?
用单引号引起来的一串字符串 'hello
select first_name||'last_name,salary from s_emp;
拼接单引号:
select first_name||'last_name,salary from s_emp;
拼接双引号。
select first_namelast_name,salary from s_emp;
8.修改上一次的sql语句。
edit修改内容就是对应的vi操作。
9.空值处理。
月薪*(提成/100+1)*12 就是年薪。
select first_name,salary*(commission_pct/100+1)*12 from s_emp; 只显示有提成(commission_pct)的人的年薪,其余的为0
空值处理函数 :nvl(字段,值)
如果字段的值是null,则返回第二个参数。
如果字段的值不是null,则返回字段本身的值。
select salary*(nvl(commission_pct,0)/100+1)*12 from s_emp;
null要尽早处理。
10.处理重复数据 distinct(排除重复)
select title from s_emp列出职位。
select distinct title from s_emp; 有多少种职位。
联合排重。select distinct title,id from s_emp;
子句。1.过滤返回的行,限制行的返回。
select first_name,salary from s_emp;
where出现在from之后。
工资小于1000的人打印出来。
select first_name,salary from s_emp where salary<1000;
2.逻辑比较运算符 >
比较等不相等。
字符串判断等不相等时要用单引号把值引起来, 而数字类型不用单引号。
字符串的值大小写敏感, 但是sql语句在逻辑上不区分大小写。
查询first_name 是carmen 的薪水和manager_id是多少。
select manager_id,salary from s_emp where first_name='carmen';
3.查询工资在【1000到1400】之间的员工有?
select first_name,salary from s_emp where 1000<=salary and salary<=1400;
select first_name,salary from s_emp where salary between 1000 and 1400;
查询id是1,3,5 的员工信息。
select first_name,id from s_emp where id in (1,3,5);
查询部门号是41,42,43,50的first_name,id,dept_id
select first_name,id,dept_id from s_emp where dept_id in (50,41,42,43);
在逻辑上列表中数据的顺序不会影响结果,但可能会影响效率(和数据分布有关),出现概率高的数据放前面。
is null
判断一个字段是不是null
查询manager_id, 是null的员工的 id,first_name
select id,first_name from s_emp where manager_id is null;
通配符。0~n个任意字符。
1个任意字符。
找出所有first_name 中带a 的。
%a% select first_name from s_emp where first_name like '%a%';
找出第二个字符是a 的first_name
select first_name from s_emp where first_emp like '_a%';
找出所有的以s_开头的表名。
select table_name from user_tables where table_name like '_escape '\
'逻辑连接符。
and 两个条件同时为真才为真。
or 只要有一个条件为真。
not 取反。
where salary>=1000 and salary<=1400
in的思想用or来表达。
and or 连接多个条件并且可以使用。
()改变优先级。取反操作。
oracle笔记
1 查看表的结构 desc tabledescription 2 set timing on 打开操作表的时间记录。3 消除重复行 distinct 4 大小写不区分的是列名,而不是里面的数据。1 可以对某一列直接进行加减乘除。两列相加。2 如果有一列为null,所得结果也为空。使用nvl函数处理n...
Oracle笔记
第1页1.oracle 的使用 1.1.sqlplus 的命令 初始化表的位置 set nls lang american 设置编码才可以使用下面脚本 cd oracle home rdbms cd demo 我们目前使用的是oralce 9i 9201 版本 select from v versi...
Oracle笔记
oracle开发笔记。1.建立自增id字段 a.先建表,将要建自增id字段为number类型 b.建序列sequences c.建立触发器,一定要是before类型的。d.到此自增id字段就建立完成了。2.存储过程,写法,循环,异常实例。create or replace procedure dat...