08、DML数据操作语言

DML数据操作语言

#DML数据操作语言
/*
涉及到的关键字:insert、delete、update,对表中的数据进行增删改
*/
#一、数据的插入
/*
语法:
insert into 表名(字段1,字段2,...) values (值1,值2,...), (值1',值2',...),...;

特点:
1、字段和值列表必须一一对应,包含类型、约束等必须匹配;
2、数值型的值,不用使用单引号,但是非数值型的值,必须使用单引号;
3、字段顺序没有要求;
*/
INSERT INTO major(id, majorname) VALUES (1, 'Java'), (2, 'JavaScript'), (3,'SQL');

INSERT INTO stu_info(id,NAME,email,borndate,majorid,age)
VALUES (1, '张三', '[email protected]', '1999-9-9', 1, 23),
(2, '李四', '[email protected]', '2000-1-1', 2, 24);


-- 如果是插入所有字段,那么可以 insert into 表名 values ();

INSERT INTO stu_info VALUE(3, '王五', '[email protected]', CURDATE(), 3, 25);
#value 只能插入单行
INSERT INTO stu_info VALUES (4, '赵六', '[email protected]', NOW(), 1, 26);
#values 可以插入多行


#二、自增长列
CREATE TABLE IF NOT EXISTS student (
	id INT NOT NULL AUTO_INCREMENT,
	NAME VARCHAR(20),
	PRIMARY KEY(id)
);

INSERT INTO student VALUES(NULL, '幺鸡');
INSERT INTO student VALUES(NULL, '白板');
INSERT INTO student(NAME) VALUES('陈末'), ('猪头');

SELECT * FROM student;
/*
id	name
1	幺鸡
2	白板
3	陈末
4	猪头
*/

/*
1、自增长列要求设置在一个键上,比如主键或者唯一键;
2、自增长列要求数据类型为数值型;
3、一个表至多有一个自增长列;
*/


SHOW VARIABLES LIKE '%auto_increment%';
/*
Variable_name			Value
auto_increment_increment	1
auto_increment_offset		1
*/
#默认起始索引1,步长1

#在MySQL中不支持设置变量来更改起始索引,但是可以设置步长 SET auto_increment_offset = 10



#三、数据的修改
/*
1、修改单表的记录
update 表名 set 字段1 = 值1, 字段2 = 值2, .... where 筛选条件;

2、修改多表的记录(级联更新)
update 表1 别名
[连接类型] join 表2 别名
on 连接条件
set 字段1 = 值1, ...
where 筛选条件
*/
UPDATE stu_info SET NAME = '小容', age = 18 WHERE id = 4;

#修改黄晓明的女朋友的手机号(内联)
USE girls;
UPDATE boys
JOIN beauty
ON boys.`id` = beauty.`boyfriend_id`
SET beauty.`phone` = '18888888888'
WHERE boys.`boyName` = '黄晓明';


#四、数据的删除
/*
方式一:
	delete from 表名; 代表表中所有数据都删除
	delete from 表名 where 筛选条件;
方式二:
	truncate table 表名; 删除表中所有数据
*/

DELETE FROM student WHERE id >= 4;

TRUNCATE TABLE student;

/*
delete 和 truncate 的区别
1、delete可以添加where条件,truncate不能添加where条件;
2、truncate效率较高,没有逐行判断,属于删除这张表,然后新建一个结构相同的表;
3、使用delete删除后添加记录,记录从删除前的断点处开始增长;
   使用truncate删除后添加记录,记录从1开始增长;
4、delete删除数据会返回受影响的行数,truncate删除数据不会返回受影响的行数
5、delete删除数据支持事务的回滚,truncate删除数据不支持事务回滚
*/
DELETE FROM student;

猜你喜欢

转载自www.cnblogs.com/shawnyue-08/p/13372344.html