1. 程式人生 > >資料庫查詢語句及相應例題

資料庫查詢語句及相應例題

CREATE TABLE student (
id INT(10) not NULL UNIQUE PRIMARY KEY,
`NAME` VARCHAR(20) NOT NULL,
sex VARCHAR(4),
birth YEAR,
department VARCHAR(20),
address VARCHAR(50)
);

SELECT *FROM student;
INSERT INTO student VALUES
(901,'張老大','男',1985,'計算機系','北京市海定區'),
(902,'張老二','男',1986,'中文系','北京市昌平區'),
(903,'張三','女',1990,'中文系','湖南省永州市'),
(904,'李四','男',1990,'英語系','遼寧省阜新市'),
(905,'王五','女',1991,'英語系','福建省廈門市'),
(906,'王六','男',1988,'計算機系','湖南省痕陽市');


CREATE TABLE score(
id INT(10) PRIMARY KEY auto_increment,
stu_id INT(10) NOT NULL,
c_name VARCHAR(20),
grade INT(10)
);

INSERT INTO score VALUES
(NULL ,901,'計算機',98),
(NULL ,901,'英語',80),
(NULL ,902,'計算機',65),
(NULL ,902,'中文',88),
(NULL ,903,'中文',95),
(NULL ,904,'計算機',70),
(NULL ,904,'英語',92),
(NULL ,905,'英語',94),
(NULL ,906,'計算機',90),
(NULL ,906,'英語',85);


1查詢student表的所有記錄
SELECT *FROM student;

2查詢student表的第2條到4條記錄

SELECT *
FROM student WHERE id BETWEEN 902 AND 904;

3從student表查詢所有學生的學號(id)、姓名(name)和院系(department)的資訊
SELECT id ,`NAME`,department
FROM student

4從student表中查詢計算機系和英語系的學生的資訊
SELECT *
FROM student WHERE department='計算機系' OR department='英語系';

5從student表中查詢年齡18~22歲的學生資訊

6從student表中查詢每個院系有多少人
SELECT department, COUNT(department) AS '人數'
FROM student GROUP BY department ;

7從score表中查詢每個科目的最高分
SELECT*FROM score;
SELECT*FROM student;

--
-- SELECT c_name ,MAX(grade)
-- FROM score GROUP BY c_name ;

-- 8查詢李四的考試科目(c_name)和考試成績(grade)
-- SELECT s.`NAME`,c1.c_name,c1.grade
-- FROM score c1, student s WHERE c1.stu_id=s.id AND s.`NAME`='李四';

-- 9用連線的方式查詢所有學生的資訊和考試資訊
--
-- SELECT s.`NAME`,s.sex,s.birth,s.department,s.address,c.c_name,c.grade
-- FROM student s,score c
-- WHERE s.id=c.stu_id ;

-- 10計算每個學生的總成績
-- SELECT s.`NAME`,stu_id,SUM(grade)
-- FROM score c,student s
-- WHERE c.stu_id=s.id
-- GROUP BY s.`NAME`,stu_id ;


-- 11計算每個考試科目的平均成績

SELECT c_name,AVG(grade) as '平均'
FROM score
GROUP BY c_name;


-- 12查詢計算機成績低於95的學生資訊
SELECT c.grade,s.id,s.`NAME`,s.sex,s.birth,s.address,s.department
FROM score c,student s
 WHERE c.stu_id=s.id AND c.c_name='計算機' AND c.grade<95;


-- 13查詢同時參加計算機和英語考試的學生的資訊

SELECT s.id,s.`NAME`,s.sex,s.birth,s.address,s.department
FROM score c,student s
WHERE c.stu_id=s.id AND c.c_name='計算機' AND c.c_name='英語';

SELECT *
FROM student a ,score b,score c
WHERE a.id=b.stu_id
AND b.c_name='計算機'
AND a.id=c.stu_id
AND c.c_name='英語';



SELECT *  FROM student
     WHERE id =ANY
      ( SELECT stu_id FROM score
      WHERE stu_id IN  (SELECT stu_id FROM score WHERE c_name=  '英語' )
       AND c_name= '計算機');

-- 14將計算機考試成績按從高到低進行排序
SELECT stu_id,grade
FROM score
WHERE c_name='計算機'
ORDER BY grade DESC;

-- 15從student表和score表中查詢出學生的學號,然後合併查詢結果
SELECT *
FROM student AS s INNER JOIN score AS c
ON s.id=c.stu_id;


-- 16查詢姓張或者姓王的同學的姓名、院系和考試科目及成績
SELECT *
FROM student ,score
WHERE (`NAME` LIKE '張%' OR `NAME` LIKE '王%')
AND student.id=score.stu_id;

-- 17查詢都是湖南的學生的姓名、年齡、院系和考試科目及成績

SELECT *
FROM student s ,score c
WHERE  (s.address LIKE '湖南%')
AND s.id=c.stu_id;