增删改查
1.插入数据
insert into [表名] values (对应的字段内容); 插入的字段的数目和类型需要和表结构中要求的一致。 指定列插入,根据需要只插入其中的某几列
2.查看数据
1.select* from[表名]; *是一个通配符,意思是把所有的列都查找。
生产环境的服务器本来压力就很大,数据量非常多,一旦执行这样select* 操作,可能就会给生产环境的服务器造成很大的负担,甚至导致服务器卡死或宕机。 2.指定列查找 select [列名] from [表名]; 3.查询字段为表达式 针对查到的列进行一定的表达式计算。 a)查找所有同学的姓名和总成绩 b)查找所有同学的语文成绩,并在基础上+10. 4.查询字段求别名 把列指定了别名total ,as可以省略 5.去重 select distinct [列名] from [表名] 去重结果,得到的结果表的行数和原来可能是不一样的。 select得到的结果也相当是一张表(MySQL构造的一个临时表)大部分的select操作的查找结果是无法和原来的表的记录一一对应。 使用distinct的时候,必须把对应的列都放到distinct之后。 所有的select操作都不会对原来的表造成任何改变,基于原来的表,生成结果表,想要修改,insert update delete… 6.排序 order by 指定针对哪个列进行排序 a)查找同学们的信息并且按照语文成绩升序排序 b)查找学生信息并按照数学成绩排序(降序) c)查找学生信息并按照总成绩降序排序 d)按照总成绩排序,使用别名 e)按照多个列来排序 先把所有同学的信息按照语文降序排序,再按照数学降序排序,再按照英语降序排序。 列越靠前,优先级越高,如果语文的分数一样,再按照数学排序。如果语文数学的分数一样,再按照英语排序。 null是最靠前的 7.条件查询where[特别重要] 条件查询中涉及的运算符
< <= > >=:没啥特殊的。 = :比较相等,不是赋值.(update中的=相当于赋值) <=>;比较相等,能够针对NULL进行比较 如果表达式NULL=NULL->NULL相当于条件不成立 如果表达式NULL<=>NULL->true相当于条件成立 != <> 表示不等于 between x and y:表示当值在[x,y]闭区间都是满足条件。 in(若干个选项):当前值在()中的若干选项里匹配任意一个都是满足条件。 is null is not null专门用于判定值是否为null like 模糊匹配 and逻辑与 or逻辑或 not逻辑取反 %匹配任意个字符
a)查找数据chinese为null的记录 错误的写法null=null结果为false
正确的写法: b)查找英语成绩不及格的同学信息(<60) c)查找语文成绩比英语好的同学信息 d)查找总分在200分以下的同学 where中不能使用别名。 e)查询语文成绩大于80并且英语成绩也大于80的同学 f)查询语文成绩大于80或者英语成绩大于80。 g)查询语文成绩在[80,90]之间的同学 h)查询数学成绩是60.0或者73.0 i)查找所有姓孙的同学的成绩 %:匹配任意个字符 _: 匹配一个任意字符 j)查找所有同学9开头的 k)查找所有同学中,姓孙并且语文成绩>60的同学 进行复杂查询时,存在一个"最左原则"发现此时两个条件,chinese>60 name like ‘孙%’ 先后顺序不影响最终的结果,但是我们建议,把name like条件放在左边。 两种写法的第一次遍历都需要遍历全表,第二次遍历的时候,第一种写法需要遍历记录,第二种只需要遍历两条。 多个条件在一起联合生效时,一般要求哪个条件能过滤掉的数据多(剩下的数据少,把该条件放到左侧).。
8.分页查找,上面讲过的这些select操作,除了条件查找以外,剩下的都是不应该在生产服务器上直接执行的。最保险的就是加上分页查找,相当于把查找结果只选取其中的一小部分来作为结果limit。 a)查找同学信息中总分最高的前三名。 b)查找同学信息中总分最高的4-6 c)如果limit后面的数字太大,超过了记录的数目,返回结果不会有任何错误。 d)如果Offset过大得到的结果可能是一个空的结果。
3.修改数据
update [表名] set [列名] =[修改的值],[列名]=[修改的值] where 子句; a)把孙悟空的数学成绩改成80分。 update每次修改几行记录是不确定的,具体取决于where中的条件怎么写,得看where条件过滤之后剩下多少记录. b)把曹孟德数学成绩改成50,语文成绩改成95. c)所有同学的语文成绩都-10 d)将总成绩倒数3名的同学的数学成绩+10分
4.删除数据
delete from [表名] where [筛选条件]; 数据库的数据都是存到磁盘上的,如果数据特别多,超出磁盘容纳的上限,此时就无法继续写入数据了,根据数据的重要情况,决定是定期清理还是定期备份。
|