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删除可以回滚