MySQL数据管理----DML语言(全记住)

morexyoung 2020-05-30

DML语言(全记住)

数据库意义:数据存储、数据管理

DML语言:数据操作语言

  • Insert
  • update
  • delete
    • truncate

1.insert 添加

错误示例:

MySQL数据管理----DML语言(全记住)

-- 1.指定1个字段,插入1条记录
-- insert into 表名 [(字段1,字段2,字段3,...)] values(‘值1‘),(‘值2‘),(‘值3‘),...
INSERT INTO `grade`(`gradename`) VALUES(‘大四‘)

-- 2.未指定字段,则需插入全部字段
INSERT INTO `teacher1` VALUES(‘1‘,‘黎明‘,‘111‘,‘女‘,‘1999-01-01‘,‘西安‘,‘123‘)

-- 一般写插入语句,数据和字段要一一对应
-- 3.指定1个字段,插入多条记录
INSERT INTO `grade` (`gradename`)
VALUES(‘大二‘),(‘大一‘)

-- 4.指定多个字段、插入多条记录
INSERT INTO `student` (`name`,`pwd`,`sex`,`birthday`,`gradeid`,`address`,`email`)
-- VALUES(‘李四‘,‘bbb‘,‘女‘,CURRENT_TIME,‘2‘,‘南极‘,‘‘)
VALUES(‘王五‘,‘ccc‘,‘男‘,CURRENT_TIME,‘3‘,‘银河‘,‘‘),
	  (‘赵六‘,‘ddd‘,‘女‘,CURRENT_TIME,‘1‘,‘火星‘,‘‘)

语法:insert into 表名 [(字段1,字段2,字段3,...)] values(‘值1‘),(‘值2‘),(‘值3‘),...

注意:

  • 字段和字段间用 英文逗号 隔开
  • 字段是可以省略的,但是后面的值必须要和表中字段 一一对应,不能少
  • 可以同时插入多条记录,VALUES后面的值,需用 , 隔开即可,如 (),()

2.update 修改

修改谁 (条件) set 原来的值 = 新值

-- 修改年级名字,带了条件
SELECT * FROM `grade`
UPDATE `grade` SET `gradename` = ‘大四‘ WHERE `gradeid` = ‘2‘
SELECT * FROM `grade`

-- 不指定条件时,会改动所有表
UPDATE `grade` SET `gradename` = ‘大三‘
SELECT * FROM `grade`

-- 修改多个字段,逗号隔开
SELECT * FROM `student`
UPDATE `student` SET `name`=‘666‘,`sex`=‘女‘,`address`=‘家‘ WHERE `id`=1
SELECT * FROM `student`

语法:

update 表名 set 字段名=值[,字段名=值,字段名=值,...][where 条件]

条件运算符:

操作符含义
=等于
<>或!=不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN ... AND....在某个范围内
AND我和你 &&
OR我或你 ||
-- 通过多个条件定位记录,进行修改
UPDATE `student` SET `name`=‘555‘ WHERE `name`=‘李四‘ AND `sex`=‘女‘

注意:

  • 字段是数据表的列,尽量带上 ``
  • 条件,如果没有指定,则会修改所有的数据
  • 值可以是一个具体的值,也可以是一个变量
  • 多个设置的字段间,使用 英文逗号 隔开

3.delete 删除

语法:delete from 表名 [where 条件]

-- 删除数据(避免这样写,会全部删除)
DELETE FROM `student`

-- 删除指定数据
DELETE FROM `student` WHERE `id`=1

4.truncate 完全清空一个数据库表,表的结构和索引约束不变

-- 清空 student 表
TRUNCATE `student`

5.delete 与 truncate 区别

  • 相同点:都能删除数据,都不会删除表结构

  • 不同:

    • truncate 重新设置 自增列 ,计数器会归零
    • truncate 不会影响事务
-- 测试 delete 和 truncate 区别

CREATE TABLE `test`(
	`id` INT(4) NOT NULL AUTO_INCREMENT,
	`coll` VARCHAR(20) NOT NULL,
	PRIMARY KEY(`id`)
)

INSERT INTO `test`(`coll`) VALUES(‘1‘),(‘2‘),(‘3‘)

DELETE FROM `test` -- 不会影响自增

TRUNCATE TABLE `test` -- 自增会归零

另一点:DELETE 删除的问题,重启数据库,现象

  • InnoDB 自增列会从1开始(存在内存中,断电即失)
  • MyISAM 继续上一个自增量(存在文件中,不会丢失)

相关推荐