MySql基本查询、连接查询、子查询、正则表达查询讲解(一)

2015-07-21 16:27:20 · 作者: · 浏览: 10

查询数据指从数据库中获取所需要的数据。查询数据是数据库操作中最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL中是使用SELECT语句来查询数据的。在这一章中将讲解的内容包括。

1、查询语句的基本语法
2、在单表上查询数据
3、使用聚合函数查询数据
4、多表上联合查询
5、子查询
6、合并查询结果
7、为表和字段取别名
8、使用正则表达式查询

什么是查询?

\

怎么查的?

?

\

数据的准备如下:

?

create table STUDENT(
STU_ID int primary KEY,
STU_NAME char(10) not null,
STU_AGE smallint unsigned  not null,
STU_SEX char(2) not null
);
insert  into STUDENT values(2001,'小王',13,'男');
insert  into STUDENT values(2002,'明明',12,'男');
insert  into STUDENT values(2003,'红红',14,'女');
insert  into STUDENT values(2004,'小花',13,'女');
insert  into STUDENT values(2005,'天儿',15,'男');
insert  into STUDENT values(2006,'阿猎',13,'女');
insert  into STUDENT values(2007,'阿猫',16,'男');
insert  into STUDENT values(2008,'阿狗',17,'男');
insert  into STUDENT values(2009,'黑子',14,'男');
insert  into STUDENT values(2010,'小玉',13,'女');
insert  into STUDENT values(2011,'头头',13,'女');
insert  into STUDENT values(2012,'冰冰',14,'女');
insert  into STUDENT values(2013,'美丽',13,'女');
insert  into STUDENT values(2014,'神乐',12,'男');
insert  into STUDENT values(2015,'天五',13,'男');
insert  into STUDENT values(2016,'小三',11,'男');
insert  into STUDENT values(2017,'阿张',13,'男');
insert  into STUDENT values(2018,'阿杰',13,'男');
insert  into STUDENT values(2019,'阿宝',13,'女');
insert  into STUDENT values(2020,'大王',14,'男');

然后这是学生成绩表,其中定义了外键约束

?

?

create table GRADE(
STU_ID INT NOT NULL,
STU_SCORE INT,
foreign key(STU_ID) references STUDENT(STU_ID)
);
insert  into GRADE values(2001,90);
insert  into GRADE values(2002,89);
insert  into GRADE values(2003,67);
insert  into GRADE values(2004,78);
insert  into GRADE values(2005,89);
insert  into GRADE values(2006,78);
insert  into GRADE values(2007,99);
insert  into GRADE values(2008,87);
insert  into GRADE values(2009,70);
insert  into GRADE values(2010,71);
insert  into GRADE values(2011,56);
insert  into GRADE values(2012,85);
insert  into GRADE values(2013,65);
insert  into GRADE values(2014,66);
insert  into GRADE values(2015,77);
insert  into GRADE values(2016,79);
insert  into GRADE values(2017,82);
insert  into GRADE values(2018,88);
insert  into GRADE values(2019,NULL);
insert  into GRADE values(2020,NULL);

一、查询语句的基本语法

?

查询数据是指从数据库中的数据表或视图中获取所需要的数据,在MySQL中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。

SELECT语句的基本语法格式如下:

SELECT 属性列表
       FROM 表名或视图列表
       [WHERE 条件表达式1]
       [GROUP BY 属性名1 [HAVING 条件表达式2]]
       [ORDER BY 属性名2 [ASC|DESC]]

属性列表:表示需要查询的字段名。表名或视图列表:表示即将进行数据查询的数据表或者视图,表或视图可以有多个。条件表达式1:设置查询的条件。属性名1:表示按该字段中的数据进行分组。条件表达式2:表示满足该表达式的数据才能输出。属性2:表示按该字段中的数据进行排序,排序方式由ASC或DESC参数指定。ASC:表示按升序的顺序进行排序。即表示值按照从小到大的顺序排列。这是默认参数。DESC:表示按降序的顺序进行排序。即表示值按照从大到小的顺序排列。

如果有WHERE子句,就按照“条件表达式1”指定的条件进行查询;如果没有WHERE子句,就查询所有记录。

如果有GROUP BY子句,就按照“属性名1”指定的字段进行分组;如果GROUP BY子句后面带着HAVING关键字,那么只有满足“条件表达式2”中指定的条件的记录才能够输出。GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。

如果有ORDER BY子句,就按照“属性名2”指定的字段进行排序。排序方式由ASC或DESC参数指定。默认的排序方式为ASC。


二、在单表上查询数据

2.1、查询所有字段

?

select * from STUDENT;

?

\

2.2、按条件查询

\

?

(1) 比较运算符 > , < ,= , != (< >),>= , <=
select * from STUDENT where STU_AGE>13;

\
in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出
IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足查询条件,该纪录将被查询出来。如果不在集合中,则不满足查询条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n )

select * from STUDENT where STU_AGE in(11,12);