推广

Mysql查询总结

iseeyu3年前 (2024-02-21)推广126

mysql

第一部分:准备数据

1 创建学生表


create table student (
    student_number varchar(20) primary key,
    student_name varchar(20) not null,
    student_sex varchar(20) not null default "men",
    check(student_sex='men' OR student_sex='women'),
    check(student_number>99 AND student_number<200),
    student_birthday datetime,
    class varchar(20)
);


扩展(check约束)
student_number 大于99,小于200
student_sex 值为 men 或者 women

2 插入数据


insert into student values('101','zhao-san','women','1992-01-01','95034');
insert into student values('102','wan-san','men','1993-01-01','95033');
insert into student values('103','sun-san','women','1994-01-01','95033');
insert into student values('104','li-san','men','1996-01-01','95033');
insert into student values('105','zhou-san','women','1991-04-01','95033');
insert into student values('106','fen-san','women','1991-11-01','95033');
insert into student values('107','chen-san','women','1994-06-02','95033');
insert into student values('108','chu-san','women','1951-06-01','95033');

3 创建教师表


create table teacher(
    teacher_number varchar(20) primary key,
    teacher_name varchar(20) not null,
    teacher_sex varchar(20) not null,
    teacher_birthday datetime,
    prof varchar(20) not null,
    depart varchar(20) not null
);

4 插入数据


insert into teacher values('201','kobe','men','1978-4-1','legend','basketball3');
insert into teacher values('202','james','men','1988-4-4','actor','basketball2');
insert into teacher values('203','jordan','women','1988-4-4','legend','basketball4');
insert into teacher values('204','durant','women','1981-4-4','legends','basketball1');
insert into teacher values('205','paul','men','1983-11-4','defense','basketball5');
insert into teacher values('206','yao','men','1983-11-4','defense','basketball7');
insert into teacher values('207','yi','men','1983-11-4','defense','basketball8');
insert into teacher values('208','allen','men','1983-11-4','defense','basketball9');

5 创建课程表


create table course(
    course_number varchar(20) primary key,
    course_name varchar(20) not null,
    teacher_number varchar(20) not null,
    foreign key (teacher_number) references teacher(teacher_number)
);

6 插入数据


insert into course values('303-1','english','201');
insert into course values('303-2','math','202');
insert into course values('303-3','python','203');
insert into course values('303-4','java','204');
insert into course values('303-5','c++','205');
insert into course values('303-6','auto','206');

7 创建成绩表


create table score(
    student_number varchar(20) not null,
    course_number varchar(20) not null,
    degree decimal,
    foreign key (student_number) references student(student_number),
    foreign key (course_number) references course(course_number),
    primary key(student_number,course_number)
);

# 联合主键: primary key(student_number,course_number)

8 插入数据


insert into score values('101','303-3','88');
insert into score values('102','303-4','89');
insert into score values('103','303-3','87');
insert into score values('104','303-3','86');
insert into score values('107','303-5','99');
insert into score values('107','303-2','92');
insert into score values('105','303-1','100');
insert into score values('106','303-1','82');
insert into score values('102','303-2','87');
insert into score values('101','303-6','95');

第二部分 : 查询练习

1 查询student表中所有记录

select * from student;

查询结果
mysql> select * from student;
+----------------+--------------+-------------+---------------------+-------+
| student_number | student_name | student_sex | student_birthday    | class |
+----------------+--------------+-------------+---------------------+-------+
| 101            | zhao-san     | women       | 1992-01-01 00:00:00 | 95034 |
| 102            | wan-san      | men         | 1993-01-01 00:00:00 | 95033 |
| 103            | sun-san      | women       | 1994-01-01 00:00:00 | 95033 |
| 104            | li-san       | men         | 1996-01-01 00:00:00 | 95033 |
| 105            | zhou-san     | women       | 1991-04-01 00:00:00 | 95033 |
| 106            | fen-san      | women       | 1991-11-01 00:00:00 | 95033 |
| 107            | chen-san     | women       | 1994-06-02 00:00:00 | 95033 |
| 108            | chu-san      | women       | 1951-06-01 00:00:00 | 95033 |
+----------------+--------------+-------------+---------------------+-------+
8 rows in set (0.01 sec)

