>데이터 베이스 >MySQL 튜토리얼 >MySQL 고급 쿼리 이해 및 사용 예

MySQL 고급 쿼리 이해 및 사용 예

零下一度
零下一度원래의
2017-06-30 15:23:242369검색

1.워드 부분

①제약 조건 ②외부 키 ③참조 참조

④서브 쿼리 서브 쿼리⑤내부 내부 ⑥조인 연결

2. 미리 보기 부분

1. 테이블 이름을 수정하는 SQL 문의 키워드는 무엇인가요?

RENAME 필드 수정

2. 지정된 행 수만큼 쿼리 결과를 반환할 수 있는 키워드

LIMIT

3. 테이블 연결을 하위 쿼리로 대체할 수 있나요

3. 데이터를 생성합니다. table , 테이블에 대한 수정 작업 구현

#On-computer 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 Drop `; Ble tb_person 변경 번호 id bigint;

#의 결과 테이블에 제약 조건을 추가합니다. 컴퓨터에서 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 `subject` 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명의 학생 번호 및 점수 조회)

#컴퓨터에서 5
SELECT `studentNo`, `studentResult` FROM `result ` WHERE `exameDate`<'2016-2-17' ORDER BY StudentResult DESC LIMIT 5;

SELECT StudentName,(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 학생 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. 시험 결과

#컴퓨터에서 6

SELECT MAX(`studentResult`),MIN(`studentResult`) FROM 결과

WHERE `exameDate`=(SELECT `exameDate` FROM `result` ORDER BY ExameDate DESC LIMIT 1) AND

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

#결과에서 max(exameDate)를 선택



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 학생 WHERE `studentNo` IN(SELECT `studentNo` FROM 학생 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 BY ExameDate DESC LIMIT 1)));

V. 요약 부분

다중 테이블 공동 쿼리를 구현하는 두 가지 방법:

①테이블 연결

②하위 쿼리

위 내용은 MySQL 고급 쿼리 이해 및 사용 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.