mysql的DML操作笔记

/*
mysql的DML操作
插入数据:
1.选择插入
语法:
insert into 表名 (列名1,列名2,列名3)values(值1,值2,值3);
2.完全插入
insert into 表名 values(值1,值2,值3,值4);
注意:如果主键是自动增长,需要使用default或者null或者0占位
*/

-- 示列向departments表中添加一条数据,部门名称Telemarketing,工作地点ID为5

insert into departments(department_name,location_id) values ('Telemarketing',5);

-- 示列向departments表中添加一条数据,部门名称intermediary,工作地点ID为6使用default占位

insert into departments values (default,'intermediary',6);

-- 示列向departments表中添加一条数据,部门名称sale,工作地点ID为7使用null占位

insert into departments values (null,'sale',7);

-- 示列向departments表中添加一条数据,部门名称maintain,工作地点ID为8使用0占位

insert into departments values(0,'maintain',8); 

/*---------------------------------------------------------------------------------------*/

/*
自动增长(auto_increament)
mysql自动增长的要求
1.1个表中只能有一个列为自动增长
2.自动增长的列类型必须是整数类型
3.自动增长只能添加到具备主键或者唯一约束的列上
4.删除主键约束或唯一约束,如果该列拥有自动增长能力,则需要先去掉自动增长然后在删除约束
*/

-- 创建emp2表。包含id该列为主键,包含name,包含seq_num要求该列为具备唯一约束,该列的值为自动增长

create table emp2(
	id int primary key,
	name varchar(20),
	seq_num int unique auto_increment
);

/*
---------------------------------------------------------------------------------------------
*/

/*
mysql的默认值处理:
在mysql中可以使用default为字段设定一个默认值,如果插入数据时未指定该列值,
那么mysql会将默认值添加到该列中
创建表示指定默认值
语法:
create table 表名(
		列名1 类型,
		列名2 类型 默认值
);
*/

-- 示列创建emp3表该表包含emp_id主键且自动增长,包含name,包含address该列默认值为"未知"

create table emp3(
	emp_id int primary key auto_increment,
	name varchar(20),
	address varchar(10) default '未知'
);

/*
修改表添加列的默认值
语法:
alter table 表名 modify 列名 类型 default 默认值
alter table 表名 add column 列名 类型 default 默认值
*/

-- 示列修改emp3表,添加job_id该列的默认值为0

alter table emp3 add column job_id int default 0;

/*
插入数据时默认值处理
如果在插入数据时并未指定该列的值,那么mysql会将默认值添加
到该列中,如果完全插入需要使用default来占位
*/

-- 示列向emp3表中添加数据,要求address列与job_id列使用默认值作为该列的值

insert into emp3(name) values('admin');

insert into emp3 values(0,'tom',default,default);

/*
---------------------------------------------------------------------------------------
*/

/*
更新数据(update)
语法:
update 表名 set 列名1=值1,列名2=值2...... where 条件
mysql的update特点
1.更新的表不能在set和where中用于子查询。(oracle可以)
2.update后面可以做任意的查询
*/

-- 示列更新emp3表中的id为1的数据,修改address数据为BeiJing

update emp3 set address="BeiJing" where emp_id=1;

-- 示列更新emp3中id为2的数据,将地址修改为与id为1用户相同

-- oracle写法 
-- update emp3 set address=(select address from emp3 where emp_id=1) where emp_id=2;

-- mysql写法 
update emp3 e,(select address from emp3 where emp_id=1) em set e.address=em.address  where emp_id=2;

/*
------------------------------------------------------------------------------------------------------
*/

/*
删除数据(delete)
语法:
delete from 表名 where 条件
注意:如果没有where条件那么将会删除所有数据
*/

-- 示列删除emp3表中emp_id为1的雇员信息。

delete from emp3 where emp_id=1;

/*
使用truncate清空表
语法:
truncate table 表名
*/

-- 示列删除emp3表中的所有数据

truncate table emp3;

/*
delete和truncate的区别
1.truncate是整体删除,delete是逐条删除
2.truncate不写服务器log,delete写服务器log
3.truncate是会重置自增值,相当于自增列会被置为初始值,而delete删除后,自增值仍然会继续累加
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值