MySQL -- 表记录管理和运算符操作
一、表记录管理(续)
(1)、更新表记录
1、update 表名 set 字段名=值,字段名=值,...where 条件;
2、注意
update语句后如果不加where字句,表中所有记录该字段的值都会改变
(2)、删除表记录
1、delete from 表名 where 条件;
2、注意
delete语句后如果不加where条件字句,将会把表中所有的记录全部删除
(3)、练习
第1步:创建库 SANGUO
create database SANGUO;
第2步:切换库
use SANGUO;
第3步:创建表sanguo
create table sanguo(
id int,
name char(15),
sex enum("男","女"),
country char(10)
)default charset=utf8;
第4步:插入记录
insert into sanguo values
(1,"曹操","男","魏国"),
(2,"小乔","女","吴国"),
(3,"诸葛亮","男","蜀国"),
(4,"貂蝉","女","东汉"),
(5,"赵子龙","男","蜀国"),
(6,"魏延","男","蜀国");
1、查找所有蜀国人信息
select * from sanguo where country="蜀国";
2、查找女英雄信息,只显示姓名、性别和国家
select name,sex,country from sanguo where sex="女";
3、把魏延的性别改为女,国籍改为泰国
update sanguo set sex="女",country="泰国" where name="魏延";
4、把id为2的记录名字改为司马懿,性别男,国籍魏国
update sanguo set name="司马懿",sex="男",country="泰国" where id=2;
5、删除所有泰国人
delete from sanguo where country="泰国";
二、运算符操作(配合查询、修改、删除操作)
(1)、数值比较&字符比较
1、数值比较运算符:=、!=、>、>=、<、<=
2、字符比较运算符:= 、!=
3、语法格式
查询:select * from 表名 where 字段名 运算符 数字/字符;
修改:update 表名 set 字段名=值,... where 字段名 运算符 数字/字符;
删除:delete from 表名 where 字段名 运算符 数字/字符;
4、练习
1、创建库MoShou
create database MoShou;
2、切换库
use MoShou;
3、创建表sanguo
create table sanguo(
id int,
name char(20),
gongji int,
fangyu tinyint unsigned,
sex enum("男","女"),
country varchar(20)
)default charset=utf8;
4、在表中插入记录
insert into sanguo values
(1,'诸葛亮',120,20,'男','蜀国'),
(2,'司马懿',119,25,'男','魏国'),
(3,'关羽',188,60,'男','蜀国'),
(4,'赵云',200,66,'男','魏国'),
(5,'孙权',110,20,'男','吴国'),
(6,'貂蝉',666,10,'女','魏国'),
(7,null,1000,99,'男','蜀国'),
(8,'',1005,88,'女','蜀国');
1、找出攻击值高于150的英雄的名字和攻击值
select name,gongji from sanguo where gongji>150;
2、将赵云的攻击值改为666,防御值改为88
update sanguo set gongji=666,fangyu=88 where name="赵云";
(2)、逻辑比较
1、运算符:and or
2、练习
1、找出攻击值大于200的蜀国英雄的名字及攻击值
select name,gongji from sanguo where gongji>200 and country="蜀国";
2、将吴国英雄中攻击值为110的英雄的攻击值设为100,防御值设置为60
update sanguo set gongji=100,fangyu=60 where country="吴国" and gongji=110;
3、查找蜀国和魏国的英雄信息
select * from sanguo where country="蜀国" or country="魏国";
(3)、范围内比较
1、运算符:between and 、in 、not in
2、语法格式
字段名 between 值1 and 值2
字段名 in (值1,值2,... ...)
字段名 not in (值1,值2,... ...)
3、练习
1、找到攻击力在100-200之间的蜀国英雄的记录
select * from sanguo where (gongji between 100 and 200) and (country="蜀国");
2、找到id在1,3,5,7中的英雄的id和姓名
select id,name from sanguo where id in(1,3,5,7);
3、找到蜀国和吴国以外女英雄信息
select * from sanguo where (country not in ("蜀国","吴国")) and (sex="女");
4、找到id为1或者3或者5的蜀国英雄和貂蝉的id、姓名、国家
select id,name,country from sanguo where ((id in (1,3,5)) and (country="蜀国")) or (name="貂蝉");
(4)、匹配空、非空
1、空 :is null
2、非空 :is not null
3、练习
1、查找名字为 NULL 的蜀国英雄信息
select * from sanguo where (name is null) and (country="蜀国");
2、查找姓名为""的英雄的id、姓名和国家
select id,name,country from sanguo where name="";
4、注意:
1、null :null是空值,必须用is 或者 is not去匹配
2、"": 是空字符串,用= 或者 != 去匹配
(5)、模糊比较
1、语法格式
字段名 like 表达式
2、表达式
1、_ : 匹配单个字符
2、% : 匹配0到多个字符
3、练习
1、select id,name from sanguo where name like "_%_"; # 名字至少有两个字符的
2、select id,name from sanguo where name like "%"; # 匹配所有的记录
3、select id,name from sanguo where name like "___"; # 匹配名字为三个字的记录
4、select id,name from sanguo where name like "赵%"; # 匹配所有姓赵的记录