《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·005【表的CRUD操作(DML语句)】

一、表的CRUD操作(DML语句)

1、insert语句

格式

-- 插入单条记录
insert into 表名 [列名列表]
values(record_value1, record_value2, ..., record_valuen);

-- 插入多条记录
insert into 表名 [列名列表]
values
	(record_value1, record_value2, ..., record_valuen),
	(record_value1, record_value2, ..., record_valuen),
	...
	(record_value1, record_value2, ..., record_valuen);

-- 通过子查询插入记录
insert into 表名 [列名列表]
子查询;
  • 注:对于【含空字段】、【带有默认值的字段】、【自增字段】,在insert的时候可以不指定其值

举例

create table student(
	sno int primary key auto_increment,
	sname varchar(20) not null,
	gender enum('男', '女') default '男',
	birthday date,
	score int
);

insert into student(sno, sname, gender, score, birthday)
values(1, 'LILY', '女', 89, '1989-09-08');

insert into student
values(2, 'JIN', default, '1999-10-01', 90);

insert into student(sname)
values('LIUTAO');

insert into student
values(NULL, 'JIM', default, now(), 90);

insert into student
values(NULL, 'JIM2', default, sysdate(), 90);

insert into student(sname, score, birthday)
values
	('韩梅梅', 90, now()),
	('李四', 78, '1999/09/10'),
	('张三', 88, '1988-10-01');

insert into student(sname, gender, birthday, score)
select sname, gender, birthday, score from student;

2、update语句

格式

update 表名
set1=1 [,2=2, ..., 列n=值n]
[where 条件表达式];

举例

update dept10
set sal=1000;

update dept10
set sal=1500
where empno=7782;

update dept10
set sal=1500, deptno=20
where empno=7782;

3、delete语句

格式

delete from 表名
[where 条件表达式];

举例

-- 1、删除经理编号为7566的员工记录
delete from emp
where mgr=7566;

-- 2、删除工作在NEW YORK的员工记录
delete from emp
where deptno in (select deptno from dept where loc='NEW YORK');

-- 3、删除工资大于所在部门平均工资的员工记录
delete from emp e1
where sal>(select avg(sal) from emp e2 where e2.deptno=e1.deptno);

二、其他注意点

1、MySQL查询区分大小写的方式

方法一:查询时加上binary

select * from dept
where binary loc='New York';

方法二:创表时指定校对集

可以对需要修改的字段设置好校对集(被设置的字段区分大小写)

create table test11(
	name varchar(20) character set utf8 collate utf8_bin,
	job varchar(20)
);

insert into test11
values
	('LILY', 'CLERK'),
	('JIM', 'HR');

/* 字段name区分大小写 */
select * from test11
where name='Lily';

/* 字段job不区分大小写 */
select * from test11
where job='hR';

可以对整张表设置好校对集(整张表的字段区分大小写)

create table test11(
	name varchar(20),
	job varchar(20)
)character set utf8 collate utf8_bin;

insert into test11
values
	('LILY', 'CLERK'),
	('JIM', 'HR');

/* 字段name区分大小写 */
select * from test11
where name='Lily';

/* 字段job区分大小写 */
select * from test11
where job='hR';

方法三:设置MySQL系统变量lower_case_table_names的值为0

可以通过以下SQL语句观察值

select @@lower_case_table_names;

如果要临时修改,需要在命令行里修改该变量的值
如果要永久修改,需要在配置文件里修改该变量的值

2、truncate语句与delete语句的区别

truncate语句

truncate table 表名;
truncatedelete
DDL语句DML语句
只能删除表中所有记录可以删除表中指定记录
释放存储空间不释放存储空间
不可以用rollback回滚可以用rollback回滚
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

God-Excious

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值