mysql查詢戈毒、事物(四)

知識(shí)要點(diǎn):

  1. 單表查詢
  2. 子查詢
  3. 聯(lián)表查詢
  4. 事務(wù)

在進(jìn)行查詢之前硼啤,我們要先建好關(guān)系表议经,并往數(shù)據(jù)表中插入些數(shù)據(jù)。為查詢操作做好準(zhǔn)備谴返。

五張關(guān)系表的創(chuàng)建:
#創(chuàng)建并進(jìn)入數(shù)據(jù)庫:
mysql> CREATE DATABASE `info`;
Query OK, 1 row affected (0.00 sec)
mysql> USE `info`;
Database changed

#創(chuàng)建學(xué)院表:
CREATE TABLE `department`(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL
);

#創(chuàng)建學(xué)生表:
CREATE TABLE `student`(
`s_id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`dept_id` INT,
FOREIGN KEY(`dept_id`) REFERENCES `department` (`id`)
);

#創(chuàng)建學(xué)生的詳細(xì)信息表:
CREATE TABLE `stu_details`(
`s_id` INT PRIMARY KEY,
`age` INT,
`sex` CHAR(1),
FOREIGN KEY(`s_id`) REFERENCES `student` (`s_id`)
);

#創(chuàng)建課程表:
CREATE TABLE `course`(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL
);

#創(chuàng)建中間表:
CREATE TABLE `select`(
`s_id` INT,
`c_id` INT,
PRIMARY KEY (`s_id`,`c_id`),
FOREIGN KEY (`s_id`) REFERENCES `student`(`s_id`),
FOREIGN KEY (`c_id`) REFERENCES `course`(`id`)
);

#查看當(dāng)前存在的表:
mysql> SHOW TABLES;
往數(shù)據(jù)表中添加數(shù)據(jù)
#往學(xué)院表中添加數(shù)據(jù):
mysql> INSERT INTO `department`(`name`)
    -> VALUES('外國(guó)語'),('藝術(shù)'),('計(jì)算機(jī)'),('化工');

#往學(xué)生表中添加數(shù)據(jù):
mysql> INSERT INTO `student`(`name`,`dept_id`)
    -> VALUES('小明',1),('小紅',3),('小花',3),('小新',4),('張三',2),('劉三',3);

#往學(xué)生詳細(xì)信息表中添加數(shù)據(jù):
mysql> INSERT INTO stu_details
    -> VALUES(1,18,'男'),(4,20,'女'),(3,16,'女'),(2,19,'男');

#往課程表中添加數(shù)據(jù):
mysql> INSERT INTO `course`(`name`)
    -> VALUES ('心理學(xué)'),('佛學(xué)'),('近代史'), ('音樂鑒賞');

#查看中間表的結(jié)構(gòu):    (select是關(guān)鍵字煞肾,要加反引號(hào))
mysql> DESC `select`;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| s_id  | int(11) | NO   | PRI | NULL    |       |
| c_id  | int(11) | NO   | PRI | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.03 sec)
#往中間表中添加數(shù)據(jù)
mysql> INSERT INTO `select`
    -> VALUES(1,2),(1,4),(2,1),(2,4),(4,1),(4,2),(4,4);

查詢

查詢所有記錄

SELECT * FROM tb_name;

SELECT * FROM  `department`;
SELECT * FROM  `student`;
SELECT * FROM  `stu_details`;
SELECT * FROM  `course`;
SELECT * FROM  `select`;
查詢選中列記錄

SELECT col_name1,col_name2 FROM tb_name;

查詢指定條件下的記錄

SELECT col_name FROM tb_name WHERE 條件

查詢后為列取別名

SELECT col_name AS new_name FROM tab_name #as可寫可不寫

模糊查詢

SELECT 字段 FROM 表 WHERE 某字段 Like 條件

#查詢所有記錄:
mysql> SELECT * FROM `student`;

#查詢選中列記錄
mysql> SELECT name,dept_id FROM student;

#查詢指定條件下的記錄
mysql> SELECT * FROM student WHERE `name`='小紅';

#查詢后為列取別名
SELECT name AS `姓名` ,dept_id AS 學(xué)院id  FROM student WHERE s_id>=2;

SELECT name ,dept_id   FROM student WHERE s_id>=2;

SELECT name `姓名` ,dept_id 學(xué)院id  FROM student WHERE s_id>=2;

#模糊查詢  *
mysql> select * from student where name like '小%';
mysql> select * from student where name like '小_';
mysql> select * from student where name like '%小%';

% 多個(gè)字(任意個(gè));
_ 一個(gè)字


#邏輯運(yùn)算符  or  and 
# or
select * from student where name like '小%' or name like '張%';

# and
select * from student where name like '小%' and s_id >2;

# 判斷為null,不用 =   嗓袱,只能用 is    is not
select * from student where dept_id is null;

select * from student where dept_id is not null;
排序ORDER BY

ASC升序(默認(rèn)) DESC降序

#查詢學(xué)生的選修表(中間表)
mysql> SELECT * FROM `select`;

#按學(xué)生學(xué)號(hào)升序輸出
mysql> SELECT * FROM `select` ORDER BY `s_id`;
select s_id 學(xué)生,c_id 課程 from `select` order by s_id asc;

#按課程id降序輸出:
mysql> SELECT * FROM `select` ORDER BY `c_id` DESC;

去重distinct
select distinct columns FROM  tb_name;
select distinct subject_number as number from grads;    #查看不重復(fù)的number
select distinct gradName from student;  #查看有幾個(gè)年級(jí)
限制顯示數(shù)據(jù)的數(shù)量LIMIT
# 分頁籍救。

#按學(xué)生學(xué)號(hào)升序輸出的前4條數(shù)據(jù)
mysql> SELECT * FROM `select` ORDER BY `s_id` LIMIT 4;    # (0,4)  從 索引為0渠抹, 往后面拿4條

#指定的返回的數(shù)據(jù)的位置和數(shù)量
mysql> SELECT * FROM `select` ORDER BY `s_id` LIMIT 4,4;    # (4蝙昙,4)  從 索引為4, 往后面拿4條

聚合
常用聚合函數(shù) 描述
COUNT(column) 統(tǒng)計(jì)個(gè)數(shù)
MAX(column) 最大值
MIN(column) 最小值
SUM(column) 求和
AVG(column) 平均值
GROUP_CONCAT(column) 列出字段全部值
select count(*) from student;           #統(tǒng)計(jì)有幾條數(shù)據(jù)
select max(age) from student;           #求年齡最大值
select avg(age) from student;           #求平均年齡  
select group_concat(age) from student;      #顯示字段所有值
聚合過濾 having

對(duì)聚合出來的數(shù)據(jù)進(jìn)行過濾梧却。

#where不可以使用別名奇颠, having可以使用
select age from student where age>20;           #查看age>20的字段
select age as new from student where new>20;    #錯(cuò)誤 不能使用別名,
select age as new from student where age>20;    #使用原來的名字可以

select age as new from student having new>20;   #having可以使用別名
select age as new from student having age>20;   #也可以使用原來的名字


#where不能操作聚合函數(shù)放航, having可以
select gradName, count(age) from student group by gradName; #查看每個(gè)年級(jí)有多少人
select gradName, count(age) from student where count(age)>3 group by gradName;
#報(bào)錯(cuò)烈拒, where不能操作聚合函數(shù)

select gradName, count(age) from student group by gradName having count(age)>3;
#having可以操作聚合函數(shù)
#where和having組合使用
select gradName, count(age) from student where age>18  group by gradName;
#統(tǒng)計(jì)每個(gè)年級(jí)age>18的有多少人

select gradName, count(age) from student where age>18  group by gradName having gradName='一年級(jí)'; 
#統(tǒng)計(jì)一年級(jí)age>18的有多少人
分組查詢GROUP BY

在分組的情況下,只能出現(xiàn)聚合列和分組列

    select distinct gradName from student; 
#查看總共有幾個(gè)年級(jí)

SELECT gradName, count(name)as count FROM student GROUP BY  gradName;   
#查找每個(gè)年級(jí)有多少人

SELECT gradName, GROUP_CONCAT(name) FROM student group by gradName;
#查看每個(gè)年級(jí)有哪些人

SELECT gradName,name FROM student group by  gradName;   
#出現(xiàn)其他字段广鳍,報(bào)錯(cuò)
## 一般跟聚合函數(shù);group by就是用來分組的缺菌,不能再查出單個(gè)的;最多單獨(dú)顯示字段是根據(jù)分組的字段搜锰,其他字段需要利用聚合函數(shù)來顯示伴郁;

#對(duì)學(xué)生表中學(xué)院欄進(jìn)行分組,并統(tǒng)計(jì)學(xué)院的學(xué)生人數(shù):
mysql> SELECT dept_id AS 學(xué)院id,count(dept_id) AS 學(xué)生個(gè)數(shù) FROM student GROUP BY `dept_id` ;
+----------+--------------+
| 學(xué)院id   | 學(xué)生個(gè)數(shù)     |
+----------+--------------+
|        1 |            1 |
|        3 |            2 |
|        4 |            1 |
+----------+--------------+
3 rows in set (0.00 sec)

select * from student order by dept_id;


## 不能這么寫
# select s_id , age ,sex from stu_details group by sex

# group by 只能跟聚合函數(shù)一起用蛋叼, 一般用 做統(tǒng)計(jì)
select sex , MAX(age) from stu_details group by sex



# 裝B
select dept_id,group_concat(s_id,name separator ',') from student group by `dept_id`;
      3 |                  2小紅,3小花,6劉三  

select dept_id,group_concat(s_id,'  ',name separator ',') from student group by `dept_id`;



HAVING分組條件   
HAVING 后的字段必須是SELECT后出現(xiàn)過的
mysql> SELECT dept_id AS 學(xué)院id,count(dept_id) AS 學(xué)生個(gè)數(shù) FROM student GROUP BY `dept_id` HAVING  學(xué)生個(gè)數(shù)=1;
+----------+--------------+
| 學(xué)院id   | 學(xué)生個(gè)數(shù)     |
+----------+--------------+
|        1 |            1 |
|        4 |            1 |
+----------+--------------+
2 rows in set (0.01 sec)

區(qū)別:
where  帶著條件 去表里面焊傅,刪選內(nèi)容, (table)
having :select 出來了結(jié)果狈涮,在進(jìn)行一次刪選狐胎。
有g(shù)roup by 時(shí),having在group  by 條件的后面歌馍,而where 在group by的前面握巢。

子查詢

出現(xiàn)在其他SQL語句內(nèi)的SELECT字句。

1)嵌套在查詢內(nèi)部
2)必須始終出現(xiàn)在圓括號(hào)內(nèi)
3)可以包含多個(gè)關(guān)鍵字或條件

### 把別人的結(jié)果松却,當(dāng)成數(shù)據(jù)暴浦,直接拿過來用溅话。


# 求出學(xué)生的平均年齡
SELECT AVG(`age`) FROM `stu_details`;

#查找出大于平均年齡的數(shù)據(jù)
mysql> SELECT * FROM `stu_details` WHERE `age`>18.25;

#將平均數(shù)的SQL語句作為子查詢放入上一條語句中
mysql> SELECT * FROM `stu_details` WHERE `age`>(SELECT AVG(`age`) FROM `stu_details`);



##需求: 要查找,計(jì)算機(jī)和外國(guó)語 的學(xué)生

select id from department where name in ('計(jì)算機(jī)','外國(guó)語');



select * from student where dept_id in (select id from department where name in ('計(jì)算機(jī)','外國(guó)語') );


# 返回多行的子查詢用in 歌焦, not in
select * from student where dept_id not in (1,3);
select * from student where dept_id in (1,3);

聯(lián)表查詢

內(nèi)連接[INNER| CROSS] JOIN

無條件內(nèi)連接:
無條件內(nèi)連接飞几,又名交叉連接/笛卡爾連接
第一張表種的每一項(xiàng)會(huì)和另一張表的每一項(xiàng)依次組合 #每一個(gè)人握一次手;

有條件內(nèi)連接:
在無條件的內(nèi)連接基礎(chǔ)上独撇,加上一個(gè)ON子句
當(dāng)連接的時(shí)候屑墨,篩選出那些有實(shí)際意義的記錄行來進(jìn)行拼接

在寫條件時(shí)注意兩張表的列名是否一樣,
如果時(shí)一樣的則要在前面加上表名纷铣,tb_name.colname這種形式存在

#無條件內(nèi)連接:
mysql> SELECT * FROM `student` INNER JOIN `department`;
+------+--------+------+----+-----------+
| s_id | name   | dept_id | id | name      |
+------+--------+------+----+-----------+
|    1 | 小明   |    1 |  1 | 外國(guó)語    |
|    2 | 小紅   |    3 |  1 | 外國(guó)語    |
|    3 | 小花   |    3 |  1 | 外國(guó)語    |
|    4 | 小新   |    4 |  1 | 外國(guó)語    |
|    1 | 小明   |    1 |  2 | 藝術(shù)      |
|    2 | 小紅   |    3 |  2 | 藝術(shù)      |
|    3 | 小花   |    3 |  2 | 藝術(shù)      |
|    4 | 小新   |    4 |  2 | 藝術(shù)      |
|    1 | 小明   |    1 |  3 | 計(jì)算機(jī)    |
|    2 | 小紅   |    3 |  3 | 計(jì)算機(jī)    |
|    3 | 小花   |    3 |  3 | 計(jì)算機(jī)    |
|    4 | 小新   |    4 |  3 | 計(jì)算機(jī)    |
|    1 | 小明   |    1 |  4 | 化工      |
|    2 | 小紅   |    3 |  4 | 化工      |
|    3 | 小花   |    3 |  4 | 化工      |
|    4 | 小新   |    4 |  4 | 化工      |
+------+--------+------+----+-----------+
16 rows in set (0.04 sec)
#有條件內(nèi)連接:
mysql> SELECT * FROM `student` INNER JOIN `department`
    -> ON dept_id=id;
+------+--------+------+----+-----------+
| s_id | name   | dept_id | id | name      |
+------+--------+------+----+-----------+
|    1 | 小明   |    1 |  1 | 外國(guó)語    |
|    2 | 小紅   |    3 |  3 | 計(jì)算機(jī)    |
|    3 | 小花   |    3 |  3 | 計(jì)算機(jī)    |
|    4 | 小新   |    4 |  4 | 化工      |
+------+--------+------+----+-----------+
4 rows in set (0.03 sec)

#需求: 查詢出 學(xué)生姓名卵史,和對(duì)應(yīng)學(xué)院名
mysql> SELECT s.name 姓名, d.name 學(xué)院 FROM `student` s
    -> INNER JOIN `department` d
    -> ON dept_id=id;
外連接{ LEFT| RIGHT } [OUTER] JOIN

{ LEFT| RIGHT } [OUTER] JOIN

內(nèi)連接和外連接區(qū)別,查詢左右表都有的數(shù)據(jù)搜立,不要左/右中NULL的那一部分程腹,其中有條件內(nèi)連接是匹配連接條件的;

左外連接: (即以左表為基準(zhǔn)儒拂,到右表找匹配的數(shù)據(jù)寸潦,找不到匹配的用NULL補(bǔ)齊。)

兩張表做連接的時(shí)候社痛,在連接條件不匹配的時(shí)候
留下左表中的數(shù)據(jù)见转,而右表中的數(shù)據(jù)以NULL填充

右外連接: (以右表為基準(zhǔn),到左表找匹配的數(shù)據(jù)蒜哀,找不到匹配的用NULL補(bǔ)齊斩箫。)
對(duì)兩張表做連接的時(shí)候,在連接條件不匹配的時(shí)候
留下右表中的數(shù)據(jù)撵儿,而左表中的數(shù)據(jù)以NULL填充

#往學(xué)生表中添加數(shù)據(jù)乘客,只添加名字
mysql> INSERT INTO student(name)
    -> VALUES('xixi');
Query OK, 1 row affected (0.11 sec)
#查看所有學(xué)生表數(shù)據(jù)
mysql> SELECT * FROM  student;
+------+--------+------+
| s_id | name   | dept_id |
+------+--------+------+
|    1 | 小明   |    1 |
|    2 | 小紅   |    3 |
|    3 | 小花   |    3 |
|    4 | 小新   |    4 |
|    5 | xixi   | NULL |
+------+--------+------+
5 rows in set (0.00 sec)
#使用內(nèi)連接加條件只能看到有分配好學(xué)院的學(xué)生的信息;
mysql> SELECT * FROM  student INNER JOIN department
    -> ON dept_id=id;
+------+--------+------+----+-----------+
| s_id | name   | dept_id | id | name      |
+------+--------+------+----+-----------+
|    1 | 小明   |    1 |  1 | 外國(guó)語    |
|    2 | 小紅   |    3 |  3 | 計(jì)算機(jī)    |
|    3 | 小花   |    3 |  3 | 計(jì)算機(jī)    |
|    4 | 小新   |    4 |  4 | 化工      |
+------+--------+------+----+-----------+
4 rows in set (0.02 sec)

#使用左連接把學(xué)生的數(shù)據(jù)全取出來淀歇,該學(xué)生沒有學(xué)院信息的用NULL填充
mysql> SELECT * FROM  student LEFT JOIN department
    -> ON dept_id=id;
+------+--------+------+------+-----------+
| s_id | name   | dept_id | id   | name      |
+------+--------+------+------+-----------+
|    1 | 小明   |    1 |    1 | 外國(guó)語    |
|    2 | 小紅   |    3 |    3 | 計(jì)算機(jī)    |
|    3 | 小花   |    3 |    3 | 計(jì)算機(jī)    |
|    4 | 小新   |    4 |    4 | 化工      |
|    5 | xixi   | NULL | NULL | NULL      |
+------+--------+------+------+-----------+
5 rows in set (0.00 sec)



#使用右外連接把目前還沒有學(xué)生的學(xué)院的數(shù)據(jù)也顯示出來
mysql> SELECT * FROM  student RIGHT JOIN department
    -> ON dept_id=id;
+------+--------+------+----+-----------+
| s_id | name   | dept_id | id | name      |
+------+--------+------+----+-----------+
|    1 | 小明   |    1 |  1 | 外國(guó)語     |
|    2 | 小紅   |    3 |  3 | 計(jì)算機(jī)     |
|    3 | 小花   |    3 |  3 | 計(jì)算機(jī)     |
|    4 | 小新   |    4 |  4 | 化工       |
| NULL | NULL   | NULL |  2 | 藝術(shù)      |
+------+--------+------+----+-----------+
5 rows in set (0.00 sec)

mysql>
# 需求:  作為班主任易核,我想看到,學(xué)生的 ( 姓名浪默,選的課程名牡直,所屬學(xué)院 )
select  s.name, c.name,d.name  from  `student` s 
left join `select` se on se.s_id = s.s_id
left join course  c on se.c_id = c.id
left join department d on s.dept_id = d.id;

##1.
select s.name,d.name from student s left join department d on s.dept_id=d.id;

##2.學(xué)生選的課(名稱)
select se.s_id ,c.name from `select` se   left join course c on se.c_id = c.id;


select s.name, d.name,  c.name from student s
left join  department d on s.dept_id = d.id
left join `select` se  on s.s_id = se.s_id
left join course c on se.c_id = c.id;



select  s.name ,GROUP_CONCAT(c.name SEPARATOR ',') 課程,d.name  from  `student` s 
left join `select` se on s.s_id = se.s_id
left join `course` c on se.c_id = c.id
left join `department` d on s.dept_id = d.id
group by s.name,d.name ;
+--------+-------------------------------+-----------+
| name   | 課程                          | name      |
+--------+-------------------------------+-----------+
| xixi   | NULL                          | NULL      |
| 小新   | 心理學(xué),佛學(xué),音樂鑒賞          | 化工      |
| 小明   | 佛學(xué),音樂鑒賞                 | 外國(guó)語    |
| 小紅   | 音樂鑒賞,心理學(xué)               | 計(jì)算機(jī)    |
| 小花   | NULL                          | 計(jì)算機(jī)    |
+--------+-------------------------------+-----------+


#需求:  作為宿管, 學(xué)生的 ( 姓名纳决, 年齡碰逸,性別,所屬學(xué)院)
select s.name, stu.age,stu.sex,d.name from student s
left join `stu_details` stu on s.s_id = stu.s_id
left join `department` d on s.dept_id = d.id;
+--------+------+------+-----------+
| name   | age  | sex  | name      |
+--------+------+------+-----------+
| 小明   |   18 | 男   | 外國(guó)語    |
| 小紅   |   19 | 男   | 計(jì)算機(jī)    |
| 小花   |   16 | 女   | 計(jì)算機(jī)    |
| 小新   |   20 | 女   | 化工      |
| xixi   | NULL | NULL | NULL      |
+--------+------+------+-----------+

事務(wù)

事務(wù): 是數(shù)據(jù)庫運(yùn)行中的一個(gè)邏輯工作單位阔加。
#原子性
事務(wù)必須是原子工作單元饵史;對(duì)于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行胳喷。

#一致性
事務(wù)在完成時(shí)湃番,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。

#隔離性
由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離厌蔽。

為了保證數(shù)據(jù)庫記錄的更新從一個(gè)一致性狀態(tài)變更為另一個(gè)一致性狀態(tài)
使用事務(wù)來處理是非常必要牵辣。

例:
創(chuàng)建一張銀行賬戶的表
mysql> CREATE TABLE `account`(
    -> `id` INT PRIMARY KEY AUTO_INCREMENT,
    -> `name` VARCHAR(20) NOT NULL,
    -> `balance` INT
    -> );
Query OK, 0 rows affected (0.52 sec)
添加兩個(gè)用戶及用戶的存款的信息
mysql> INSERT INTO `account`(`name`,`balance`)
    ->  VALUES('張三',10000),
    ->        ('小明',2000)
    -> ;
Query OK, 2 rows affected (0.09 sec)
Records: 2  Duplicates: 0  Warnings: 0

假設(shè)現(xiàn)在用戶小明在商店買了500元東西摔癣,現(xiàn)在要轉(zhuǎn)賬給商店奴饮,那么就需要從小明的賬戶上減去500,然后在商店的用戶上加上500择浊,但是如果在減500的過程中出現(xiàn)了系統(tǒng)故障戴卜,再重新啟動(dòng)后發(fā)現(xiàn)小明的錢扣了,但商店卻沒有收到琢岩,這時(shí)候就會(huì)出現(xiàn)數(shù)據(jù)變動(dòng)不一致投剥。對(duì)于這種數(shù)據(jù)的修改我們需要的就是要么同時(shí)修改成功,要么同時(shí)修改失敗担孔,所以這就需要用事務(wù)來進(jìn)行出來江锨。

START TRANSACTION:開始一個(gè)新的事務(wù)
COMMIT:提交當(dāng)前事務(wù),做出永久改變
ROLLBACK:回滾當(dāng)前事務(wù)糕篇,放棄修改

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE `account`
    -> SET `balance`= `balance`-500
    -> WHERE `name` ='小明'
    -> ;
Query OK, 1 row affected (0.04 sec)
Rows matched: 1  Changed: 1  Warnings: 0

使用ROLLBACK;使數(shù)據(jù)的修改不生效啄育,回到事務(wù)前的狀態(tài):
mysql> ROLLBACK;
Query OK, 0 rows affected (0.06 sec)


做一次正確的操作:
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE `account`
    -> SET `balance`=`balance`-500
    -> WHERE `name`='小明'
    -> ;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> UPDATE `account`
    -> SET `balance`=`balance`+500
    -> WHERE `name`='張三'
    -> ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM `account`;

mysql> COMMIT;
Query OK, 0 rows affected (0.07 sec)

當(dāng)COMMIT后,數(shù)據(jù)修改成功拌消,ROLLBACK也沒法回到之前了挑豌。

mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)

作業(yè)

#1 查出學(xué)生詳情表,性別為男,并同時(shí)年齡大于18的 
select * from stu_details where sex='男' and age>18;
#2 根據(jù)上述的結(jié)果,查出學(xué)生表對(duì)應(yīng)的姓名
select s.name from student s
inner join stu_details d
on s.s_id=d.s_id
and d.sex='男' and d.age>18;

#3 將學(xué)生通過性別進(jìn)行分組墩崩, 統(tǒng)計(jì)出各組的人數(shù)氓英,并得出每組的年齡的平均值
select sex 性別,count(*) 各組人數(shù),avg(age)  from stu_details group by sex;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鹦筹,隨后出現(xiàn)的幾起案子铝阐,更是在濱河造成了極大的恐慌,老刑警劉巖铐拐,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饰迹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡余舶,警方通過查閱死者的電腦和手機(jī)啊鸭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匿值,“玉大人赠制,你說我怎么就攤上這事。” “怎么了钟些?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵烟号,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我政恍,道長(zhǎng)汪拥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任篙耗,我火速辦了婚禮迫筑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宗弯。我一直安慰自己脯燃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布蒙保。 她就那樣靜靜地躺著辕棚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邓厕。 梳的紋絲不亂的頭發(fā)上逝嚎,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音详恼,去河邊找鬼补君。 笑死,一個(gè)胖子當(dāng)著我的面吹牛单雾,可吹牛的內(nèi)容都是我干的赚哗。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼硅堆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼屿储!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起渐逃,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤够掠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后茄菊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體疯潭,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年面殖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了竖哩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡脊僚,死狀恐怖相叁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤增淹,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布椿访,位于F島的核電站,受9級(jí)特大地震影響虑润,放射性物質(zhì)發(fā)生泄漏成玫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一拳喻、第九天 我趴在偏房一處隱蔽的房頂上張望哭当。 院中可真熱鬧,春花似錦舞蔽、人聲如沸荣病。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脖岛,卻和暖如春朵栖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柴梆。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工陨溅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绍在。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓门扇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親偿渡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子臼寄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容