我刚开始接触SQL语句的时候,用的第一本书应该是疯狂Java讲义,也就是李刚的。面试的时候经常出现题目来问基础的语句,我就来进行一下总结。
首先,我们要明白SQL是什么?SQL全称Structured Query Language(结构化查询语言)。
SQL主要分为四大类:
DDL(Definition):数据库定义语言 create(创建)、alter(修改)、drop(删除)、truncate(截短)主要针对的是数据库
DCL(Control):数据空控制语言grant(授予)、revoke(撤回)
DML(Manipulation):数据库操作语言:主要用insert(插入)、update(更新)、delete(删除)
主要针对的是数据库里面的表
事务控制语句:commit(提交)、rollback(回滚)、savepoint(储存)三个关键字完成。
DDL:
Cretae:
表 table
约束 constraint
视图 View
索引 index
函数 function
储存过程 procedure
触发器 trigger
alter:修改表结构
alter table 表名
然后就是增加列定义、修改列定义、删除列、重命名列
都要修改表定义
增加是add
修改是modify
drop删除的还是列
rename to还是表名
drop删除表的语法
drop table 表名
truncate表
这个是截断表,意思:是将表里面的数据全部删除,但保留表的结构。
DML
insert into
用于向指定数据中插入记录,一次只能插入一条记录
insert into 表名
values(value)[,value]);
update语句
用于修改数据表的记录,每次可以修改多条记录,
通过where子句限定修改哪些记录
where子句是一个条件表达式
delete from语句
delete from student_name
[where condition];
总结下DML和DDL的区别是,
DDL就是对数据库进行操作,可以修改表的结构
DML:主要是对数据库里面的记录进行操作,不能修改表的结构
单表查询
select语句的功能就是查询语句
后面接列
select 列 from 数据源 where 行
如果选择所有列用select* from 数据源
子查询:
首先明白什么叫子查询?子查询就是在查询语句中嵌套另一个查询,子查询可以支持多层嵌套。
接着是子查询的位置:只可以出现两个位置
1 from后面当成数据表
2出现在where条件后当过滤条件的值
子查询的注意事项
1子查询要用括号括起来
2子查询当成数据表时,可以为子查询器别名,尤其是作为前缀数据列时,必须给子查询器别名
集合运算
union运算(并)
select语句 union select 语句
minus(差)
select 语句 minus select语句
intersect(交)
select语句 intersect select语句