oracle笔记

发布 2021-05-11 22:06:28 阅读 1300

!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...