安装PL/SQL Developer
前提:必须安装Oracle的客户端
卸载:
------------------------------
Command Window --> SQLPLUS
SQL Window --> 用来开发SQL程序
-------------------------------
数据库
增删改 --> 30%
查 --> 70%
-
-----------------------------------------------------------------------------
创建表:
create table 表名(
  列1 类型,
  列2 类型
);
字符类型
char  -->定长字符串
  name char(10)
-->保存一个值到name
'abc' --实际存储后的结果是--> 'abc      '
varchar2 -->变长字符串
name varchar2(10)
-->保存一个值到name
'abc' --实际存储后的结果是-->  'abc'
clob --> 保存超大文本 4G
---------------------------
数字类型
所有的数字(整数,浮点数)都是number
定义一个工资的保存列
sal number(5,2)
-999.99 ~ 999.99
年龄
age number(2)
-99 ~ 99
---------------------------
日期类型
date --> 保存年月日,时分秒
--------------------------
二进制类型
BLOB  --> 最大不能超过4G;
------------------------------
结构的基本操作:
0、查看表结构
desc 表名
1、添加一个字段
alter table 表名 add(列 类型);
2、修改字段类型
alter table 表名 modify(列 类型);
3、删除一个字段
alter table 表名 drop column 列名;
4、修改表的名字
rename student to stu
5、删除表
drop table 表名
** 如果需要修改列的名字
新增一个字段,然后迁移数据,最后删除原字段
或者使用图形化工具
如果有值,这种删除,是没有办法恢复的。。
上述修改表结构相关的语句 叫做DDL ,修改,是没有办法恢复的
--------------------------------------------------------------------------------------------------
插入数据
create table test(
id number,
name varchar2(20),
age number(2)
);
1)
insert into 表名 values(所有列的值);
insert into test values(1,'zhangsan',20);
2)
insert into 表名(列) values(对应的值);
insert into test(id,name) values(2,'lisi');
insert into test(name,age) values('wangwu',20);
--------------------------------------------------------------------------------------------------
更新语句
update 表 set 列=新的值 [where 条件] --》更新满足条件的记录
update test set name='zhangsan2' where name='zhangsan'
update 表 set 列=新的值 --》 更新所有的数据
update test set age =20;
----------------------------------
**删除数据:
几种删除方式:
1)
delete from 表名 where 条件 -->删除满足条件的记录
delete from test where id = 1;
delete from test ; -->删除所有
commit; -->提交数据
rollback; -->回滚数据
delete方式可以恢复删除的数据,但是提交了,就没办法了
delete删除的时候,会记录日志 --》删除会很慢很慢
2)
truncate table 表名
删除所有数据 ,不会影响表结构,不会记录日志,数据不能恢复 --》删除很快
3)
drop table 表名
删除所有数据,包括表结构一并删除,不会记录日志,数据不能恢复-->删除很快
------------------------------------------------------------------------------------------
如何查看一个SQL执行了多长时间?
set timing on
小技巧:
如何快速的复制数据?
1、 insert into test select * from test;
2、 create table 表名 select * from test;
-----------------------------------------------------------------
查询:基本查询,复杂查询
1、导入数据
sqlplus状态下:
@文件名
基本查询
select 列 from 表名
select * from 表名 --》 所有列
-----------------------------------------------
1、去除重复的显示
select  distinct 列 from 表名
2、算术运算,不能把NULL参与运算
nvl(列,值) --》如果列为空,则用“值” 替换NULL
nvl(comm,0) ---> 如果comm为空,返回0
每一个列都可以取别名
3、如何连接字符串 ||
-------------------------------------------------------------------------------
日期类型:
to_date(字符串1,字符串2) --> 字符串1 是日期的字符串 ,字符串2 是格式 ,返回一个日期类型。
to_date('1990-1-1','yyyy-mm-dd') -->返回日期类型的1990-1-1
to_date('1990-1-1  13:30:10','yyyy-mm-dd  hh24:mi:ss') -->返回日期类型的1990-1-1  13:30:10
SQL的模糊查询:
like :匹配字符  % :0到多个字符  _ :表示单个字符
如果涉及到NULL
判断 is NULL , is not null
查询结果需要排序
order by 字段
select * from emp order by sal  --》order by后面,默认升序
asc升序
desc 降序
-------------------------------
Oracle的复杂查询,统计函数,分组
sum, count ,avg, max, min
----分组:
student
name    sex  class score
zhangsan  男    10    90
李四      男    10    60
zhang    女    10    86
王五      女    20    90
统计每个班的最高分
max(score)
10
zhangsan  男    10    90    --> 90
李四      男    10    60
20
王五      女    20    90    --> 90
--------------------------------------
统计每个班的男生和女生分别的最高分
分组:
class  sex
max(score)
10  男
zhangsan  男    10    90  --> 90
李四      男    10    60
10  女
zhang    女    10    86  --> 86
20  女
王五      女    20    90  -->90
统计函数不能跟在where条件后面
-
group by 和having子句
group by 字段 -->按照指定的字段进行分组
having 字句 --》 对分组后的结果进行筛选输出
-------------------------------
基本的增删改查语句一般来说,group by后面的字段,最好出现在 select后面
统计函数统计的是每一个分组的结果!!!
----------
关键字出现的顺序
select ??? from .... where ... group by ... having ... order by ....
--------------------
笛卡尔积
两个集合相乘的结果
14* 4 =56
有对的记录,有错的记录,必须加条件筛选正确的记录
-------------------------

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。