ホームページ  >  記事  >  データベース  >  MySQL の高度なクエリの理解と使用例

MySQL の高度なクエリの理解と使用例

零下一度
零下一度オリジナル
2017-06-30 15:23:242336ブラウズ

1. ワード部分

①制約制約②外部キー③参照参照

④サブクエリサブクエリ⑤内部内部⑥結合接続

2. テーブルを変更するSQL文のキーワード

1. テーブル名を変更するRENAMEフィールドを変更します

2. 指定された行数でクエリ結果セットを返すことができるキーワードはどれですか

はい

3. 演習部分

1. table を作成し、テーブルに対する変更操作を実装します

#コンピューター上 1

USE test;

CREATE TABLE person(

number INT(4) AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR(50) NOT NULL,

sex CHAR( 2) ,

BRONDATE DATETIME
);
alter table person rename tb_person;
alTer table tb_person drap `bordate`; SQL ステートメントを mySchool データベースとして使用します
で結果テーブルに制約を追加します。
#コンピューター上 2
USE myschool;
ALTER TABLE result ADD CONSTRAINT re PRIMARY KEY result(`studentNo`,`subjectNo`,`exameDate`);
ALTER TABLE result ADD CONSTRAINT fk_result_student FOREIGN KEY ( StudentNo) REFERENCES Student (studentNo) );

3. コンピューター上の生徒テーブル、科目テーブル、成績テーブルにデータを追加します

# 3

USE myschool;

INSERT INTO `subject` (`subjectName`, `classHour`, `gradeID `) VALUES

('HTML', '160', '1'),
('Java OOP', '230', '2');

4. 生徒表と科目表データを変更します

#コンピューター上 4.

myschool を使用;

INSERT INTO `myschool`.`result` (`studentNo`, `subjectNo`, `exameDate`, `studentResult`) VALUES ('1002', '1', '2014-8-8', ' 78'),
('1003', '2', '2017-7-7', '98'),
('1004', '1', '2015-8-8', '78') 、
('1005', '2', '2013-8-8', '78'),
('1006', '1', '2017-8-8', '66'),

(' 1007 ', '1', '2014-8-8', '55'),

('1008', '1', '2014-8-8', '13'),

('1009', ' 1 ', '2014-8-8', '89');

UPDATE 学生 SET eamil='stu200000@163.com',loginPwd='000' WHERE StudentNo='20000';
UPDATE `件名` SET `classHour ` =`classHour`-10 WHERE `classHour`>200 AND `subjectNo`=1;
DROP TABLE IF EXISTS Student_grade1;
CREATE TABLE Student_grade1(SELECT `studentName`,`sex`,`bornDate`,`phone` FROM Student WHERE `gradeID`=1);

5. 学生情報のクエリ (2016 年 2 月 17 日の上位 5 人の学生の学生 ID とスコアをクエリ)

#コンピュータ上で 5
SELECT `studentNo`,`studentResult` FROM `結果` WHERE `exameDate`<'2016-2-17' ORDER BY StudentResult DESC LIMIT 5;

SELECT studentsName,(YEAR(NOW())-YEAR(bornDate)) AS age,bornDate,phone FROM Student
WHERE sex='女'
ORDER BY BornDate ASC
LIMIT 1,6;

SELECT YEAR(bornDate) AS Nian,COUNT(studentNo) AS num FROM Student GROUP BY BornDate HAVING COUNT(studentNo)>=2;

SELECT MAX(`studentResult`),MIN(`studentResult`),AVG(`studentResult`) FROM `result` WHERE `exameDate`='2016-02-17' GROUP BY `studentNo`;

6. 指定された内容をクエリします。 Student 試験結果


#コンピュータ上で 6
SELECT MAX(`studentResult`),MIN(`studentResult`) FROM result
WHERE `exameDate`=(SELECT `exameDate` FROM `result` ORDER BY ExameDate DESC LIMIT 1) AND

`subjectNo`=(SELECT `subjectNo` FROM `subject` WHERE `subjectName`='Logic Java');

#select max(exameDate) from result

7. 特定の学期に提供されるコースをクエリします

#コンピューターにアクセスします 7
SELECT subjectName FROM `subject`
WHERE subjectNo IN(SELECT subjectNo FROM `subject`
WHERE GradeId=(SELECT GradeId FROM Grade WHERE GradeName='S1'));

8.コースの最新の試験を欠席しました 学生リスト

#上机8

SELECT `studentName` FROM Student WHERE `studentNo` IN(SELECT `studentNo` FROM Student WHERE StudentNo NOT IN(SELECT `studentNo` FROM `result`

WHERE `subjectNo`=(SELECT `subjectNo` FROM `subject` WHERE `subjectName`='HTML') AND

`exameDate`=(SELECT `exameDate` FROM `result` WHERE subjectNo=(SELECT `subjectNo` FROM `subject` WHERE `subjectName`='HTML')
ORDER BYexameDate DESC LIMIT 1)));

V. 概要部分

複数テーブル結合クエリを実装する 2 つの方法:

①テーブル接続

②サブクエリ

以上がMySQL の高度なクエリの理解と使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。