informix设置数据库默认插入时间_Windows下对Oracle数据库最简单的增删改查,零基础...

本次试验依然在windows 2016下进行。

一、以默认普通用户scott/tiger连接数据库

安装Oracle时,若没有为下列用户重设密码,则其默认密码如下:

b32fbd0427fb024101d7c6f10be9b838.png

以普通用户scott连接,默认密码为tiger

格式:conn 用户名/密码(conn scott/tiger)

口令更改为cat

53798097cc19183ccb0aa2739d2b2335.png

二、检查Oracle的服务

点击开始---运行,输入services.msc ,打开windows的服务选项,

ee693b67a32d460bdb4b53ff602fb171.png

回车

7fb6e8ac4948dc2b0da5c98ef6a9608c.png

找到Oracle数据库服务是否启动的两个服务,一个是Oracle服务,一个是Oracle监听服务。

其中ORCL为数据库的名称

6e862d0192e8f68082ac5e438b997dc1.png

下面是oracle的监听程序,专门用来负责数据库用户远程访问数据库。

ccbd2527528842d82bc40be02fcdebcb.png

三、最简单的增删改查

3.1查询(select)

3.1.1查询用户SCOTT状态

SQL> select username,account_status from dba_users where username='SCOTT';

0d75a80b330f3b4f4cc9c367fcbe855d.png

EXPIRED表示数据库用户处于到期状态,不能正常连接上数据库。

&是并且的意思

LOCKED表示用户处于锁住状态,不能使用该数据库用户。

解锁数据库用户语法

alter user 数据库用户名 account unlock;

解锁SCOTT用户

SQL> alter user scott account unlock;

dc82274786e85f6b9ad126a1fcc27c0c.png

验证SCOTT用户的状态

SQL> select username,account_status from dba_users where username='SCOTT';

1a541d6f7d28b76cb1850781fdf98cb2.png

上图显示SCOTT用户已经解锁,但是目前处于到期状态。在EXPIRED状态下,Oracle数据库默认SCOTT用户需要使用原来的密码重新登录,并设置新密码,即可解除到期状态。

SQL> conn scott/tiger

conn是connect的缩写,scott为oracle数据库的用户,tiger为scott用户的初始密码。

5ec0791cd3a5a95a24a5e730d0927177.png

图中显示:"the password has expired",说明scott用户密码到期,输入新口令cat

验证查询soctt用户是open状态

SQL> select username,account_status from dba_users where username='SCOTT';

4c2830fa0aecf088edadcf1bb4bb9ab6.png

用scott/cat的用户名和密码连接数据库

C:甥敳獲Administrator>sqlplus scott/cat

bcb0df5a060ca18f3d02a1109652b322.png

验证连接用户

SQL> show user

1e933cbe5ba337445dc5f98184f8f547.png

3.1.2查询SCOTT用户拥有那些表

SQL> select table_name from user_tables;

3ea264a00488a09c3425177f4d7ace93.png

上图中可以看到有4个表,

DEPT(Department 部门)

EMP(Employee 雇员)

BONUS(奖金)

SALGRADE(Salary Grade薪水等级)

上图中SQL语句解释

select 是SQL语句查询表数据必须的关键字,并且在查询SQL语句的开头,后面跟的是表中的列,如果查询多个列值,可以使用逗号隔开。

table_name 是user_tables表的一个用来存储表名的字段;而(*)则表示表中的所有字段。

from 是SQL语句查询表中必需的关键字,表示这些列数据"来自"那个表中,后面必须是表名。

user_tables,这是指表名,即把该表的列数据全部查询出来,它是Oracle数据库内部的表(也是)数据字典,专门用来查询用户自己拥有那些表。

分号(;)这是英文字符的符号,是表示这条查询SQL语句结束的符号。

3.1.3查看有哪些部门

SQL> select * from dept;

d00d12aa0c98dcd02d48a44d9b223f4d.png

上图知,虚线上面有三个英文单词,这表示dept表有三列,

DEPTNO(部门号)

DNAME(部门名称)

LOC(工作地点)

