SQL 치트 시트

SQL 치트 시트 소개 이미지


이 가이드에서는 일반적으로 사용되는 SQL 요소 중 일부와 덜 일반적인 요소를 설명하는 유용한 치트 시트를 제공합니다. 다행히 초보자와 숙련 된 개발자 모두 SQL 언어에 대한 이해 능력을 향상시킬 수 있기를 바랍니다..

이를 개발, 학습 보조 자료 중 빠른 참조 자료로 사용하거나 원할 경우 인쇄하여 묶어도됩니다 (어떤 것이 든 상관 없음)..

그러나 치트 시트 자체에 도달하기 전에 SQL에 익숙하지 않은 개발자를 위해 시작하겠습니다.

SQL이란 무엇인가

SQL은 구조적 쿼리 언어를 나타냅니다. 오늘날 웹에서 관계형 데이터베이스 내에서 데이터를 저장, 조작 및 검색 할 때 선택하는 언어입니다. 그렇지 않으면 대부분 모두 귀하가 방문한 웹 사이트 중 일부는 하나.

기본적인 관계형 데이터베이스는 다음과 같습니다. 이 예는 특히 전자 상거래 정보, 특히 판매중인 제품, 제품을 구매 한 사용자 및이 두 엔티티를 연결하는 주문 레코드를 저장합니다..

기본 관계형 데이터베이스

SQL을 사용하면 쿼리를 작성하여 데이터베이스와 상호 작용할 수 있습니다. 쿼리를 실행하면 해당 조건에 맞는 결과가 반환됩니다..

다음은 쿼리 예입니다.-

사용자 선택 *

이 SELECT 문을 사용하여 쿼리는 사용자 테이블의 모든 열에서 모든 데이터를 선택합니다. 그런 다음 아래와 같은 데이터를 반환하며 일반적으로 결과 집합이라고합니다.-

사용자 테이블 예

별표 와일드 카드 문자 (*)를 특정 열 이름으로 바꾸려면이 열의 데이터 만 쿼리에서 반환됩니다..

사용자 이름, 성 _ 이름을 선택하십시오.

축소 된 열이있는 예제 사용자 테이블

WHERE 절을 추가하여 표준 SELECT 문에 약간의 복잡성을 추가 할 수 있습니다.이를 통해 반환되는 항목을 필터링 할 수 있습니다.

재고가있는 제품에서 선택 * <= 10 ORDER BY stock_count ASC;

이 쿼리는 결과 테이블에서 stock_count 값이 10보다 작은 제품 테이블의 모든 데이터를 반환합니다..

ORDER BY 키워드를 사용하면 stock_count 열을 사용하여 결과를 정렬합니다..

제품 테이블 예

INSERT INTO 문을 사용하여 테이블에 새 데이터를 추가 할 수 있습니다. 다음은 users 테이블에 새 사용자를 추가하는 기본 예입니다.-

INTO 사용자 삽입 (이름, 성, 주소, 이메일)
값 ( '테스터', 'Jester', '123 Fake Street, Sheffield, 영국', '[email protected]');

그런 다음 쿼리를 다시 실행하여 사용자 테이블의 모든 데이터를 반환하면 결과 집합은 다음과 같습니다.

새 행이있는 예제 테이블

물론,이 예제는 SQL 언어가 할 수있는 것 중 아주 작은 선택만을 보여줍니다..

SQL 대 MySQL

이전에 MySQL에 대해 들어 보셨을 것입니다. 분명한 차이점이 있으므로 이것을 SQL 자체와 혼동하지 않는 것이 중요합니다..

SQL 대 MySQLSQL 입니다 언어. 관계형 데이터베이스를 관리하는 쿼리를 작성할 수있는 구문에 대해 설명합니다. 더 이상.

MySQL 한편 데이터베이스입니다 체계 서버에서 실행됩니다. 그것 구현하다 MySQL 데이터베이스를 관리하기 위해 구문을 사용하여 쿼리를 작성할 수있는 SQL 언어.

MySQL 외에도 SQL을 구현하는 다른 시스템이 있습니다. 가장 인기있는 것들 중 일부는 다음과 같습니다.

  • PostgreSQL
  • SQLite
  • 오라클 데이터베이스
  • Microsoft SQL Server

MySQL 설치

윈도우

Windows에서 MySQL을 설치하는 권장 방법은 다음에서 다운로드 할 수있는 설치 관리자를 사용하는 것입니다. MySQL 웹 사이트.

MySQL Windows 설치

맥 OS

macOS에서 MySQL을 설치하기 위해 권장되는 방법은 기본 패키지를 사용하는 것입니다. 이는 실제보다 훨씬 더 복잡하게 들립니다. 본질적으로, 그것은 단지 다운로드 인스톨러.

MySQL Mac 설치

또는 다음과 같은 패키지 관리자를 사용하려는 경우 사제, 다음과 같이 MySQL을 설치할 수 있습니다.

brew install mysql

오늘날 웹에서 여전히 널리 사용되는 이전 MySQL 버전 5.7을 설치해야하는 경우 다음을 수행 할 수 있습니다.

추출 설치 [이메일 보호]

MySQL 사용

이제 MySQL을 시스템에 설치 한 상태에서 SQL 쿼리 작성을 가능한 빨리 시작하고 진행하려면 SQL 관리 응용 프로그램을 사용하여 데이터베이스 관리를 훨씬 간단하고 쉽게 처리하는 것이 좋습니다..

대부분 동일한 작업을 수행 할 수있는 많은 앱이 있으므로 사용하는 개인 취향에 따라 다릅니다.

  • MySQL 워크 벤치 MySQL의 소유자 인 Oracle에 의해 개발되었습니다..
  • HeidiSQL (권장 Windows) Windows 용 무료 오픈 소스 앱입니다. macOS 및 Linux 사용자의 경우, 포도주 먼저 전제 조건으로 필요합니다.
  • phpMyAdmin 웹 브라우저에서 작동하는 매우 인기있는 대안입니다..
  • 속편 프로 (권장 macOS) 명확하고 사용하기 쉬운 인터페이스 덕분에 macOS의 유일한 대안이며 가장 좋아하는 제품입니다..

