Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL表的基本查询

MySQL表的基本查询详细图文教程

作者:pouop

这篇文章主要给大家介绍了关于MySQL表的基本查询的相关资料,需要的朋友可以参考下

1,创建表

前面基础的文章已经讲了很多啦,直接上操作:

非常简单!下一个!

2,插入数据

1,全列插入

前面也说很多了,直接上操作:

以上插入和全列插入类似,全列插入也可以这样写:

注意,后面插入的数据数量必须和定义表的列的数量及顺序一致

2,多行数据 + 指定列插入

插入两条记录,value_list 数量必须和指定列数量及顺序一致

操作:

如果需要用一条语句插入多行数据,可以在values后面用逗号隔开然后加入数据:

3,插入否,则更新

由于 主键 或者 唯一键 对应的值已经存在而导致插入失败

可以选择性的进行同步更新操作语法:

on duplicate key update = 。。。。。

可以看到,因为主键冲突所以无法插入数据,那么我又不想要id为1的数据,这个时候就可以用上面的语法:

可以看到,表中的第一行数据被更新了。

3,替换

用法:

-- 主键 或者 唯一键 没有冲突,则直接插入;

-- 主键 或者 唯一键 如果冲突,则删除后再插入

我们可以用创建成功后的提示来看有没有数据冲突:

-- 1 row affected: 表中没有冲突数据,数据被插入

-- 2 row affected: 表中有冲突数据,删除后重新插入

创建表和插入数据讲完之后,就可以开始我们的主题了:表的查询!

4,表的查询

首先我们来快速创建一个表,让我们可以方便查询:

具体指令:

创建表指令:

CREATE TABLE exam_result ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(20) NOT NULL COMMENT '同学姓名', chinese float DEFAULT 0.0 COMMENT '语文成绩', math float DEFAULT 0.0 COMMENT '数学成绩', english float DEFAULT 0.0 COMMENT '英语成绩' );

插入表指令:

INSERT INTO exam_result (name, chinese, math, english) VALUES ('唐三藏', 67, 98, 56), ('孙悟空', 87, 78, 77), ('猪悟能', 88, 98, 90), ('曹孟德', 82, 84, 67), ('刘玄德', 55, 85, 45), ('孙权', 70, 73, 78), ('宋公明', 75, 65, 30); 

1,select列

1,全列查询

通常情况下不建议使用 * 进行全列查询

1. 查询的列越多,意味着需要传输的数据量越大;

2. 可能会影响到索引的使用。(索引待后面讲解)

操作:

2,指定列查询

操作:

3,查询字段为表达式

可以看到,可以进行运算并显示在表中。

4,为查询结果指定别名

操作:在加算表达式后面加as加要命名的名字

其中,as可以省略:

5,结果去重

我们想去差个成绩,看全班分数的整体趋势,为此要求分数不重复,而我们看到math里分数有重复的部分,那么我们怎么解决这个分数重复的问题?

去重!语法:在列名前加distinct:

可以看到,表中的数据被去重

2,where语句

我们可以用where语句来做判断来查询表,具体判断的表达式:

我们用例子来描述上面操作符的使用:

1 英语不及格的同学及英语成绩 ( < 60 )

可以用比较来筛选出想要的数据。

2,语文成绩在 [80, 90] 分的同学及语文成绩

这个时候,可以引入一个指令:and,它代表的是且命令,就和C++中的&&差不多

也可以用between来查询,操作如下:

3,数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

这里面可以用or指令来完成,or相当于C++里的||:

当然,这样写比较麻烦,那么可以使用in条件来写:

这些写会比第一种方法好看。

4,姓孙的同学 及 孙某同学

这时候得引入模糊查找和%:

可以看到,孙后面的名字都查到了,但是如果只想要后面只有一个字的怎么操作?

可以看到,用_可以指定后面跟多少字

5,语文成绩好于英语成绩的同学

可以打印列表与列表的比较:

6,总分在 200 分以下的同学

可以用表相加减得出,但是不能用给表启的名字做比较,因为语句执行的顺序不一样:

7,语文成绩 > 80 并且不姓孙的同学

这里用到了like和not连用

8,孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80

9,NULL 的查询

先创建表

查询 qq 号已知的id:

NULL 和 NULL 的比较,= 和 的区别

3,结果排序
语法:

-- ASC 为升序(从小到大)

-- DESC 为降序(从大到小)

-- 默认为 ASC

注意:没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序

1,同学及数学成绩,按数学成绩升序显示

2,同学及数学成绩,按数学成绩降序显示

3,查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示

4,查询同学及总分,由高到低

5,查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示

4,筛选分页结果

关键字:limit 

只显示前几行

操作:

可以看到,limit前加的数字代表从第几行开始,第二个数字代表往下显示几行

可以用关键字offset来表示第几行开始:

总结 

到此这篇关于MySQL表的基本查询的文章就介绍到这了,更多相关MySQL表的基本查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文