发布于2024-11-02 12:31 阅读(740) 评论(0) 点赞(4) 收藏(3)
本节,我们继续深入了解MySQL,本章所讲的基础操作,针对的是表的增删查改!
- INSERT [INTO] table_name
- [(column [, column] ...)]
- VALUES
- (value_list) [, (value_list)] ...
- value_list: value, [, value] ...
向 student 表中新增喜羊羊及其id;
- #单行数据全列插入
- insert into student values (1,'喜羊羊');
-
- #单行数据指定列插入
- insert into student (name) values ('懒洋洋');
- insert into student (id,name) values (3,'小灰灰');
-
- #多行数据指定列插入
- insert into student (id,name) values (4,'沸羊羊'),(5,'慢羊羊');
(1) 单行数据全列插入(如喜羊羊的插入)
(2) 单行数据指定列插入(如懒洋洋的插入,未设置默认值是,默认为NULL)
(3) 多行数据指定列插入(如沸羊羊和慢羊羊的插入)
由上述示例可知:插入一条新数据行时,字段名处可以是一个或者是多个,后面括号内应按照字段名的顺序,设置对应的值,若有字符串类型的值,应使用英文单引号包裹
如果,我们插入的值与前面字段名顺序或数据类型不匹配时,会发生什么?
- insert into student (id,name) values ('测试','无名氏');
-
- insert into student (id,name) values ('测试','7');
报错:整数值不正确:第 1 行的列 'id' 的 'test'
- SELECT
- [DISTINCT]
- select_expr [, select_expr] ...
- [FROM table_references]
- [WHERE where_condition]
- [GROUP BY {col_name | expr}, ...]
- [HAVING where_condition]
- [ORDER BY {col_name | expr } [ASC | DESC], ... ]
- [LIMIT {[offset,] row_count | row_count OFFSET offset}]
先创建如下空表:
插入数据后,查询 student 表中的所有列:
当我们给这些同学记录好成绩后,发现语文某题出错了,我们需要补偿给每位同学10分,这时我们可以用到该方法:
既然列可以在需要的情况下加一个常量,那么列可以加列吗?答案是可以的!我们来演示一下,求一下每为同学的总成绩:
上图所示可能有些麻烦,我们可以使用 as 简化一下,即可代替列名 如下:
select id,name,Chinese,Math,English,Chinese+Math+English as '总分' from student;
注意:
(1)as 是可省略的
(2)别名可以不加单引号,但是别名中若存在空格,必须加引号
(3)生成存在别名列的表为临时表,执行完输出之后就被删除了
(4)每个字段名后都可以加 as 代替当前字段名
不久,我们班级新来了一个同学叫做“光头强”,顺利通过了考试,我们发现其英语成绩竟然和“懒羊羊”成绩一样!
英语老师要求列出所有英语分数,但是不准有重复的,我们就可以使用 distinct 关键字去重 :
(1)查询英语为35分的同学
注意:此时当某位同学的英语成绩为NULL,查询结果会忽略该同学
- select id,name,English
- from student
- where English=35;
(2) 查询英语成绩大于语文成绩的同学
- select id,name,Chinese,English
- from student
- where English>Chinese;
(1)查询语文成绩大于70分或英语成绩大于70分的同学
- select id,name,Chinese,English
- from student
- where Chinese>70 or English>70;
(1)查询数学成绩范围在70和90之间的同学
- select id,name,Math
- from student
- where Math between 70 and 90;
- select id,name
- from student
- where name like '%羊羊';
多组其他测试如下:
同学们学习了几天后,又来了一位新同学“熊二”,由于它在英语考试中途太饿了,想要吃蜂蜜,所以英语成绩暂时没有:
但是老师不记得是谁没考英语成绩,就想调查一下:
- select id,name,English
- from student
- where English is null;
- SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC |
- DESC], ... ;
升序:ASC 降序:DESC
- select id,name,Chinese+Math+English as total
- from student
- order by total desc;
(1)某列为NULL参与运算,与其他数值比较时,NULL被视为比任何值都小(包含负数)
(2)ORDER BY 子句中可以使用列的别名进行排序
(3)查询中没有ORDER BY 子句,返回的顺序是未定义的
老师要查找总成绩前三的同学及其总成绩:
- select id,name,Chinese+Math+English as total
- from student
- order by total desc
- limit 0,3;
三、总结
本篇我们详细讲解了增添,查询的各个操作,如有缺漏,欢迎在评论区补充,看完本篇,我们来补充一个小知识,观察下面代码:
为什么使用 where 条件查询时,不能使用别名?
奥奇小课堂:
这和MYSQL中执行SQL语句的顺序有关:
(1)要查询数据,先要确定表,先执行 from
(2)查询过程中要根据查询条件把符合条件的数据过滤出,此时执行 where
(3)执行 select 后面的指定列,这些列需要加入最终结果
(4)排序操作,根据 order by 指定的列名和排序规则执行最后的排序
本篇到此结束,内容详细,制作不易,求赞啦啦啦~~
原文链接:https://blog.csdn.net/2302_81247414/article/details/142902593
作者:jjjjjjjj
链接:http://www.phpheidong.com/blog/article/554261/6e33a5f6478ca6c57a6f/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!