자체 데이터베이스를 작성하는 데 시간을 소비하지 않고 자체 SQL 쿼리 작성을 시작할 준비가되면 대신 더미 데이터 가져 오기를 고려하십시오..

MySQL 웹 사이트는 여러 가지를 제공합니다 더미 데이터베이스 무료로 다운로드 한 다음 SQL 앱으로 가져올 수 있습니다..

더미 데이터베이스 MySQL

이것들 중 우리가 가장 좋아하는 것은 세계 데이터베이스는 SQL 쿼리 작성을 연습하는 데 유용한 데이터를 제공합니다. 다음은 Sequel Pro 내 국가 테이블의 스크린 샷입니다..

속편 프로 예

이 예의 쿼리는 엘리자베스 2 세 여왕을 국가 ����으로 사용하는 모든 국가를 반환합니다..

속편 프로 예

이 도시는 수도와 인구와 함께 5 천만 이상의 인구를 가진 모든 유럽 국가를 반환합니다..

속편 프로 예

그리고이 마지막 것은 전체 프랑스어 사용자 수가 10 % 이상인 국가에서 프랑스어 사용자의 평균 백분율을 반환합니다..

속편 프로 예

컨닝 지

키워드

SQL 문에 사용 된 키워드 모음, 설명 및 적절한 예가 있습니다. 고급 키워드 중 일부는 나중에 치트 시트에 전용 섹션이 있습니다..

MySQL이 예제 옆에 언급 된 경우, 이는이 예제가 다른 데이터베이스 시스템과 달리 MySQL 데이터베이스에만 적용됨을 의미합니다..

SQL 키워드
예어기술
더하다기존 테이블에 새 열을 추가합니다.

예: 'users'라는 테이블에 'email_address'라는 새 열을 추가합니다..

ALTER TABLE 사용자
email_address 추가 varchar (255);
제약 추가기존 테이블에 새 제한 조건을 작성하여 테이블의 모든 데이터에 대한 규칙을 지정하는 데 사용됩니다..

예: ID 및 SURNAME 열에 'user'라는 새 PRIMARY KEY 제약 조건을 추가합니다..

ALTER TABLE 사용자
제약 사용자 기본 키 추가 (ID, SURNAME);
테이블 변경테이블에서 열을 추가, 삭제 또는 편집합니다. 또한 위의 표에 따라 제약 조건을 추가하고 삭제하는 데 사용할 수 있습니다.

예: '거래'라는 표에 '승인 됨'이라는 새 부울 열을 추가합니다..

ALTER TABLE 거래
승인 된 부울 추가;

예 2 : '거래'표에서 '승인 됨'열을 삭제합니다.

ALTER TABLE 거래
DROP COLUMN 승인;
ALTER COLUMN테이블 열의 데이터 유형을 변경합니다.

예: '사용자'표에서 'incept_date'열을 'datetime'유형으로 만듭니다..

ALTER TABLE 사용자
ALTER COLUMN incept_date 날짜 / 시간;
모두모든 하위 쿼리 값이 전달 된 조건을 충족하면 true를 반환합니다..

예: HR 부서에서 작업 수가 가장 많은 사용자보다 작업 수가 많은 사용자를 반환합니다 (ID 2).

first_name, 성, tasks_no 선택
사용자로부터
WHERE tasks_no> ALL (사용자로부터 작업 선택 (WHERE department_id = 2));
WHERE 절 내에서 별도의 조건을 결합하는 데 사용.

예: 영국 런던에 위치한 이벤트를 반환

SELECT * FROM 이벤트
어디에서 host_country = '영국'그리고 host_city = '런던';
어떤하위 쿼리 값 중 하나라도 주어진 조건을 만족하면 true를 반환합니다..

예: orders 테이블에 저장된 주문을받은 제품 테이블에서 5 개 이상의 수량으로 제품을 반환합니다..

이름 선택
제품에서
어디에서 productId = ANY (수량> 5 인 주문에서 productId 선택);
같이쿼리 기간 동안 만 존재하는 별칭 값으로 테이블 또는 열의 이름을 바꿉니다..

예: 별칭 north_east_user_subscriptions 열

north_east_user_subscriptions AS ne_subs를 선택하십시오.
사용자로부터
어디서 ne_subs> 5;
ASCORDER BY와 함께 사용하여 오름차순으로 데이터를 리턴.

예: 사과, 바나나, 복숭아, Raddish

중에서주어진 범위 내에서 값을 선택.

예 1 : 수량이 100-150 사이 인 주식을 선택하십시오..

재고에서 선택 *
100과 150 사이의 양;

예 2 : NOT NOT 수량이 100에서 150 사이 인 주식을 선택하십시오. 또는 NOT 키워드를 사용하면 로직이 반대로되어 지정된 범위 밖의 값을 선택합니다..

재고에서 선택 *
100과 150이 아닌 수량;
케이스조건에 따라 쿼리 출력 변경.

예: 구독 수에 따라 판단하는 activity_levels라는 새 열과 함께 사용자 및 구독을 반환합니다..

first_name, 성, 구독 선택
CASE WHEN 구독> 10 개 '매우 활성화 됨'
3과 10 사이의 수량이 '활성'인 경우
ELSE '비활성'
END AS activity_levels
사용자로부터;
검사열에 추가 할 수있는 값을 제한하는 구속 조건을 추가합니다..

예 1 (MySQL) : users 테이블에 추가 된 모든 사용자가 18 세 이상인지 확인.

CREATE TABLE 사용자 (
first_name varchar (255),
나이 int,
확인 (나이> = 18)
);

예 2 (MySQL) : 테이블이 이미 생성 된 후 확인을 추가합니다.

ALTER TABLE 사용자
점검 추가 (나이> = 18);
데이터베이스 생성새로운 데이터베이스를 생성.

예: ‘websitesetup’이라는 새 데이터베이스를 만듭니다..

데이터베이스 생성 웹 사이트 설정;
테이블 만들기새 테이블을 만듭니다. .

