一、存储数据相关知识
1、内存:存储的速度很快 ;数据比较容易丢失 ;价格贵;
2、文件(硬盘):存储的速度特别慢;数据永久存储;便宜;
3、数据库:它不属于内存和文件之外的存储方式,它只是数据存储时,内存与文件(硬盘)结合的一种解决方案。
二、主流数据库
1、oracle:企业级大型数据库 公司:甲骨文公司
oracle的版本:oracle9i oracle10g oracle11g oracle12c
2、MySQL:小型数据库 开源免费
3、db2:IBM数据库
4、sqlserver:微软数据库
三、搭建数据库环境
1、在oracle在安装时候,会自动根据当前的系统编码格式设置为中文编码,修改成英文环境:
添加系统环境变量:
变量名:NLS_LANG
变量值:american_america.AL32UTF8
执行完毕第三步,可以将第一步的环境变量删除,更改回中文环境:
变量名:temp_NLS_LANG
变量值:american_america.AL32UTF8
2、导入脚本
在SQL >
输入@路径\脚本名称
例如:SQL>@C:\Users\j\destop\课件\guojiao.sql
3、查询是否导入成功,查询脚本中的任意一个表结构,如脚本中有表emp则
在SQL>输入:desc emp;
出现表结构则说明导入成功。
四、如何通过DOS命令访问数据库:
1、访问本机数据库
DOS命令行下输入:sqlplus
sql> 账号 /密码
2、访问其他计算机的数据库(本机需要支持sqlplus命令)
DOS命令行输入:sqlplus
sql>账号/密码@IP地址;
五、常用的数据库命令语句:
1、清除屏幕:host cls
2、显示宽度,调整:col列名for a长度;
六、SQL语句分类
结构化查询语言 大多数的数据库,操作上基本上都一致!
SQL语言的五种分类:
DCL:数据库控制语言:grant、revoke
DDL数据库定义语言:create、drop、alter
DML数据库操作语言:insert、update、delete
TCL事务处理语言:commit、rollback、savepoint
DQL数据库查询语言:select
七、from子句
1、如何查询单个列的值
格式:select 列名 from 表名;
例子:查询员工表格中的员工编号
语句:select ID fromemp;
2、如何查询多个列的值
与查询单个列的方式基本相同,多个列之间使用英文逗号隔开!
格式:select 列名1,列名2。。。列名n from 表名;
案列:查询员工表中的员工编号以及对应的月薪
语句:select ID,salary from emp;
3、设置列显示的长度:
col 列名 for a长度;//不能设置数字列
例如:col last_name for a20;
4、如何查询一个表中的所有列:*
*表示所有(all),与查询单列的方式基本一致,把列名改为*号即可
格式:select * from 表名;
例子:查询员工表格中的所有员工信息
语句:select * from emp;
八、查询时额外的操作
在查询时候,可以对结果进行运算,例如算数运算,字符串拼接,直接在列名处进行运算即可
1、算数运算 + - * /
-案列:计算员工的年薪(salary*16)
语句:select ID,salary*16 from emp;
九、null运算
数据库中所有的类型默认值为null,oracle中null值经过运算后,结果永远为null
1、使用NVL函数运算null值:
格式:nvl(参数1,参数2); 关于数据库中的null值一定要尽早处理。
作用:用来处理null,如果参数1为null,则返回参数2,如果参数1不为null则返回的参数是1.
例如:nvl(salary,0):如果员工有工资,则返回的是工资,如果没有工资则返回0
练习:计算员工的年薪加奖金
语句:select id ,salary*16+16*nvl(commission_pct,0) from emp;
十、列的别名
1、有时候我们在对表格中数据进行查询,数据的列名出现变化,我们需要一个更见名知意的列名来表示数据。
2、格式:select 列名1 别名1,列名2 别名2.。。from 表名;
3、特殊的别名:有时候我们在别名中可能会存在一些特殊的字符,如空格!
解决此问题的方案又叫别名的原样显示:之前别名无论是否大写,显示时候都是大写,通过双引号引住的别名会原样显示(大小写敏感)
例如:select id,last_name,salary*16 "y sal" from emp;
十一、SQL中的字符串
oracle中关于大小写的规则:
在SQL中,只有字符串是大小写敏感的。
例如:String text="你好";
syso(text);
显示:你好
1、Java中:
定义形式:使用双引号引住:“你好”
表现形式:表现形式中引号是不存在的:你好
2、oracle中:
定义形式:使用英文单引号引住:‘你好’
表现形式与Java一致:你好
十二、字符串的拼接
1、字符串的拼接
在oracle中字符串拼接:||
例子:查询员工表中的员工姓$名,并给这个字段起个别名为name;
select e.last_name||'$'||e.first_name name from emp e;
2、如何在字符串中拼接一个单引号
字符串单引号在oracle中编写方式为:''''
练习:查询员工表格中的姓'名
语句:select last_name||''''||frist_name as name from emp;
注意:select '字符串1' ||'字符串2'from dual; 结果: 字符串1字符串2
1、select 'select* from emp where no='''||2||'''' from dual;
结果:select* from emp where no='2'
注意:这个结果是我想要的!!!
2、 select 'select* from emp where no='''||2||'' from dual;
结果:select* from emp where no='2
解释:||后面的两个单引号是成对存在的
3、 select 'select* from emp where no='''||2||''' from dual;
结果:错误提示:引号内的字符串没有正确结束!
解释:单引号要么成对存在,要么作为转义符存在,||'''中前两个单引号成对存在,第三是孤立的所以报错。
4、select 'select* from emp where no='''||2||' from dual;
结果:错误提示:引号内的字符串没有正确结束!
解释:||'中单引号孤立存在。
5、 select 'select* from emp where no='||2||'''' from dual;
结果:select* from emp where no=2'
解释:'||中的单引号和'select 中的单引号成对存在。
6、 select 'select* from emp where no=''||2||'''' from dual;
结果:错误提示:引号内的字符串没有正确结束!
解释:''||中的第一个单引号和'select中的单引号成对存在,而第二个单引号孤立的,报错。
十三、数据的排重显示
排重关键字:distinct,在查询时编写到字段的前面加空格即可。
-单字段排重
在查询时,如果指定排重的单个字段产生了重复,则忽略此行数据。
-查询员工的薪资
select salary from emp;
-查询员工的薪资,并对薪资进行重复显示
select distinct salary from emp;
-多字段排重
在查询时,如果指定的多个字段出现重复,则忽略掉此行数据。
-查询员工的薪资与领导编号,并对这两个数据进行排重操作!
select distinct salary,manager_id from emp;