SQL 的分类:
DDL:创建create,删drop,改alter
DML:增insert、删delete、改update
DCL:数据控制语言:赋权:grant,revoke
DQL:查询 select等
TCL:事务控制语言:提交commit,回滚 rollback
SQL 的注释
--- 代表单行注释
/*……*/ 代表多行注释
SQL 的表的别名
select * from 表名 as 别名
1、创建表结构
create table 表名(
列名1 类型(字符串 varchar2(10)),
列名2 类型(数字 number(10),
列名3 类型 (数字 number(10));
2、DML语句的增删改
(1)增加语句
insert into 表名(列名1,列名2,列名3) values(数据1,数据2,数据3);
insert into 表名 values(数据1,数据2,数据3);——默认为所有列名
(2)删除数据(drop,delete,truncate)
drop————删除表数据和表结构
drop table 表名;
delete————删除某条表数据(最好提前备份)
delete table 表名 where 删除条件;
truncate————删除表中所有数据,保留表结构
truncate table 表名;
——————备份表————
create table 备份后表名 as 备份前的表名;
(3)修改表数据
update 表名 set 列名=修改后的数据 where 列名=修改前的数据;
3、查询表数据
(1)查询单表中所有的数据
select * from 表名; ————“ * ”代表表中所有的列
select 列名1,列名2,列名3 from 表名;
(2)查询单表中的某一条数据、多条数据、满足多个条件的数据(>大于,<小于,=等于,!=不等于)
(某一条数据)select * from 表名 where 条件;
(多条数据)select * from 表名 where 条件1 or 条件2;
(满足多个条件的数据)select * from 表名 where 条件1 and 条件2……;
(3)关联多个表(多个表中要有相同的列名用于关联)
第一种:select 别名1.*,别名2.* from 表1 as 别名1,表2 as 别名2
where 别名1.列名1=别名2.列名2;
第二种:select 别名1.*,别名2.* from 表1 as 别名1
left join 表2 as 别名2 on 别名1.列名1=别名2.列名2;
【所谓的关联学术称为‘联合查询’】
联合查询分为:
交叉连接(又称为笛卡尔积连接):
select e.*,d.* from emp e cross join dept d;
外连接(左连接,右链接):
on的后面可以加and或者where
区别是:执行顺序的不同
on后面加and,代表连接条件是两个条件同时满足然后显示,出来的结果是以主表为主符合条件
on的后面加where,代表的是先满足关联的条件(也就是on)然后再去判断符合where条件的数据,查出来的数据只有符合where条件的才会被显示
左连接,以左表为主
select * from 表1 as 别名1 left join 表2 as 别名2 on 别名1.列名1=别名2.列名2
右连接,以右表为主
select * from 表1 as 别名1 right join 表2 as 别名2 on 别名1.列名1=别名2.列名2
自连接:自己跟自己连接
select 别名1.*,别名2.列名1 列名1的中文名 from 表名 别名1
join 表名 别名2 on 别名1.mgr=别名2.empno
内连接:
select 列名1.*,列名2.* from 表名1 别名1
inner join 表名2 别名2 on 别名1.列名1=别名2.列名2;
不等连接:(在条件1和条件2之间的所有数据)
select 别名1.*,别名2.* from 表名1 别名1
join 表名1 别名2 on 别名1.列名1 between 条件1 and 条件2;
全连接:
select e.*,d.* from emp e full outer join dept d on e.deptno=d.deptno;