예: ‘websitesetup’데이터베이스에‘users’라는 새 테이블을 만듭니다..

CREATE TABLE 사용자 (
아이디 int,
first_name varchar (255),
성 varchar (255),
주소 varchar (255),
contact_number int
);
기본열의 기본값을 설정합니다.

예 1 (MySQL) : 기본값이 '자리 표시 자 이름'인 이름 열과 오늘 날짜의 기본값을 가진 available_from 열이있는 Products라는 새 테이블을 만듭니다..

CREATE TABLE 제품 (
아이디 int,
varchar (255) DEFAULT '자리 표시 자 이름',
available_from date DEFAULT GETDATE ()
);

예 2 (MySQL) : 위와 동일하지만 기존 테이블 편집.

ALTER TABLE 제품
ALTER name SET DEFAULT '자리 표시 자 이름',
SET DEFAULT GETDATE ()에서 ALTER available_;
지우다테이블에서 데이터 삭제.

예: user_id가 674 인 사용자를 제거합니다..

사용자로부터 삭제 user_id = 674;
DESC내림차순으로 데이터를 리턴하기 위해 ORDER BY와 함께 사용.

예: 황갈색, 복숭아, 바나나, 사과

드롭 컬럼테이블에서 열을 삭제합니다.

예: users 테이블에서 first_name 열을 제거합니다.

ALTER TABLE 사용자
DROP COLUMN first_name
DROP 데이터베이스전체 데이터베이스를 삭제합니다.

예: 'websitesetup'이라는 데이터베이스를 삭제합니다..

DROP DATABASE 웹 사이트 설정;
드랍 기본열의 기본값을 제거합니다.

예 (MySQL) : ‘제품’표의‘이름’열에서 기본값을 제거합니다..

ALTER TABLE 제품
ALTER COLUMN 이름 DROP DEFAULT;
드롭 테이블데이터베이스에서 테이블을 삭제합니다.

예: users 테이블을 제거합니다.

DROP TABLE 사용자;
존재하위 쿼리 내에 레코드가 있는지 확인하여 하나 이상의 레코드가 반환되면 true를 반환합니다..

예: 거래 재무 비율이 10 미만인 대리점을 나열합니다..

대리점 선택 _name
대리점에서
존재하는 곳 (딜러쉽에서 거래 이름 선택 (SELECT deal_name) : dealership_id = deals.dealership_id AND finance_percentage < 10);
에서데이터를 선택하거나 삭제할 테이블을 지정합니다..

예: users 테이블에서 데이터를 선택합니다.

area_manager 선택
area_managers에서
기존 위치 (area_manager_id = deal.area_manager_id 및 가격이있는 제품에서 제품 이름 선택) < 20);
여러 OR 조건에 대한 속기로서 WHERE 절과 함께 사용.

따라서 대신 :-

사용자 선택 *
국가 = '미국'또는 국가 = '영국'또는 국가 = '러시아'또는 국가 = '오스트레일리아';

당신이 사용할 수있는:-

사용자 선택 *
국가 IN ( '미국', '영국', '러시아', '오스트레일리아');
에 집어 넣다테이블에 새 행 추가.

예: 새로운 차량을 추가합니다.

자동차에 삽입 (제조, 모델, 마일리지, 연도)
가치 ( 'Audi', 'A3', 30000, 2016);
NULL비어있는 (NULL) 값 테스트.

예: 연락 번호를 제공하지 않은 사용자를 반환.

사용자 선택 *
contact_number가 NULL 인 곳;
NULL이 아님NULL의 반대입니다. 비어 있거나 NULL이 아닌 값을 테스트.
처럼피연산자 값이 패턴과 일치하면 true를 리턴합니다..

예: 사용자의 first_name이‘son’으로 끝나면 true를 반환합니다..

사용자 선택 *
어디서나 first_name LIKE '% son';
아니레코드가 조건을 충족하지 않으면 true를 리턴합니다..

예: 사용자의 first_name이‘son’으로 끝나지 않으면 true를 반환합니다..

사용자 선택 *
first_name이 '% son'과 (와) 같지 않은 곳;
또는WHERE와 함께 사용하여 두 조건 중 하나에 해당하는 경우 데이터를 포함합니다.

예: 셰필드 나 맨체스터에 사는 사용자를 반환.

사용자 선택 *
도시 = '셰필드'또는 '맨체스터';
주문ASC 또는 DESC 키워드를 사용하여 결과 데이터를 오름차순 (기본값) 또는 내림차순으로 정렬하는 데 사용됩니다..

예: 알파벳 순서로 국가를 반환.

국가에서 선택 *
이름으로 주문;
ROWNUM행 번호가 전달 된 조건을 만족하는 결과를 리턴합니다..

예: 국가 테이블에서 상위 10 개 국가를 반환합니다..

국가에서 선택 *
ROWNUM 위치 <= 10;
고르다데이터베이스에서 데이터를 선택하는 데 사용되며 결과 세트로 리턴됩니다..

예 1 : 모든 사용자로부터 모든 열을 선택합니다.

사용자 선택 *

예 2 : 모든 사용자에서 first_name 및 성을 열을 선택합니다 .xx

first_name을 선택하고 성 사용자로부터 성을 선택하십시오.
고유 한 선택중복 값을 제외하고 SELECT와 동일.

예: users 테이블의 데이터를 사용하여 백업 테이블을 만듭니다..

사용자 선택 * 백업 2020
사용자로부터;
안으로 선택한 테이블에서 데이터를 복사하여 다른 테이블에 삽입.

예: users 테이블에서 모든 국가를 반환하여 중복 값을 제거합니다.

사용자로부터 고유 한 국가를 선택하십시오.
상단 선택테이블에서 리턴 할 설정된 수의 레코드를 리턴 할 수 있습니다..

예: cars 테이블에서 상위 3 대의 자동차를 반환합니다..

차에서 선택 3 *;
세트테이블의 기존 데이터를 업데이트하기 위해 UPDATE와 함께 사용.

예: 주문 테이블에서 ID가 642 인 주문의 값 및 수량 값을 업데이트합니다..

