MySQL(三)表记录的更新操作
一、 表记录的插入
1.使用insert语句插入新纪录
Insert into表名[(字段列表)] values(列表值)
例1. 向表的所有字段中插入数据
向choose数据库的teacher表的所有字段插入三条如下数据
use choose;
insert into teacher values(‘001’,’张老师’,’11000000000’);
insert into teacher values(‘002,’李老师’,’11000000000’);
insert into teacher values(‘003’,’王老师’,’11000000000’);
查询:
select * from teacher;
例2.在指定的字段插入数据
向choose数据库的classes表的班级名字段以及院系字段插入以下三条数据
use choose;
insert into classes(class_no,class_name,department_name) values(null,’2012自动化1班’,’机电工程’);
insert into classes(class_no,class_name,department_name) values(null,’2012自动化2班’,’机电工程’);
insert into classes(class_no,class_name,department_name) values(null,’2012自动化3班’,’机电工程’);
select * from classes;
例3.在insert语句中使用默认值
向choose数据库的course表中插入以下信息,然后查询course表的所有记录
use choose;
insert into course values(null,’java语言程序设计’,default,’暂无’,’已审核’,’001’);
insert into course values(null,’mysql数据库’,150,’暂无’,’已审核’,’002’);
insert into course values(null,’c语言程序设计’,230,’暂无’,’已审核’,’003’);
2.更新操作与字符集
例.
将character_set_client的字符集设置为latin1,然后使用insert语句插入一条教师信息,接着查询教师表中的所有记录。
use choose;
set character_set_client=latin1;
insert into classes values(null,’2010计算机应用1班’,’信息工程’);
select * from classes;
3.关于自增型字段
例.
首先使用delect语句删除classes表中“class_no=4”的乱码班级信息,接着查询该表的所有记录,然后再向classes表插入刚刚删除的班级信息,再次查询该表的所有记录
use choose;
delete from classes where class_no=4;
select *from classes;
insert into classes values(null,’2010计算机应用1班’,’信息工程’);
select *from classes;
4.批量插入多条记录
使用insert语句可以一次性地向表中批量插入多条记录
Insert into 表名[(字段列表)] values
(值列表1),
(值列表2),
…
(值列表n);
例.
使用下面的SQL语句向学生student表中插入以下信息,然后查询该表的所有记录
use choose;
insert into student values
(‘2012001’,’张三’,’15000000000’,1),
(‘2012002’,’李四’,’16000000000’,1),
(‘2012003’,’王五’,’17000000000’,3),
(‘2012004’,’马六’,’18000000000’,2),
(‘2012005’,’田七’,’19000000000’,2);
Select * from student;
5.使用insert…select插入结果集
Insert into 目标名 [(字段列表1)];
Select (字段列表2) from 源表 where 条件表达式;
例.
在下面的SQL语句中,create table 语句负责快速地创建一个new_student 表,且表结构与学生student表的表结构相同。Insert语句将学生student表中的所有记录插入new_student表中。Select语句负责查询new_student表的所有记录。
use choose;
create table new_student like student;
insert into new_student select *from student;
select *from new_student;
6.使用replace插入新纪录
语法格式1:replace into 表名[(字段列表)]values(值列表)
语法格式2:replace [into] 目标表名[(字段列表1)] select (字段列表2) from 源表where 条件表达式
语法格式1、语法格式2与insert语句的语法格式相似。
语法格式3:
replace [into]表名
set字段1=值1,字段2=值2
语法格式3与update语法的语法格式相似。
例.replace语句的用法
在下面的SQL语句中,第一条replace语句向学生student表插入一条学生信息(student_no=2012001,姓名为张三丰),由于学生表中已存在student_no=2012001,所以将原信息删除,然后插入新纪录。第二条replace再次将学生的信息“还原”。
Replace into student values(‘2012001’,’张三丰’,’15000000000’,’1’);
Replace into student values(‘2012001’,’张三’,’15000000000’,’1’);
在执行repalce语句后,系统返回了所影响的行数。如果返回1,说明在表中并没有重复的记录;如果返回2,说明有一条重复的记录,系统自动删除重复记录,然后插入新纪录;如果大于2,则有多条记录被删除。
二、表记录的修改
update 表名
set 字段名1=值1,字段名2=值2,...,字段名n=值n;
[where条件表达式];
例如:将班级classes表中“class_no<=3”的院系名department_mane修改为“机电工程学院”,可以使用下面的update语句。
use choose;
update classes set department_name='机电工程学院' where class_no<=3;
select * from classes;
三、表记录的删除
1.使用delete删除表记录
delete from表名[where条件表达式]
例如,删除班级名为“2012计算机应用1班”的班级信息,可以使用下面的SQL语句
use choose;
delete from classes where class_name='机电工程学院';
select * from classes;
2.使用truncate清空表记录
truncate table用于完全清空一个表,语法格式如下
truncate [table] 表名
truncate与delete的区别
步骤1:create table语句负责快速地创建一个new_class表,且表结构与班级classes表的结构相同。insert语句将班级classes表中的所有记录插入到new_class表中。select语句负责查询new_class表的所有记录。
use choose;
create table new_class like classes;
insert into new_class select * from classes;
select * from new_class;
步骤2:使用下面的MySQL命令查看new_class表的表结构
show create table new_class;
步骤3:使用下面的SQL语句删除new_class表的所有记录后,new_class表的表结构如图所示
delete from new_class;
show create table new_class;
步骤4:使用下面的MySQL命令清除new_class表的所有记录后,new_class表的表结构如图所示
truncate table new_class;
show create table new_class;
比较步骤3以及步骤4的执行结果,从中可以看出,delete语句并不会修改new_class表的自增型字段的起点;而使用truncate清除new_class表的所有记录后,new_class表的自增型字段的起点将被重置为1。
四、MySQL特殊字符序列
向new_student表插入两条信息,然后查询该表的所有记录
use choose;
insert into new_student values('2012006','Mar_tin','mar\tin@gmail.com',3);
insert into new_student values('2012007','O\'Neil','o_\neil@gmail.com',3);
select *from new_student;
例如,在下面的SQL语句中,第一条select语句负责查询姓名为O'\Neil'的学生信息(注意反斜线符号“\“不能省略),第二条select语句负责查询姓名为Mar_tin的学生信息。
select *from new_student where student_name='O\'Neil';
select *from new_student where student_name='Mar_tin';
在select语句中,查询条件where子句中可以使用like关键字进行”模糊查询“。”模糊查询“存在两个匹配符”_"和”%“。其中”_"可以匹配单个字符,”%“可以匹配任意个数的字符。
例如,查询所有姓名中包含下划线“_"的学生信息,可以使用下面的select语句。
select * from new_student where student_name like '%\_%';
🍀取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣🍀
🍀每天都要有收获 (*/ω\*)🍀
🍀后悔是没有用的,从现在开始,立刻马上去做(≧∀≦)ゞ🍀