SQL关键字的顺序:SELECT …. FROM …. WHERE …. GROUP BY …. HAVING …. ORDER BY …. LIMIT
001、SQL新增
1. 新增字段
alter table 表名 column 字段名;
2. 新增数据
insert into:插入一条新的数据 INSERT INTO 表名称[(列1,列2,列3,…)]VALUES(值1,值2,值3,…);向myemp数据表之中增加一条新的数据
可以先输入desc emp; 查看表中都有那些列,以及数据类型
3. 新增表格
复制一个表:如复制emp表 —— 新的表名称为myemp,CREATE TABLE myemp AS SELECT FROM emp ;select from tab; 查看当前用户所有表
4. 插入日期型数据
to_date用法:
insert into 表名称 (列1,列2) values (值1,todate(‘20210926’,’yyyymmdd’))
002、SQL删除
1. 删除字段
alter table 表名 drop colum 字段名
2. 删除数据
drop:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表,出没场合:drop table tb —tb表示数据表的名字
truncate:出没场合:truncate table tb,绝招:删除内容、释放空间但不删除定义(表的数据结构还在)。与drop不同的是,他只是清空表数据而已,他比较温柔.注意:truncate 不能删除行数据,要删就要把表清空
delete:出没场合:delete table tb,虽然也是删除整个表的数据,但是过程是痛苦的(系统一行一行地删,效率比truncate低) 或 delete table tb where 条件(删除指定的列)绝招:删除内容不删除定义,不释放空间。三兄弟之中最容易欺负的一个
delete删除单行数据
DELETE FROM employees WHERE employee_id = 100;
delete删除多行数据:
DELETE FROM employees WHERE employee_id >= 101 and employee_id <= 105;
3. 删除表格
4. 删除字段
alter table [表名] drop column [字段名]
003、SQL修改
1. 修改字段名
alter table 表名 CHANGE 旧字段 新字段
2. 修改数据
UPDATE 表名 SET 列1=新值1,列2=新值2 WHERE 筛选条件
3. 修改表名称
004、SQL查询(单表查询)
1. 查询表的所有字段
select 'column_name' from information_schema.columns where "table_name"='表名';
2. 查询表中某一个字段是否存在
select count(*) from information_schema.columns where table_name = '表名' and column_name = '字段名'
005、SQL查询(多表查询)
内连接:inner join…on…:从左表中取出每一条记录,去右表中与所有的记录进行匹配: 匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留.,语法:select from 左表 [inner] join 右表 on 左表.id = 右表.id; (在MySQL中inner可以省略)
左外连接:列出左表所有内容,右表只显示与左表相关内容,右表无内容的显示null,select from a left join b a.id = b.id;
右外连接:列出右表所有内容,左表只显示与由表相关内容,左表无内容的显示null,select from a right join b a.id = b.id;
全外连接:列出左表与右表的所有内容,select from a full join b a.id = b.id;
006、拓展
1. 排序:oder…by asc/desc
select * from a oder a.id by asc; 升序,从低到高
select * from a oder a.id by desc; 降序,从高到低
2. trunc
3. exists
exists用法:在子查询中,exists函数为在子查询结果为true时,执行子查询前的sql;当子查询结果为false时,整条sql语句为空,如下:
select * from aa where exists (select * from bb)
当select * from bb 查询结果为false,则整条sql返回为空
当select * from bb 查询结果为true,则执行select * from aa,结果返回为select * from aa SQL结果