Oracle学习笔记(一):简单sql语句

oracle中的建表语句:

create table users(

Id                number(4)  primary key,

Name          varchar(10),

--varchar定长的字符写数据类型

Password     varchar2(10),

--varchar2变长的字符型数据类型

Sex             char(2),

--char定长的数据类型

Addr           varchar(20),

Birthday      date,

--date日期型数据类型

Salary         number(8,2)

--number不带小数点的数值型类型

--number(8,2)数据表的总长度是8位,小数点后占2位

);

oracle中的查询语句:

select * from emp; --从emp表中查询所有信息

--desc emp;查询语句,只能在命令行模式下使用,命令行模式下的sql语句必须有封号

oracle中的sql语句大小写不敏感,可单行或多行书写,关键字不能跨多行或缩写,一般关键字大写,其他小写

--从表中查询部分子段

select empno,ename,sal,comm from emp;

--sql*plus默认显示:

    date和character型数据左对齐;number型数据右对齐

--在查询过程中,对于数据型的数据,可以执行+,-,*,/运算

--乘法和除法的优先级高于加法和减法,同级运算的顺序是从左到右,表达式中使用括号可以改变优先级的运算顺序

--可以给查询字段起别名,有不同的方式,可以不用“”,可以用as,可以不用as

--如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加双引号

select empno 员工,ename 员工姓名,sal "月薪",sal * 12 "年薪",comm "奖金",(sal * 12 + comm) "年收入" from emp;

--在算术表达式中出现null,得到的结果就是null,null不等于0

--用双竖线可以将两列或多列查询结果合并到一起

select empno,ename,empno||ename||job "员工信息" from emp;

--在连接表达式中出现null,就是原来的字符型数据

select empno || '的经理是' || mar "从属关系" from emp; --例如查询结果的第九行

--空值是指不可用、未分配的值,空值不等于0或空格,任意类型都可以支持空值,包括空值的任何表达式都等于空,包括空值的连接表达式等于与空字符连接,也就是原来的字符串

--强制改变字段的大小写必须加双引号,不然还是会默认大写

select empno "EmpNo" from emp;

--文本字符串是一个包括在select查询列表中的字符,表达式或数字;日期和字符写文本字符串必须用单引号;每返回一条记录文本字符串被显示一次

--对于日期型的数据可以使用+,-运算

   1.一个日期+或-一个数值就是加减一个天数,得到一个新的日期

   2.两个日期的数据相减,得到的是两者之间相差的天数

--两个日期型的数据不能相加,日期型的数据不能进行乘除运算

select empno,ename,hiredate "雇用日期",(hiredate + 90)"转正日期" from emp;

--sysdate取得当前的日期

select empno,ename,(sysdate - hiredate)/365 "工作的年限" from emp;

--to_char(hiredate,'yyyy')提取雇用日期中的年份,to_char(hiredate,'mm')提取月份,to_char(hiredate,'dd')获取日

select ename,to_char(hiredate,'dd') from emp;

--去除重复的数据

select distinct deptno from emp;

--去除多列重复的数据

select distinct job deptno from emp;

--使用where子句对数据进行过滤

--例如查询部门编号是10的数据

select * from emp where deptno = 10;

select * from emp where ename = ‘SMITH’;--必须与表中的数据想同,包括大小写,必须有单引号

--对于日期型的数据,格式是敏感的,使用日期型数据的格式是DD-MM-YYYY(日-月-年)

select * from emp where hiredate = '20-2月-1981';

--改变当前会话中的日期格式

alter session set nls date fomat = 'YYYY-MM-DD HH:MI:SS';

--where的其他比较运算符

select * from emp where sal >= 2000;

select * from emp where sal !=3000 或select * from emp where sal <> 3000;

--逻辑运算符:and 或 && :如果组合的条件是true,返回true; or 或|| :如果组合条件之一是true,返回true; not 或 !: 如果组合条件是false,返回true

--使用between...and 

select * from emp where sal between 2000 and 3000

select * from emp where sal >2000 and sal < 3000

--使用in

select * from emp where job in ('manager','clerk')

--在oracle中使用or来代替||的功能

select * from emp where job = 'manager' or 'clerk'

--like用于字符型数据的查询,可以执行模糊查询

select * from emp where ename like '*A*'

--%表示0个或多个任意的字符

select * from emp where ename like 'A%'

--"_"表示一个字符

select * from emp where ename like '_A%' --查找名字第二个字母是A的人的信息

select * from emp where ename like '%%%' --相当于查找全部

select * from emp where ename like '%\%%' escape '\'

--对于空值要使用is null进行比较

select * from emp where comm is null

--使用not运算符

select * from emp where sal not between 2000 and 3000;

--对查询后的数据进行排序,使用order by 子句,默认是asc升序排列,也可使用desc进行降序排列

select * from emp where sal > 2000 order by sal;

select * from emp where sal >2000 order by sal desc;

--可以按照多个字段进行排序

select * from emp order by deptno sal; --当前一个数据相同时,用后面的进行排序

--使用字段别名进行排序

select empno,ename,(sal * 12) "年薪" from emp order by "年薪";

数据库对象的命名规则:1.必须以字母开头;2.可包括数字(0-9)和三个特殊字符(#_$);3.不要使用oracle的保留字;4.同一用户下的对象不能同名,即使是不同的对象类型

 

猜你喜欢

转载自www.cnblogs.com/qiuqiu1005/p/11628160.html