주문 업데이트
설정 값 = 19.49, 수량 = 2
id = 642;
약간모든 것과 동일.
상단테이블에서 설정된 수의 레코드를 반환하기 위해 SELECT와 함께 사용.

예: users 테이블에서 상위 5 명의 사용자를 반환합니다..

사용자 선택 TOP 5 * FROM users;
절단 테이블DROP과 유사하지만 테이블과 해당 데이터를 삭제하는 대신 데이터 만 삭제합니다..

예: 세션 테이블을 비우지 만 테이블 자체는 그대로 둡니다..

TRUNCATE TABLE 세션;
노동 조합두 개 이상의 SELECT 문의 결과를 결합하고 고유 한 값만 반환.

예: 이벤트 및 구독자 테이블에서 도시를 반환합니다.

도시에서 이벤트 선택
노동 조합
가입자로부터 도시를 선택하십시오.
UNION ALLUNION과 동일하지만 중복 값이 ​​포함됨.
독특한이 제한 조건은 열의 모든 값이 고유함을 보장합니다.

예 1 (MySQL) : 새 사용자 테이블을 만들 때 id 열에 고유 제약 조건을 추가합니다.

CREATE TABLE 사용자 (
id int NOT NULL,
이름 varchar (255) NOT NULL,
고유 (ID)
);

예 2 (MySQL) : 기존 열을 변경하여 UNIQUE 제약 조건을 추가합니다.

ALTER TABLE 사용자
유니크 추가 (id);
최신 정보테이블의 기존 데이터를 업데이트합니다.

예: cars 테이블에서 id가 45 인 차량의 마일리지 및 serviceDue 값을 업데이트합니다..

자동차 업데이트
마일리지 설정 = 23500, 서비스 기간 = 0
id = 45;
가치INSERT INTO 키워드와 함께 사용하여 테이블에 새 값을 추가.

예: cars 테이블에 새 차를 추가합니다.

자동차에 삽입 (이름, 모델, 연도)
가치 ( 'Ford', 'Fiesta', 2010);
어디주어진 조건을 만족하는 데이터 만 포함하도록 결과를 필터링합니다..

예: 수량이 1보다 많은 주문을 반환합니다..

SELECT * FROM 주문
수량> 1;

코멘트

주석을 사용하면 SQL 문의 섹션을 설명하거나 코드를 주석 처리하고 실행을 방지 할 수 있습니다..

SQL에는 두 가지 유형의 주석 (한 줄과 여러 줄)이 있습니다..

한 줄 주석

한 줄 주석은 –로 시작합니다. 이 두 문자 뒤의 줄 끝까지의 텍스트는 무시됩니다..

-- 내 선택 쿼리
사용자 선택 *

여러 줄 주석

여러 줄 주석은 / *로 시작하고 * /로 끝납니다. 닫는 문자를 찾을 때까지 여러 줄로 확장됩니다..

/ *
이것은 내 선택 쿼리입니다.
users 테이블에서 모든 데이터 행을 가져옵니다.
* /
사용자 선택 *

/ *
이것은 아직 실행하고 싶지 않은 다른 선택 쿼리입니다.

SELECT * FROM 작업;
* /

MySQL 데이터 타입

새 테이블을 만들거나 기존 테이블을 편집 할 때 각 열이 허용하는 데이터 유형을 지정해야합니다.

아래 예에서 id 열에 전달 된 데이터는 int 여야하며 first_name 열은 최대 255 자의 VARCHAR 데이터 유형을 갖습니다..

CREATE TABLE 사용자 (
아이디 int,
first_name varchar (255)
);

문자열 데이터 타입

문자열 데이터 타입
데이터 형식기술
CHAR (크기)문자, 숫자 및 특수 문자를 포함 할 수있는 고정 길이 문자열 size 매개 변수는 최대 문자열 길이를 0 – 255 범위에서 기본값 1로 설정합니다..
VARCHAR (사이즈)CHAR ()와 유사하지만 최대 문자열 길이 범위는 0-65535 인 변수 길이 문자열.
이진 (크기)CHAR ()와 유사하지만 2 진 바이트 문자열을 저장합니다..
바바리 (크기)VARCHAR ()와 유사하지만 2 진 바이트 문자열.
TINYBLOB최대 길이가 255 바이트 인 이진 대형 객체 (BLOB)를 보유합니다..
TINYTEXT최대 길이가 255자인 문자열을 보유합니다. 훨씬 빨리 가져 오기 때문에 VARCHAR ()을 대신 사용하십시오..
텍스트 (크기)최대 길이가 65535 바이트 인 문자열을 보유합니다. 다시 VARCHAR ()을 사용하는 것이 좋습니다.
BLOB (사이즈)최대 길이가 65535 바이트 인 이진 대형 객체 (BLOB)를 보유합니다..
중간 텍스트최대 16,777,215 자의 문자열을 보유.
중간 규모최대 16,777,215 바이트의 이진 큰 개체 (BLOB)를 보유합니다..
긴 텍스트최대 길이가 4,294,967,295자인 문자열을 보유합니다..
롱 블로 브최대 길이가 4,294,967,295 바이트 인 이진 대형 객체 (BLOB)를 보유합니다..
ENUM (a, b, c 등…)정의한 값 목록에서 최대 65535 개의 값까지 선택되는 값이 하나만있는 문자열 객체입니다. 이 목록에없는 값이 추가되면 대신 빈 값으로 바뀝니다. 이와 관련하여 ENUM이 HTML 라디오 박스와 유사하다고 생각하십시오..

테이블 티셔츠 만들기 (컬러 ENUM (‘빨간색’,‘녹색’,‘파란색’,‘노란색’,‘보라색’));
SET (a, b, c 등…)0 개 이상의 값을 가질 수있는 문자열 객체로, 정의한 값 목록에서 최대 64 개의 값까지 선택됩니다. 이와 관련하여 SET이 HTML 확인란과 유사하다고 생각하십시오..

숫자 형 데이터 타입