可见该公司有4个部门,部门分别为10,20,30,40

可以看到部门为10的部门名称为ACCOUNTING(财务部),工作地点在NEW YORK(纽约)。

*表示所有字段

3.1.4查询dept表有哪些列

SQL> desc dept

bf0e19d4bb7d483307f8e0f920122e9f.png

由上图可知该表有三列

DEPTNO(部门号)

DNAME(部门名)

LOG(部门工作地点)。

3.2增加(insert into)

3.2.1增加一个Development(开发)部门

SQL> insert into dept(deptno,dname,loc) values (50,'Development','Beijing');

67120de41dd9d40d21d5db92c39cc191.png

Insert into 插入SQL语句,而且必须是在开头,在其后跟随的是表名。

把刚才插入的数据提交到数据库中,如果没有commit,则插入的SQL语句在计算机的内存中。

SQL> commit;

01641d85cfc203aaea895a02d856f47c.png

3.2.2查看dept部门表中是否存在刚插入的数据,已经在dept部门表中增加了Development开发部门。

SQL> select * from dept;

e335cbcdb39e3f014519a71c2accfc4a.png

3.3修改(update)

把开发部门的办公地点更改为上海。

SQL> update dept set loc='Shanghai' where deptno=50;

8cd48dfb442698f4b74a6a2f4f388d08.png

查询结果

SQL> select * from dept;

c03928b51de188d1e873e65490038104.png

update 是SQL更新语句的关键字,并且在语句的开头,后面跟随的是需要更新的dept表。

set 是SQL更新语句的关键字,该关键字跟随在表名的后面,是"设置"的意思。在后面跟随所要更新的列值。比如这里loc为dept表的字段,把该值更改为"Shanghai"。

where 是SQL语句中的条件限制关键字,即操作的数据需要满足的条件,这个关键字可以在增删改查SQL语句中使用,一般用在SQL语句的后面来表示条件。条件可由列名、字符串、算数表达式等组成。

deptno=50 是SQL条件语句的一部分,表示在dept表中把部门号等于50的数据查询出来。

3.4删除(delete)

删除Development开发部门

SQL> delete from dept where deptno=50;

51174a190e0a2be13a824b4893084c2c.png

delete from 是SQL语句中删除数据必不可少的关键字,并且位于SQL语句的开始位置。后面跟随的是要删除的dept表,表名后面则是where条件限制语句。

四、综合运用

4.1 查询出公司每个员工的号码、名字、薪水。

SQL> select empno ,ename,sal, from emp;

92e685d6b2fcc31e42f67ee0467bb279.png

select关键字后可以选择查询任意列,列与列之间用逗号隔开。后面跟随的empno、ename、sal均为emp表的列。

4.2调整查询结果表的列次序,可以把最关心的重点列放到最前面。

SQL> select ename,sal,empno from emp;

d547d115201df61c1260da01b7e60d63.png

4.3在oracle的sqlplus中,英文字符默认是左对齐,而数字则默认是右对齐。

查看员工的姓名和入职时间,其中hiredate的时间格式与我国习惯不符,毕竟Oracle数据不是中国人开发的。

SQL> select ename,hiredate from emp;

d963270bd907fea3226ea49b8017b3e0.png

把时间设置为我们习惯的时间格式,仅仅是设置为当前会话场景。

SQL> alter session set nls_date_format='YYYY-MM-DD';

13539ef5c03521cff648bd682575d3b0.png

alter 更改数据库参数的SQL语句关键字。

session 只更改当前会话的时间格式

nls_date_format 数据库的日期参数,日期虽然一样,但可以有不一样的时间日期格式

4.4查询当前数据库时间

SQL> select sysdate from dual;

f56459ba5610a2aebb5484758731c80b.png

dual是oracle数据库的一个虚表,即不是真实存在的表,在查询用到计算、常量、表达式等时可以使用的dual虚表。

4.5查询在公司服务时间的员工信息,使用当前时间减去员工的入职时间,就可以得到在公司服务时间,这里需要引入round函数。