2 查询select 表中所有记录的student_number,student_sex及class字段(列)。

select student_name,student_sex,class from student;

查询结果
mysql> select student_name,student_sex,class from student;
+--------------+-------------+-------+
| student_name | student_sex | class |
+--------------+-------------+-------+
| zhao-san     | women       | 95034 |
| wan-san      | men         | 95033 |
| sun-san      | women       | 95033 |
| li-san       | men         | 95033 |
| zhou-san     | women       | 95033 |
| fen-san      | women       | 95033 |
| chen-san     | women       | 95033 |
| chu-san      | women       | 95033 |
+--------------+-------------+-------+
8 rows in set (0.00 sec)

3 查询教师表:查询教师所有不重复的单位(depart列 去重)

select distinct depart from teacher;

# distinct 排除重复

查询结果
mysql> select distinct depart from teacher;
+-------------+
| depart      |
+-------------+
| basketball3 |
| basketball2 |
| basketball4 |
| basketball1 |
| basketball5 |
| basketball7 |
| basketball8 |
| basketball9 |
+-------------+
8 rows in set (0.00 sec)

4 查询score表中成绩在80-90之间的所有记录


(1)select * from score where degree between 80 and 90;

查询区间 between 。。。 and 。。。

查询结果
mysql> select * from score where degree between 80 and 90;
+----------------+---------------+--------+
| student_number | course_number | degree |
+----------------+---------------+--------+
| 101            | 303-3         |     88 |
| 102            | 303-2         |     87 |
| 102            | 303-4         |     89 |
| 103            | 303-3         |     87 |
| 104            | 303-3         |     86 |
| 106            | 303-1         |     82 |
+----------------+---------------+--------+
6 rows in set (0.00 sec)

# 另一种方式:直接运算符比较
(2)select * from score where degree > 80 and degree < 90;

5 查询score表中成绩为 86、87、88的所有记录

表示或者的关系的 in

select * from score where degree in(86,87,88);

查询结果
mysql> select * from score where degree in(86,87,88);
+----------------+---------------+--------+
| student_number | course_number | degree |
+----------------+---------------+--------+
| 101            | 303-3         |     88 |
| 102            | 303-2         |     87 |
| 103            | 303-3         |     87 |
| 104            | 303-3         |     86 |
+----------------+---------------+--------+
4 rows in set (0.00 sec)

6 查询student表中为’95034’班或者 student_sex为’women’的所有记录

or表示或者

select * from student where class='95034' or student_sex='women';

查询结果
mysql> select * from student where class='95034' or student_sex='women';
+----------------+--------------+-------------+---------------------+-------+
| student_number | student_name | student_sex | student_birthday    | class |
+----------------+--------------+-------------+---------------------+-------+
| 101            | zhao-san     | women       | 1992-01-01 00:00:00 | 95034 |
| 103            | sun-san      | women       | 1994-01-01 00:00:00 | 95033 |
| 105            | zhou-san     | women       | 1991-04-01 00:00:00 | 95033 |
| 106            | fen-san      | women       | 1991-11-01 00:00:00 | 95033 |
| 107            | chen-san     | women       | 1994-06-02 00:00:00 | 95033 |
| 108            | chu-san      | women       | 1951-06-01 00:00:00 | 95033 |
+----------------+--------------+-------------+---------------------+-------+
6 rows in set (0.00 sec)

7 以class字段为标准按照降序查询student记录(默认升序)

降序查询
select * from student  order by class desc;

mysql> select * from student  order by class desc;
+----------------+--------------+-------------+---------------------+-------+
| student_number | student_name | student_sex | student_birthday    | class |
+----------------+--------------+-------------+---------------------+-------+
| 101            | zhao-san     | women       | 1992-01-01 00:00:00 | 95034 |
| 102            | wan-san      | men         | 1993-01-01 00:00:00 | 95033 |
| 103            | sun-san      | women       | 1994-01-01 00:00:00 | 95033 |
| 104            | li-san       | men         | 1996-01-01 00:00:00 | 95033 |
| 105            | zhou-san     | women       | 1991-04-01 00:00:00 | 95033 |
+----------------+--------------+-------------+---------------------+-------+
8 rows in set (0.00 sec)