문자열 데이터 타입
데이터 형식기술
비트 (크기)기본값이 1 인 비트-값 유형 값에서 허용되는 비트 수는 size 매개 변수를 통해 설정되며 1에서 64 사이의 값을 보유 할 수 있습니다..
TINYINT (사이즈)부호있는 범위가 -128-127이고 부호없는 범위가 0-255 인 매우 작은 정수입니다. 여기서 size 매개 변수는 허용되는 최대 디스플레이 너비 (255)를 지정합니다..
본질적으로 열 크기를 1로 TINYINT로 설정하는 빠른 방법은 0이며, 1은 참으로 간주됩니다..
부에 네BOOL과 동일.
SMALLINT (사이즈)부호있는 범위가 -32768-32767이고 부호없는 범위가 0-65535 인 작은 정수입니다. 여기서 size 매개 변수는 허용되는 최대 디스플레이 너비 (255)를 지정합니다..
중간 크기 (크기)부호있는 범위가 -8388608-8388607이고 부호없는 범위가 0-16777215 인 중간 정수입니다. 여기서 size 매개 변수는 허용되는 최대 표시 너비 (255)를 지정합니다..
INT (사이즈)부호있는 범위가 -2147483648 ~ 2147483647 인 중간 정수이며 부호없는 범위는 0 ~ 4294967295입니다. 여기서 size 매개 변수는 허용되는 최대 디스플레이 너비 (255)를 지정합니다..
정수 (크기)INT와 동일.
BIGINT (사이즈)부호있는 범위가 -9223372036854775808-9223372036854775807이고 부호없는 범위가 0-18446744073709551615 인 중간 정수입니다. 여기서 size 매개 변수는 허용되는 최대 디스플레이 너비 (255)를 지정합니다..
플로트 (p)부동 소수점 숫자 값입니다. 정밀도 (p) 매개 변수가 0-24 인 경우 데이터 유형은 FLOAT ()로 설정되고 25-53 인 경우 데이터 유형은 DOUBLE ()로 설정됩니다. 이 동작은 값을보다 효율적으로 저장하는 것입니다.
더블 (크기, d)총 자릿수가 size 매개 변수에 의해 설정되고 소수점 뒤의 자릿수가 d 매개 변수에 의해 설정되는 부동 소수점 숫자 값.
십진법 (크기, d)총 자릿수가 크기 매개 변수에 의해 설정되고 소수점 이후의 총 자릿수가 d 매개 변수에 의해 설정되는 정확한 고정 소수점 수.

크기의 경우 최대 수는 65이고 기본값은 10이며 d의 경우 최대 수는 30이고 기본값은 10입니다.

12 월 (크기, d)DECIMAL과 동일.

날짜 / 시간 데이터 유형

날짜 / 시간 데이터 유형
데이터 형식기술
데이트지원되는 범위가 '1000-01-01'에서 '9999-12-31'인 YYYY-MM–DD 형식의 간단한 날짜.
DATETIME (fsp)YYYY-MM-DD hh : mm : ss 형식의 날짜 시간 ( '1000-01-01 00:00:00'에서 '9999-12-31 23:59:59'까지 지원되는 범위).

DEFAULT 및 ON UPDATE를 열 정의에 추가하면 현재 날짜 / 시간으로 자동 설정됩니다..

타임 스탬프 (fsp)유닉스 타임 스탬프. 유닉스 시대 ( '1970-01-01 00:00:00'UTC) 이후의 시간 (초)에 상대적인 값입니다. 지원되는 범위는‘1970-01-01 00:00:01’UTC에서‘2038-01-09 03:14:07’UTC.

DEFAULT CURRENT_TIMESTAMP 및 ON UPDATE CURRENT TIMESTAMP를 열 정의에 추가하면 현재 날짜 / 시간으로 자동 설정됩니다..

시간 (fsp)‘: 838 : 59 : 59’에서‘838 : 59 : 59’까지 지원되는 hh : mm : ss 형식의 시간.
지원되는 범위 '1901'에서 '2155'까지 1 년.

연산자

산술 연산자

산술 연산자
운영자기술
+더하다
덜다
*곱하다
/나누기
%모듈로

비트 연산자

비트 연산자
운영자기술
&비트 AND
|비트 OR
^비트 배타적 OR

비교 연산자

비교 연산자
운영자기술
=동일
>보다 큰
<이하
> =크거나 같음
<=이하
<>같지 않음

복합 연산자

복합 연산자
운영자기술
+=같음 추가
-=빼기
* =곱하기
/ =나누기
% =모듈로는
& =비트 AND는
^-=비트 배타적
| * =비트 단위 OR

기능

문자열 함수

문자열 함수
이름기술
ASCII특정 문자에 해당하는 ASCII 값을 반환.
CHAR_LENGTH문자열의 문자 길이를 반환.
CHARACTER_LENGTHCHAR_LENGTH와 동일.
CONCAT최소 2의 식을 더합니다.
CONCAT_WS표현식을 함께 추가하지만 각 값 사이에 구분 기호가 있습니다..
값 목록 내에서 값의 위치를 ​​기준으로 인덱스 값을 반환합니다..
세트에서 찾기문자열 목록에서 문자열의 위치를 ​​반환.
체재숫자를 전달하면 쉼표를 포함하도록 형식이 지정된 숫자를 반환합니다 (예 : 3,400,000).
끼워 넣다특정 수의 문자에 대해 특정 시점에서 한 문자열을 다른 문자열에 삽입 할 수 있습니다.
INSTR한 문자열이 다른 문자열 내에 처음 나타날 때의 위치를 ​​반환합니다.
LCASE문자열을 소문자로 변환.
왼쪽왼쪽에서 시작하여 문자열에서 주어진 수의 문자를 추출하여 다른 문자로 반환.
길이문자열의 길이를 바이트 단위로 반환합니다.
위치하고 있다한 문자열이 다른 문자열 내에서 처음 나타나는 것을 반환,
보다 낮은LCASE와 동일.
LPAD하나의 문자열을 다른 문자열로 특정 길이까지 채 웁니다..
LTRIM주어진 문자열에서 선행 공백을 제거하십시오.
MID어떤 위치에서든 한 문자열을 다른 문자열에서 추출.
위치하나의 하위 문자열이 다른 하위 문자열 내에 처음 나타나는 위치를 반환합니다..
반복문자열을 반복 할 수 있습니다
바꾸다문자열 내의 하위 문자열 인스턴스를 새 하위 문자열로 바꿀 수 있습니다.
역전문자열을 뒤집습니다.
권리오른쪽에서 시작하여 문자열에서 주어진 수의 문자를 추출하여 다른 문자로 반환.
RPAD한 줄을 다른 줄과 오른쪽으로 특정 길이로 채 웁니다..
트림주어진 문자열에서 후행 공백을 제거합니다.
우주전달한 양과 같은 공백으로 가득 찬 문자열을 반환합니다..
STRCMP차이점에 대해 2 개의 문자열 비교
SUBSTR어떤 위치에서든 하나의 하위 문자열을 추출합니다..
SUBSTRINGSUBSTR과 동일
SUBSTRING_INDEX전달 된 하위 문자열을 찾기 전에 문자열에서 하위 문자열을 반환합니다. 횟수는 전달 된 숫자와 같습니다..
손질주어진 문자열에서 후행 및 선행 공백을 제거합니다. LTRIM과 RTRIM을 함께 실행하는 것과 동일.
유카 제문자열을 대문자로 변환.
높은UCASE와 동일.