SQL> select ename,round((sysdate-hiredate)/365,0) from emp;

c1f9bca0bf8d295862d12498a0d613e7.png

round(x,y) 是Oracle数据库的一个四舍五入的函数

x 表示这个数字需要进行四舍五入

y 则表示在哪位数进行四舍五入,如果y=0,表示在个位进行四舍五入,y=2表示在小数点后两位进行四舍五入。

4.6根据入职时间求出工作年限并且按照年限(第二列)升序排列

SQL> select ename,round((sysdate - hiredate)/365,0) from emp order by 2;

50fc7a185393e954d01b496050ae43ae.png

Order by 2中,order by 是排序的关键字,2表示按照第二列排序,默认排序是升序。

4.7按照工作年限倒序查询出每个员工的年数

SQL> select ename,round((sysdate-hiredate)/365,0) from emp order by round((sysdate-hiredate)/365,0) desc;

5930e6b6d1b1291ad354938a8fd6ee8d.png

desc 表示排序使用降序来输出数据,即从大到小进行排序。

4.8 Oracle数据库查询入职时间。

SQL> select ename,round((sysdate-hiredate)/365,0) from emp order by hiredate;

e00dae547b883b54580ff8dc05b48553.png

把查询出来的表列名变成中文,方便显示。

SQL> select ename as "姓名" ,round((sysdate-hiredate)/365,0) as "工作(年)" from emp order by "工作(年)" desc;

3b8e87df4eb0eb0c2564cfadd8d4299e.png

as 是列别名的关键字,可以用英文双引号""里面的字符来表示该列的别名。如"姓名"是ename列的别名,查询输出数据时以"姓名"代替了ename列名。

工作年数的列名则变成了"工作(年)",在Oracle数据库中,同时允许用列的别名进行排序。

4.9查询工资

SQL> select ename,sal from emp order by sal;

9938b23af36830e63123a7f556f2702d.png

4.10 每个人增加1500元进行显示

SQL> select ename,sal+1500 from emp order by sal;

403527c427b51bdd9f8f2c9152bd5c17.png

4.11对查询出来的员工薪水进行文字说明

SQL> select ename||'员工本月工资为:¥'|| (sal+1500) as "公司员工本月工资表" from emp order by sal;

9f5b9b931870199bbd640f0c12de509a.png

|| 两个竖杠是oracle的连接符,可以把查询出来的数据和其他字符串连接起来,可以对多个字符串、多个表的列值相连接。

' ' 两个单引号''里面的字符串,可以把里面的字符串输出。即表的列数据和字符串连接在一起输出结果。

4.12查询到部门表中部门有重复的

SQL> select ename,deptno from emp;

ecb7e8e1a6797646e189fbb80b744f97.png

为了清晰显示有哪些部门,可以过滤掉重复的部门值

SQL> select distinct deptno from emp;

7c65d5448ddf63fcf9a6ce14a112f69e.png

distinct是去掉重复数据的SQL关键字,这个去掉重复数据的关键字经常用到。

4.13查询工资少于2000元的员工,并按照薪水排序。

SQL> select ename,sal from emp where sal<=2000 order by sal;

88aab22386f12df8addbc55b4e6541bd.png

Order by需要在where的后面,常用运算符如下

">"大于

">="大于等于

"

"<="小于等于

"<>"和"!="都是不等于

"="等于

4.14查看薪水在1500到2500元之间的员工信息并且按照薪水排序

SQL> select ename,sal from emp where sal between 1500 and 2500 order by sal;

510494f8baac270d2e7806a44ed6a49c.png

between…and…用于条件where之中,表示数值介于两个数值之间,这里表示是工资在1500-2500之间。

4.15查询拿保底工资的销售人员

SQL> select empno,ename,job,sal from emp where job='SALESMAN' and sal=1250;

0acce408eaeed8db7c752981bd009206.png

where条件中的and表示"而且"的意思,即条件既要是销售人员,而且工资也是1250元的员工。

4.16查看没有奖金及工资少于1500元的员工

SQL> select empno,ename,job,sal,comm from emp where comm is null or sal<=1500;

