--SQL的组成
--DCL: 数据控制语言 grant(授权)、revoke(撤消)
--DDL: 数据定义语言 create drop alter truncate
--DML: 数据操作语言 select insert update delete
--TCL: 事务控制语言 rollback commit savepoint
--事务:
--原子性:
--隔离性:
--一致性:
--持久性:
--表示事务的结束:
--commit:持久化, 把数据写入数据库中,
--rollback : 返回事务开始的地方,
--保存点
--savepoint 回滚点:在事务建立不同的回滚点
--rollback to 回滚点 : 返回到那一个回滚点
--DCL: 数据控制语言 grant(授权)、revoke(撤消)
--DDL: 数据定义语言 create drop alter truncate
--DML: 数据操作语言 select insert update delete
--TCL: 事务控制语言 rollback commit savepoint
--事务:
--原子性:
--隔离性:
--一致性:
--持久性:
--表示事务的结束:
--commit:持久化, 把数据写入数据库中,
--rollback : 返回事务开始的地方,
--保存点
--savepoint 回滚点:在事务建立不同的回滚点
--rollback to 回滚点 : 返回到那一个回滚点
--oracle中事务自动启动
DML:
--插入数据 insert
--插入一条数据
insert into person (id, name, tall, birthday, phone, sex,computerID) values (1008, '小白', 1.92, '12-3月-92', 1223423161,default,10001);
--插入多条数据
insert into person
select 1002, '小明', 1.78, sysdate, '12345678896',null from dual union
select 1003, '小名', 1.88, sysdate, '12345628896',null from dual union
select 1004, '小利', 1.74, sysdate, '12345673396',null from dual;
--更新数据 update
--1、更新符合条件的数据
update person set tall = 1.70 where id = 1003;
--2、更新所有数据
update person set tall = 1.70;
--删除数据 delete
--第一种更新符合条件的数据
delete from table_name where colunm_name = comunm_values;
delete from person where id = 1001;
--删除所有
delete from table_name;
delete from person;
--不是DML
truncate table person;--数据不能通过rollback回退回来;
--查询数据 select
--第一:查询所有 * 表示所有字段
select * from table_name;
--第二:查询所有数据的部分字段 []表示可有可无
select column_name [,.....] from table_name;
--第三:查询部分数据的部分字段 where 表示 满足的条件
select column_name [,.....] from table_name where column_name = column_value;
--查询其他用户的表 用户名.表名
scott.emp;
--普通用户之间不能互相访问表,需要访问,必须通过授权
grant 权限 on 表名 to 用户名;
--给其他用户查询权限:(把scott 用户的emp表的查询权限赋给xh)
grant select on emp to xh;
--模糊查询:
--like :通配符 % 表示任意长度的任意字符 _ 表示一个长度的任意字符,只能对字符使用
--查询名字带有A的ename
select ename from scott.emp where ename like '%A%';
--查询名字第二个字母A的ename
select ename from scott.emp where ename like '_A%';
--between... and ...可以使用 数字和日期
--查询sal在1000到2000的 用户
select * from scott.emp where sal between 1000 and 2000;
--日期 转字符串 :to_char(日期,要转化的日期格式)
select to_char(hiredate, 'yyyy"年"MM"月"dd"日,"day') "入职日期"from scott.emp;
入职日期
-----------------------
1980年12月17日,星期三
--字符串转日期:to_date(日期字符串,按日期格式)
--添加数据
insert into scott.emp(empno, ename, hiredate) values (2233, 'A_ABC', to_date('2014-2-21', 'yyyy-MM-dd'));
--查询从2013年1月1日到2015年7月1日的员工
select * from scott.emp where hiredate between to_date('2014-1-1', 'yyyy-MM-dd') and to_date('2015-7-1', 'yyyy-MM-dd');
--in
--员工编号是: 7788,7698,7900的员工信息
select * from scott.emp where empno =7788 or empno =7698 or empno =7900;
select * from scott.emp where empno in(7788,7698,7900);
--查询:ename以 'A_'开头的员工信息
select * from scott.emp where ename like 'A_%';--不行,_被作为匹配符来使用
select * from scott.emp where ename like 'A\_%' escape '\'; --escape把\变成转义符
--函数:
--字符串:
--initcap 把首字母变成大写
select initcap('&str') from dual;
--upper :大写
select upper('&str') from dual;
--lower :小写
select lower('&str') from dual;
--substr(字符串,截取的开始位置,截取长度) ,截取子字符串,开始位置是1
select substr('&str',3,2) from dual;
--instr(字符串,查找字符串) 查找字符串,返回初始位置
select instr('&str','&substr') from dual;
--replace(字符串,要替换的字符串,要替换成的字符串)
select instr('hello','l','pp') from dual;
--length(字符串) 返回字符串的长度
select length('hello') from dual;
--rtrim('') 返回字符串的长度,去掉右空格
--ltrim('') 返回字符串的长度,去掉左空格