숫자 함수

숫자 함수
이름기술
ABS주어진 숫자의 절대 값을 반환.
ACOS주어진 숫자의 아크 코사인을 반환.
아신주어진 숫자의 아크 사인을 반환합니다.
아탄하나 또는 두 개의 주어진 숫자의 아크 탄젠트를 반환합니다.
ATAN2주어진 숫자 2의 아크 탄젠트를 반환.
AVG주어진 표현식의 평균값을 반환.
올림주어진 소수점 숫자에서 가장 가까운 정수 (정수)를 위쪽으로 반환합니다..
천장CEIL과 동일.
코사인주어진 숫자의 코사인을 반환.
간이 침대주어진 숫자의 코탄젠트를 구합니다.
카운트SELECT 쿼리에 의해 반환되는 레코드의 양을 반환합니다.
학위라디안 값을도 단위로 변환.
DIV정수를 나눌 수 있습니다.
경험치주어진 숫자의 거듭 제곱으로 e를 반환합니다.
바닥주어진 소수점 숫자에서 가장 가까운 정수 (정수)를 아래쪽으로 반환합니다..
최고인수 목록에서 가장 높은 값을 반환.
가장 작은인수 목록에서 가장 작은 값을 반환합니다.
LN주어진 숫자의 자연 로그를 반환
로그주어진 숫자의 자연 로그, 또는 주어진 숫자에 대한 주어진 밑수의 로그를 반환합니다
LOG10LOG와 동일하지만 10 진법.
LOG2LOG와 동일하지만 기본 2.
MAX값 집합에서 가장 높은 값을 반환.
MIN값 집합에서 가장 낮은 값을 반환.
모드주어진 숫자의 나머지를 다른 주어진 숫자로 나눈 값을 반환합니다..
PIPI를 반환.
포로주어진 숫자의 값을 주어진 다른 숫자의 거듭 제곱으로 올림.
POW와 동일.
라디오도 값을 라디안으로 변환.
랜드난수를 반환.
일주주어진 숫자를 주어진 소수점 이하 자릿수로 반올림.
기호주어진 숫자의 부호를 반환.
주어진 숫자의 사인을 반환합니다.
SQRT주어진 숫자의 제곱근을 반환.
합집합주어진 값 세트의 값을 결합하여 반환합니다.
탠 껍질주어진 숫자의 탄젠트를 반환.
절단주어진 소수점 이하 자릿수로 잘린 숫자를 반환합니다..

날짜 함수

날짜 함수
이름기술
추가 일날짜 간격 (예 : 10 DAY)을 날짜 (예 : 20/01/20)에 추가하고 결과를 반환합니다 (예 : 20/01/30).
ADDTIME시간 또는 날짜 시간 (05:00)에 시간 간격 (예 : 02:00)을 추가하고 결과 (07:00)를 반환합니다..
현재 날짜현재 날짜 가져 오기.
CURRENT_DATECURDATE와 동일.
현재 시간현재 시간을 얻으십시오.
CURRENT_TIMESTAMP현재 날짜 및 시간 가져 오기.
통화 시간CURRENT_TIME과 동일.
데이트날짜 / 시간 표현식에서 날짜를 추출합니다..
DATEDIFF주어진 두 날짜 사이의 일 수를 반환합니다.
DATE_ADDADDDATE와 동일.
날짜 형식주어진 패턴으로 날짜를 포맷.
DATE_SUB날짜 간격 (예 : 10 DAY)을 날짜 (예 : 20/01/20)로 빼고 결과를 반환합니다 (예 : 20/01/10).
주어진 날짜의 요일을 반환.
DAYNAME주어진 날짜의 요일 이름을 반환합니다.
DAYOFWEEK주어진 날짜의 요일에 대한 인덱스를 반환.
DAYOFYEAR주어진 날짜의 일을 반환합니다.
추출물주어진 부분의 날짜에서 추출 (예 : 20/01/20 = 01의 경우 월).
일에서주어진 숫자 날짜 값에서 날짜를 반환.
주어진 날짜부터 시간을 반환.
마지막 날주어진 날짜의 마지막 날을 가져옵니다.
현지 시각현재 현지 날짜 및 시간을 가져옵니다.
현지 시간 소인LOCALTIME과 동일.
메이크 데이트주어진 연도 및 일 수를 기준으로 날짜를 작성하여 반환합니다..
시간을 내다주어진 시간, 분 및 초 값을 기반으로 시간을 작성하여 리턴합니다..
마이크로 콘주어진 시간 또는 날짜 시간의 마이크로 초를 반환합니다.
주어진 시간 또는 날짜 시간의 분을 반환.
주어진 날짜의 월을 반환.
MONTHNAME주어진 날짜의 월 이름을 반환.
지금LOCALTIME과 동일.
PERIOD_ADD주어진 기간에 주어진 개월 수를 더합니다.
PERIOD_DIFF주어진 두 기간의 차이를 반환.
쿼터주어진 날짜의 연도를 반환합니다.
둘째주어진 시간 또는 날짜 시간의 초를 반환.
SEC_TO_TIME주어진 초를 기준으로 시간을 반환.
STR_TO_DATE주어진 문자열과 형식에 따라 날짜를 만들어 반환.
SUBDATEDATE_SUB와 동일.
SUBTIME시간 간격 (예 : 02:00)을 시간 또는 날짜 시간 (05:00)에서 빼고 결과 (03:00)를 반환합니다..
SYSDATELOCALTIME과 동일.
시각주어진 시간 또는 날짜 시간에서 시간을 반환.
시간 형식주어진 시간을 주어진 형식으로 반환.
TIME_TO_SEC시간을 초로 변환하여 반환.
타임 다 이프주어진 시간 / 날짜 / 시간 식의 차이를 반환합니다.
타임 스탬프주어진 날짜 또는 날짜 시간의 날짜 시간 값을 반환합니다.
TO_DAYS'00 -00-0000 '에서 주어진 날짜까지 지난 총 일수를 반환합니다..
주어진 날짜의 주 번호를 반환합니다.
주일주어진 날짜의 요일 번호를 반환.
WEEKOFYEAR주어진 날짜의 주 번호를 반환합니다.
주어진 날짜로부터 연도를 반환.
올해주어진 날짜의 연도와 주 번호를 반환합니다.