升序查询
# 两种形式
select * from student order by class;
select * from student order by class asc;

8 以course_number升序,degree降序查询score表中所有记录


select * from score order by course_number asc,degree desc;

查询结果
mysql> select * from score order by course_number asc,degree desc;
+----------------+---------------+--------+
| student_number | course_number | degree |
+----------------+---------------+--------+
| 105            | 303-1         |    100 |
| 106            | 303-1         |     82 |
| 107            | 303-2         |     92 |
| 102            | 303-2         |     87 |
| 101            | 303-3         |     88 |
| 103            | 303-3         |     87 |
| 104            | 303-3         |     86 |
| 102            | 303-4         |     89 |
| 107            | 303-5         |     99 |
| 101            | 303-6         |     95 |
+----------------+---------------+--------+
10 rows in set (0.00 sec)

9 查询student表中 ‘95034’班的人数


统计 count
select count(*) from student where class='95034';

查询结果
mysql> select count(*) from student where class='95034';
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

10 查询score表中的最高分的学生学号及课程号(子查询或者排序)


最大值  max

select student_number,course_number from score where degree=(select max(degree) from score);

mysql> select student_number,course_number from score where degree=(select max(degree) from score);
+----------------+---------------+
| student_number | course_number |
+----------------+---------------+
| 105            | 303-1         |
+----------------+---------------+
1 row in set (0.00 sec)

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57539.html

相关文章

西安企业做百度推广,一个月花三千和花三万到底差在哪?

4|最近跟几个西安的老板聊天,发现一个挺有意思的现象:同样做百度推广,有人一个月花三千块,询盘不断;有人一个月砸三万,水花都没见着。问他们区别在哪,大多数人说不清楚,只知道'钱花了,没效果'。 5| 6|百度推广这东西,说复杂也复杂,说简单也简单。核心就一件事:让你的潜在客户搜某个词的时候,你的信息...

我想当策划,大学应该选什么专业?

我想当策划,大学应该选什么专业?

学,广告,传播,公关,这些专业其实都可以。另外也可以学像汉语言文学,以及一些跟文学相关的一些专业,会对你找工作有帮助。但是,你想从事这个这份职业,除了专业的学习之外,更多的是,你要在上学的时候积极参与一些更营销策划相关的社会实践。比如说你可以做一些兼职,比如说帮别人去写稿,...

服装市场营销策略分析,“定位不慎满盘皆输”

服装市场营销策略分析,“定位不慎满盘皆输”

不同的区域需要不同的策略,而不同的营销策略需要不同的销售思路来配合。因此,在研究女装产品销售思路之前,最好先对于市场与营销策略做一次深入地了解。1.市场区域化(market segmentation):目标营销的第一步,是将整个市场拆分成若干个同性质的小市场。2.目标市场的...

晚间悦读丨你的思维方式,决定你的人生高度!

晚间悦读丨你的思维方式,决定你的人生高度!

越长大,越发现,能够决定你人生高度的,往往是你的认知层次。 你的认知在哪个层级,你的人生就处在什么状态。你认知的高度,决定了你人生的高度。 那如何才能升级方式、提升认知能力呢?可以从这三个方面做出改变。 NO. 1 改变态度 有人...

编写项目营销策划方案六大要点

编写项目营销策划方案六大要点

现在商业发展非常迅速,的需求非常的大,但是要做好营销策划是有一定难度的,我把自己做营销策划的一些体会在这里分享给朋友们。营销策划方案六大要点我们先说项目营销策划方案这个话题。大部分的营销策划人都是在企业里工作,大部分项目之初都是来源于一个想法,创始人、老板或者创始团队的一个...

【商场营销策划】如何进行商场营销策划?

【商场营销策划】如何进行商场营销策划?

商场是策划者们关注的永恒话题,那么究竟该如何作好商场营销策划呢?掌握以下这几点营销策略设计原则,至关重要!1.义利兼顾的原则。商场在获取利润的同时要充分考虑到消费者的合法利益和商场的长远利益。在作商场活动营销策略方案的时候应该将这一点作为首要的原则。对商场有利而对顾客不利的...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片