SQLCookbook 学习笔记 4插入 更新 删除

插入语句

<span style="font-size:18px;">insert into dept (depto,dname,loc) values (1,'A','B')</span>

在所有数据库系统中,插入语句都是一样的。


插入默认值
insert into d (id) values ( default )
使用关键字 default ,显式地指定插入默认值,而不用管默认值是什么 。

在MySQL中,如果所有列都有默认值,可以使用空的列值。
insert into d vales ()

对于有的列有默认值,有的列没有默认值的情况,在插入时候,只需要将有默认值的列 排除在外,自然就插入默认值了。

可以使用NULL 代替默认值,插入语句为:
insert into d (id, foo) values (null, 'Brightren')

可以在insert 语句中明确使用NULL值, 这样可以给该列指定为空值,而不管它是否有默认值。

从一个表向另外的表中 复制行
insert into d (column_1,column2) 
select column_1,column2 from d2 where id = 2;

如果要复制所有行,就不需要where 子句。


复制表定义
create table dept_2 
as 
select * from  dept where 1 = 0 

阻止对某几列的插入
创建一个视图
create view new_emp  as 
select ename,job from emp

insert into new_emp (ename, job) values ('Mike','Editor')


或者内联为
insert into 
(select ename,job from emp) 
values  ('Mike','Editor')

视图的插入操作是一个复杂的问题 。


更新操作


update emp set sal = sal *1.10 where deptno = 20;


在SQL中, 只有一种方法可以限制从表中返回的行,那就是使用WHERE子句。

删除
delete from emp
delete from emp where some condition

当需要删除单个记录时,一般使用主键或其他唯一的关键字来作为判别条件。

delete from emp where deptno not in (select deptno from dept)


删除重复记录
delete from dupes where
id not in (select min(id) from dupes group by names)
这个句子会吧 names 字段重复的,删除,只剩下id最小的一个。

聚集函数
聚集就是聚集运算

查询发生过3次以上事故的员工

select deptno from dept_accident group by depno
having count(*)  >= 3

having子句。

前4章介绍了基本的 增删改查操作。

你可能感兴趣的:(SQLCookbook 学习笔记 4插入 更新 删除)