기타 기능

기타 기능
이름기술
큰 상자주어진 숫자를 이진수로 반환.
이진주어진 값을 이진 문자열로 반환.
캐스트한 유형을 다른 유형으로 변환.
콜라겐값 목록에서 널이 아닌 첫 번째 값을 리턴하십시오..
CONNECTION_ID현재 연결의 경우 고유 한 연결 ID를 반환하십시오..
전환주어진 숫자를 한 숫자 형베이스 시스템에서 다른 숫자 형 시스템으로 변환.
변하게 하다주어진 값을 주어진 데이터 유형 또는 문자 세트로 변환.
현재 사용자서버 인증에 사용 된 사용자 및 호스트 이름을 반환.
데이터 베이스현재 데이터베이스의 이름을 얻습니다.
GROUP BY집계 함수 (COUNT, MAX, MIN, SUM, AVG)와 함께 사용하여 결과를 그룹화.

예: 주문이 활발한 사용자 수를 나열합니다..

COUNT (user_id), active_orders 선택
사용자로부터
GROUP BY active_orders;
HAVING집계 기능이있는 WHERE 대신 사용됩니다..

예: 주문이 활발한 사용자 수를 나열하지만 주문이 3 명 이상인 사용자 만 포함.

COUNT (user_id), active_orders 선택
사용자로부터
GROUP BY active_orders
HAVING COUNT (user_id)> 3;
만약조건이 true이면 값을 반환하고, 그렇지 않으면 다른 값을 반환.
NULL주어진 표현식이 null과 같으면 주어진 값을 반환.
ISNULL식이 null이면 1을 반환하고, 그렇지 않으면 0을 반환.
LAST_INSERT_ID테이블에서 추가 또는 업데이트 된 마지막 행에 대해 자동 증분 ID를 리턴하십시오..
NULLIF주어진 두 표현을 비교합니다. 동일하면 NULL이 반환되고, 그렇지 않으면 첫 번째 표현식이 반환됩니다..
SESSION_USER현재 사용자 및 호스트 이름을 반환.
SYSTEM_USERSESSION_USER와 동일.
사용자SESSION_USER와 동일.
버전데이터베이스를 구동하는 MySQL의 현재 버전을 반환.

와일드 카드 문자

SQL에서 와일드 카드는 LIKE 및 NOT LIKE 키워드와 함께 사용되는 특수 문자로, 정교한 패턴으로 데이터를 훨씬 더 효율적으로 검색 할 수 있습니다.

와일드 카드
이름기술
%0 개 이상의 문자와 동일.

예 1 : ‘son’으로 끝나는 성을 가진 모든 사용자 찾기.

사용자 선택 *
'% son'과 같은 성이있는 곳;

예 2 : 'che'패턴이 포함 된 도시에 거주하는 모든 사용자 찾기

사용자 선택 *
'% che %'와 같은 도시
_단일 문자와 동일.

예: 3 자부터 시작하여‘체스터’로 시작하는 도시에 거주하는 모든 사용자를 찾습니다..

사용자 선택 *
'___chester'와 같은 도시
[캐릭터]목록의 단일 문자와 동일.

예 1 : J, H 또는 M로 시작하는 이름을 가진 모든 사용자 찾기.

사용자 선택 *
어디에 first_name LIKE '[jhm] %';

예 2 : A – L 사이에서 이름이 시작하는 모든 사용자 찾기.

사용자 선택 *
어디에 first_name LIKE '[a-l] %';

예 3 : n – s 사이의 문자로 끝나지 않는 이름을 가진 모든 사용자 찾기.

사용자 선택 *
어디서나 first_name LIKE '% [! n-s]';

열쇠

관계형 데이터베이스에는 기본 및 외래 키의 개념이 있습니다. SQL 테이블에서 테이블은 기본 키, 외래 키 또는 둘 다를 가질 수있는 제한 조건으로 포함됩니다..

기본 키

기본 키를 사용하면 테이블의 각 레코드를 고유하게 식별 할 수 있습니다. 테이블 당 하나의 기본 키만있을 수 있으며 단일 또는 열 조합에이 제한 조건을 지정할 수 있습니다. 그러나 이는이 열의 각 값이 고유해야 함을 의미합니다..

일반적으로 테이블에서 기본 키는 ID 열이며 일반적으로 AUTO_INCREMENT 키워드와 쌍을 이룹니다. 이는 새 레코드가 작성 될 때 값이 자동으로 증가 함을 의미합니다.