165a3d4aa71c4228323f74df8b08a49d.png

or 是或者的意思,这里表示没有奖金或者工资少于等于1500元的员工;

null 在oracle数据库中是一个很特殊的值,它即不表示0,也不表示空,是一个不能确定的未知数。

4.17员工的工资加上提成,那个员工的工资是最少的

SQL> select empno,ename,job,sal,comm,sal+nvl(comm,0) from emp where comm is null or sal<=1500 order by sal+nvl(comm,0);

33da8b968fef5cc7e86a678dcc40350f.png

Nvl(X,Y)是数据库的一个内部函数,表示如果X有值,则返回X的值,如果X的值为null,则默认为Y。

这里则是用comm(提成)替代X,"0"代表Y,如果有提成,则工资加上提成;如果没有提成,则表示提成是"0",只有工资。把员工的薪水加上提成作为排序,可以明显看出来员工的收入多少。

4.20查看姓名中"M"开头的员工

SQL> select ename,job,sal from emp where ename like 'M%';

ba2d0a81f3295d2bcbbb532cb5ee895c.png

Like 是条件where中模糊查询的关键字,后面的字符串需用双单引号括起来,%在SQL语句中表示字符后面的所有字符,其中M%表示以M开头的所有字符。

4.21查询哪些员工属于销售人员、分析师、管理人员。

SQL> select ename,job from emp where job in ('SALESMAN','ANALYST','MANAGER');

fc6c50a7bceb728fb5a23ef36bdf4f12.png

in 表示在某个列中存在多个值均符合,或者使用or代替也可。

下面用or来代替上面的SQL语句,同时看看有哪些不一样。在oracle数据库的命令窗口输入下面的SQL语句:

SQL> select ename,job from emp where job='SALESMAN' or job='ANALYST' or job='MANAGER';

5c3d5cffe1980365e2d197cbe2e81c00.png

4.22统计公司每个岗位都有多少个员工

SQL> select job,count(*) from emp group by job;

a22060691b121522450b733bb8a63818.png

group by 是oracle数据库中的分组函数,可以这样理解,按照工作职位进行分组,然后统计每个职位的人数。

Count(*)是统计数量的函数,这里统计公司每个岗位都有多少人。

4.23统计公司每个岗位都有多少个员工,并按数量进行排序。

SQL> select job,count(*) from emp group by job order by count(*);

2e00d62da49c71100980262ea698875f.png

4.24统计公司每个部门有哪些员工,并按照部门号进行排序。

SQL> select deptno,count(*) from emp group by deptno order by deptno;

a82751bebc4aa4aa327239f5e5c7ba6c.png

从图中可以看到,10号部门有3人,20号部门有5人,而30号部门有6人。

4.25求公司总共支付员工的薪水

SQL> select sum(sal)+sum(nvl(comm,0)) from emp;

f4795e3bc3a7c9615c0d97839f6c90c1.png

sum 是Oracle数据库内部的一个函数,即所有数值之和。

4.26求公司员工的平均工资

SQL> select round(avg(sal),2) from emp;

68deb68c8abc7a5d45f7baa3d7ca4455.png

avg是oracle数据库的求平均值函数。

f801bfd6cec586385a33a9b90deb2908.png

4.27统计公司所有员工中最高、最低、工资及相差多少

SQL> select max(sal),min(sal),max(sal)-min(sal) from emp;

164ea97aef5d0537da53f3a4e9b468a3.png

max 是Oracle数据库内部的函数,专门统计最大的数值

min 是Oracle数据库的内部函数,专门统计最小的数值

4.28列出平均工资大于2500的岗位

SQL> select job,avg(sal) from emp having avg(sal)>2500 group by job;

f26c5c9d88ebaaefbe9e3e03efd74ef8.png

having 在使用group by分组时,如有条件限制需要使用having,而不能使用where.即在group by中所对应的条件限制为having,上面的例子中数据库首先使用group by进行岗位分组,再使用avg(sal)求出每个岗位的平均工资,最后平均工资大于2500元由having进行限制。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值