DDL语言(添加、修改、删除)

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

    DML语言:数据操作语言(insert、update、delete)

添加(insert)

        语法:

insert into 表名(字段1,字段2,字段3,...) values('值1'),('值2'),('值3'),('...')

例:

        ①

--插入语句(添加)
INSERT INTO `grade`(`gradename`)  VALUES ('大一')

--由于主键自增我们可以省略(如果不写表的字段,他就会一一匹配)
INSERT INTO `grade` VALUES('大三')

        ②

CREATE TABLE IF NOT EXISTS `student2`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

插入语句:

--一个字段插入多个值
INSERT INTO `grade`(`gradename`) VALUES('大二'),('大一')
INSERT INTO `student`(`name`) VALUES('张三')


--多个字段插入一个值
INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('张三','aaaaaa','男')


--多个字段插入多个值
INSERT INTO `student`(`name`,`pwd`,`sex`) VALUES ('李四','aaaaaa','男'),('王五','aaaaaa','男')


--没有指定字段插入值
INSERT INTO `student` VALUES (5,'李四','aaaaaa','男','2000-01-01',1,'西安','email')

注意:

  • 字段和值之间用英文逗号隔开
  • 字段可以省略,但后面后面的值必须要一一对应,不能少
  • 可以同时插入多条数据,VALUES后面的值,需要使用用英文逗号隔开即可


修改(update)

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

    语法:

UPDATE 表名 SET column_name=value [,column_name2=value2,...] [WHERE condition];

    例:

-- 修改学员名字
UPDATE `studenttest1` SET `name`='xiaoming' WHERE id  = 1
 
-- 不指定条件的情况下,会改动所有的表!
UPDATE `studenttest1` SET `name`='xiaohong'
 
-- 修改多个属性,逗号隔开
UPDATE `studenttest1` SET `name`='小明',`email` = '123@qq.com' WHERE id =1;
 
-- 通过多个条件定位数据 trim--可以删除多余逗号
UPDATE `student` SET `birthday` = CURRENT_TIME WHERE `name`='小红' AND sex='女'
 
-- 语法:
-- UPDATE 表名 set colnum_name = value.[colnum_name = value,.....] where [条件]

    where条件字句

        可以简单的理解为:有条件地从表中筛选数据

运算符含义范围结果
=等于5=6false
<>或!=不等于5!=6true
>大于5>6false
<小于5<6true
>=大于等于5>=6false
<=小于等于5<=6true
BETWEEN在某个范围之间BETWEEN 5 AND 6
AND并且5>1 AND 1>2false
OR5>1 OR 1>2true

例:

-- 通过多个条件定位数据
-- 修改学员名字,带了简介
UPDATE student SET `name`='小红' WHERE `name`='小明' WHERE id BETWEEN 2 AND 5

 

  注意:

  • column_name 为要更该地数据列,尽量带上 ` `
  • value 为修改后的数据,可以为变量
  • 条件如果没有指定,则会修改所有的列
  • 多个设置的属性之间,使用英文逗号隔开
  • trim可以删除多余的逗号


删除

    DELETE命令

        语法:

DELETE from 表名 [where 条件]

注意:如果不指定筛选条件,则会删除该表所有列数据

例:

-- 删除数据 (避免这样写,会全部删除)
DELETE FROM `student`
 
-- 删除指定数据
DELETE FROM `student` WHERE id = 1;

    TRUNCATE命令

        作用:完全清空一个数据库表,表的结构、索引和约束不会变!

例:

-- 清空 student表
TRUNCATE `student`

    DELETE 和 TRUNCATE 区别

  • 相同点:
    • 都能删除数据,都不会删除表的结构
  • 不同点:
    • TRUNCATE TABLE 重新设置自增列,计数器 AUTO_INCREMENT 会归零;且速度更快;不会影响事务
    • DELETE 不会重新设置自增列,计数器会保留原来的值

测试 DELETE 和 TRUNCATE:

-- 创建一个测试表
CREATE TABLE `test` (
`id` INT(4) NOT NULL AUTO_INCREMENT,
`coll` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8

-- 插入几个测试数据
INSERT INTO test(coll) VALUES('row1'),('row2'),('row3');

-- 删除表数据(不带where条件的delete)
DELETE FROM test;
-- 结论:如不指定Where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志.

-- 删除表数据(truncate)
TRUNCATE TABLE test;
-- 结论:truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.

扩展:

        同样使用DELETE清空不同引擎的数据库表数据.重启数据库服务后
        InnoDB:自增列从初始值重新开始 (因为是存储在内存中,断电即失)
        MyISAM:自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值