MySQL实战7 增改删

MySQL实战 目录
对数据库的操作用到最最频繁的呢,总结起来就四个字:增删该查!

1.新增数据

语法一:
insert into 表名(字段1,字段2,......) VALUES(对应字段的1的值,对应字段2的值,......);
案例:增加一条学生信息到students表中
注意:
1.insert记录值时候要保持插入的记录值的类型和表结构设计的类型一致,除了数字类型外,字符串varchar和日期类型datemine等都应该用单引号包裹起来
2.表结构设计中规定不可为空但字段必须插入记录值,可以为null但列在插入但时候可以不写
3.表名后的字段列表的顺序必须和values后面的值列表没有严格的顺序限制,但必须前后一一对应(内容上一致,还有数量上一致)
4.表名后面但字段可以连带括号都可以省略,省略后意味着后面但values值列
INSERT INTO `school`.`students`(`sno`, `sname`, `ssex`, `sbirthday`) VALUES ('123', '李白', '男', '2007-06-22 00:00:00.000000');
语法二:
INSERT INTO 表名 set 字段名1=值,字段名2=值,......;
案例:增加一条学生信息到students表中
INSERT INTO `students`SET `sno`='312',`sname`='范白',`ssex`='女',`sbirthday`='2007-06-22 00:00:00.000000',class='123456';
语法一可以一次性插入多条记录值,语法二不支持
语法一可以支持子查询,语法二不支持
INSERT INTO `school`.`students`(`sno`, `sname`, `ssex`, `sbirthday`)
 VALUES ('233', '李白', '男', '2007-06-22 00:00:00.000000'),
  ('256', '李一', '男', '2007-06-22 00:00:00.000000'),
  ('378', '李白', '男', '2007-06-22 00:00:00.000000');
总结:我们一般情况下用语法一的写法,语法二很少使用
INSERT INTO `school`.`students`(`sno`, `sname`, `ssex`, `sbirthday`,`class`)
SELECT CONCAT(`sno`,'1'),`sname`,`ssex`,`sbirthday`,`class` FROM students
           WHERE sno='378' ;

2.修改数据

修改语句:作用修改记录里部份值

1.修改单表记录
语法:

update 表名 set 字段名 1 = 新的值,字段名2=新值,......where 条件

案例:修改学生表中姓名王的同学的班级都改为11601
UPDATE students SET class='11601' WHERE `sname` LIKE '王%';
2.修改多表记录
语法:

update 表1 别名,表2 别名
set 字段1=值......
where 连接条件 and 筛选条件

 update 表1 别名
 [连接类型]join 表2 表名
 on 连接条件
 set 字段1=值
案例:把tb中小白对应的ta表中的年龄改为16
UPDATE `ta` ta,`tb` tb SET ta.age = 16  WHERE tb.ta_id = ta.id AND tb.`name`='小白';
案例:修改没有年龄记录的同学的对应年龄的 id改为11
SELECT s.*, a.age 
      FROM tb s
            LEFT JOIN ta a
            ON s.ta_id = a.id
            WHERE a.age IS NULL;
        
UPDATE `tb` s
        LEFT JOIN ta a
            ON s.ta_id = a.id
            set s.id =11
            WHERE a.age IS NULL;

2.删除数据

1.单表的删除
语法:
 DELETE FROM 表名 where 要删除的记录筛选题条件;
案例:删除员工编号大于203的员工信息
DELETE FROM employees WHERE employee_id>203;
SELECT * FROM employees;
2.多表的删除
语法:
  DELETE 别名1,别名2
    FROM 表1 别名2,表2 别名
    WHERE 连接条件 and 筛选条件
    
注意:如果只删表1就只写别名1,如果两个表的记录都删 就别名1 ,别名2

  DELETE 别名1,别名2
    FROM biao1
LEFT JOIN
on
WHERE
 删除小白的年龄信息
 DELETE a FROM tb s
         LEFT JOIN ta a
             ON s.ta_id = a.id
             WHERE s.`name` = '小白';
3.整表记录全部删除,不能加where条件

TRUNCATE TABLE 表名;(慎用)

DELETE 和 TRUNCATE区别:

1.delete可以加where条件
2.TRUNCATE 删除的效率高一些
3.假若要删除的表上有自增长字段,如果用delete删除,再插入数据,自增长从断点值开始,TRUNCATE删除,再插入数据,从1开始;
4.TRUNCATE删除没有返回值,delete删除有返回值
5.TRUNCATE删除不能回滚,delete删除可以回滚

你可能感兴趣的:(MySQL实战7 增改删)