예 1 (MySQL)

새 테이블을 작성하고 기본 키를 ID 열로 설정하십시오..

CREATE TABLE 사용자 (
id int NOT NULL AUTO_INCREMENT,
first_name varchar (255),
last_name varchar (255) NOT NULL,
주소 varchar (255),
이메일 varchar (255),
기본 키 (id)
);

예 2 (MySQL)

기존 테이블을 변경하고 기본 키를 first_name 열로 설정하십시오..

ALTER TABLE 사용자
기본 키 추가 (first_name);

외래 키

외래 키는 하나의 열에 적용될 수 있으며 관계형 데이터베이스에서 2 개의 테이블을 함께 연결하는 데 사용됩니다..

아래 다이어그램에서 볼 수 있듯이 외래 키를 포함하는 테이블을 자식 키라고하며 참조 키 또는 후보 키를 포함하는 테이블을 부모 테이블이라고합니다..

MySQL 키

이는 외래 키로 인해 부모 테이블에도없는 잘못된 데이터가 삽입되는 것을 방지하므로 열 데이터가 두 테이블간에 공유됨을 의미합니다..

예 1 (MySQL)

새 테이블을 만들고 다른 테이블의 ID를 참조하는 열을 외래 키로 바꿉니다..

CREATE TABLE 주문 (
id int NOT NULL,
user_id int,
product_id int,
기본 키 (id),
FOREIGN KEY (user_id) 참조 users (id),
FOREIGN KEY (product_id) 참조 제품 (id)
);

예 2 (MySQL)

기존 테이블을 변경하고 외래 키를 만듭니다..

ALTER TABLE 주문
외부 키 추가 (user_id) 참조 users (id);

인덱스

인덱스는 데이터를보다 빠르고 효율적으로 검색하기 위해 자주 검색되는 열에 할당 할 수있는 속성입니다..

그렇다고 인덱스가있는 열이없는 열보다 업데이트하는 데 시간이 오래 걸리기 때문에 각 열을 인덱스로 만들어야한다는 의미는 아닙니다. 인덱스 된 열이 업데이트 될 때 인덱스 자체도 업데이트되어야하기 때문입니다..

인덱스
이름기술
색인 만들기users 테이블의 first_name 및 surname 열에 이름이 'idx_test'인 인덱스를 만듭니다. 이 경우 중복 값이 ​​허용됩니다.

인덱스 idx_test 만들기
ON 사용자 (first_name, 성);
고유 인덱스 생성위와 동일하지만 중복 값이 ​​없습니다..

고유 인덱스 만들기 idx_test
ON 사용자 (first_name, 성);
드롭 인덱스색인을 제거합니다.

ALTER TABLE 사용자
DROP INDEX idx_test;

조인

SQL에서 JOIN 절은 두 테이블에 모두 포함 된 공통 컬럼을 기반으로 여러 테이블의 데이터를 결합하는 결과 세트를 리턴하는 데 사용됩니다.

사용할 수있는 여러 가지 조인이 있습니다.-

  • 내부 조인 (기본값) : 두 테이블에서 일치하는 값을 가진 레코드를 반환합니다.
  • 왼쪽 조인 : 첫 번째 테이블의 모든 레코드와 두 번째 테이블의 일치하는 레코드를 반환합니다..
  • 오른쪽 가입 : 첫 번째 테이블과 일치하는 레코드와 함께 두 번째 테이블의 모든 레코드를 반환합니다..
  • 완전 가입 : 일치하는 경우 두 테이블에서 모든 레코드를 반환합니다..

조인의 작동 방식을 시각화하는 일반적인 방법은 다음과 같습니다.

MySQL 조인

다음 예에서는 주문 테이블과 3 개의 다른 테이블을 결합하여 새 통합보기를 작성하는 데 내부 조인이 사용됩니다.

user_id 및 product_id를 주문한 사용자의 first_name 및 성을 열과 함께 구매 한 품목의 이름으로 바꿉니다..

MySQL 예제 테이블

orders.id, users.first_name, users.surname, products.name을 'product name'으로 선택하십시오.
주문에서
orders.user_id = users.id의 내부 가입 사용자
orders.product_id = products.id의 INNER JOIN 제품;

다음과 같은 결과 집합을 반환합니다.

MySQL 예제 테이블

전망

뷰는 기본적으로 레이블로 데이터베이스에 저장되는 SQL 결과 집합이므로 쿼리를 다시 실행하지 않고도 나중에 다시 반환 할 수 있습니다. 여러 번 필요할 수있는 값 비싼 SQL 쿼리가있을 때 특히 유용하므로 동일한 결과 집합을 생성하기 위해 반복해서 실행하는 대신 한 번만 수행하고보기로 저장할 수 있습니다..

뷰 작성

보기를 작성하려면 다음과 같이하십시오.

VIEW priority_users AS 작성
사용자 선택 *
국가 = '영국';

그런 다음 저장된 결과 세트에 액세스해야하는 경우 다음과 같이 수행 할 수 있습니다.

SELECT * FROM [priority_users];

뷰 교체

CREATE OR REPLACE 명령으로 뷰를 업데이트 할 수 있습니다.

뷰 생성 또는 교체 [priority_users] AS
사용자 선택 *
국가 = '영국'또는 국가 = '미국';

뷰 삭제

뷰를 삭제하려면 DROP VIEW 명령을 사용하십시오..

DROP VIEW priority_users;

결론

오늘날 웹에있는 대부분의 웹 사이트는 어떤 방식 으로든 관계형 데이터베이스를 사용합니다. 보다 복잡한 기능의 웹 사이트 및 시스템을 만들 수 있으므로 SQL을 알아야 할 유용한 언어가됩니다..

나중에이 페이지를 책갈피로 지정하여 나중에 SQL로 작업 중이고 특정 연산자, 특정 쿼리 작성 방법을 기억하지 못하거나 조인의 작동 방식에 대해 혼란 스러울 경우 다음을 수행하십시오. 준비되고 기꺼이 도와 줄 수있는 치트 시트.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Adblock
    detector