SQL(Structured Query Language)은 관계형 데이터베이스에 액세스하기 위한 표준 언어의 표준입니다. Oracle, DB2, SQL Server, PostgreSQL, MySQL과 같은 많은 데이터베이스 제품이 이를 지원합니다. 지난 몇 년 동안 NoSQL은 처음에는 SQL이 필요하지 않다고 주장했지만 결국 SQL 기술과 호환되기 위해 "Not Only SQL"로 개정되어야 했습니다.
현재 일반 버전은 SQL 92 표준입니다. MySql을 포함한 다른 데이터베이스도 MySQL의 Limit 키워드와 같이 SQL 92 또는 SQL 99 표준을 기반으로 자체 SQL 문 중 일부를 확장했습니다.
DDL
데이터 정의 언어, 데이터베이스 개체, 데이터베이스, 테이블, 열 등을 정의하는 데 사용됩니다. 생성, 변경, 삭제 등
DML
데이터 조작 언어는 데이터베이스 테이블의 레코드를 업데이트하는 데 사용됩니다. 삽입, 업데이트, 삭제 등
DCL
데이터 제어 언어, 데이터베이스 액세스 권한, 보안 수준 등을 정의하는 데 사용됩니다. 그랜트 등
DQL:
데이터 쿼리 언어, 쿼리에 사용됩니다. select, from, where 등
# 语法顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> ORDER BY <order_by_condition> LIMIT <limit_number> # 解析顺序 FROM <left_table> ON <join_condition> <join_type> JOIN <right_table> -- 这一步和上一步,会循环执行 WHERE <where_condition> -- 这一步会循环执行,多个条件从左往右 GROUP BY <group_by_list> HAVING <having_condition> SELECT -- 分组之后才执行SELECT DISTINCT <select_list> ORDER BY <order_by_condition> LIMIT <limit_number> -- 这一步是MySQL独有的语法,前面都是SQL92标准
FROM의 왼쪽 테이블과 오른쪽 테이블의 Cartesian product를 계산하고 가상 테이블 VT1
select * from seller join product;
가상 테이블 VT1을 생성한 후 ON 키워드를 통해 필터링하여
select * from seller s join product p on s.id = p.id;
LEFT (OUTER) JOIN으로 필터링합니다. : 반환됩니다 왼쪽 테이블(retained 테이블)의 모든 레코드와 ON 조건을 만족하는 오른쪽 테이블의 레코드
RIGHT(OUTER) JOIN: 유사
INNTER JOINT: 만족하는 레코드만 왼쪽 테이블과 오른쪽 테이블의 ON 조건이 반환됩니다
OUTER JOIN(LEFT JOIN, RIGHT JOIN)이 지정되면 보유 테이블에서 ON 조건과 일치하지 않는 행이 가상 테이블 VT2에 external로 추가됩니다. 가상 테이블 VT3을 형성하는 행.
select * from seller s right join product p on s.id = p.id;
FROM 절에 테이블이 2개 이상 포함된 경우 이전 조인 연결과 다음 테이블에 의해 생성된 결과 VT3에 대해 위 단계가 반복됩니다.
where 조건에 따라 필터링
결과를 그룹화합니다
-- mysql 8 默认开启了 only_full_group_by select version(),@@sql_mode; -- 需要把这个选项关掉, set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'; -- 后执行group by 正常 select * from user group by name;
그룹화된 결과를 조건에 따라 필터링합니다
지정된 열을 선택합니다
특정 열의 중복을 제거합니다
DISTINCT는 SELECT여야 합니다. 유효하지 않습니다.
-- 下面无效 select id, distinct name from user; -- 下面有效 select distinct name from user;
뒤에 첫 번째 열을 추가한 다음 여러 열을 추가하여 여러 열을 연결하여 중복 항목을 제거합니다.
특정 열을 기반으로 중복 항목을 제거하고 표시하려는 경우 전체 데이터 행에 대해 GROUP BY
sort
paging
을 사용할 수 있습니다. 참고: 위의 SQL 구문 분석에서 볼 수 있듯이 select의 열 별칭은 순서대로만 사용할 수 있습니다. 주문
위 내용은 MySQL SQL 구문 및 SQL 구문 분석 시퀀스 소스 코드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!