아래 편집기는 MySql에서 자주 사용되는 구문에 대한 포괄적인 요약을 제공합니다(꼭 읽어야 할 기사). 편집자님이 꽤 좋다고 생각하셔서 지금 공유하고 모두에게 참고용으로 드리고자 합니다. 에디터와 함께 구경하러 오세요.
아래에 정리한 지식 포인트는 모두 자주 사용하는 유용한 정보들이니 소장해두세요.
/* MySQL 시작 */
net start mysql
/* 서버 연결 및 연결 해제*/
mysql -h 주소 -P 포트 -u 사용자 이름 -p 비밀번호
/* MySQL에 로그인하려면 권한 확인 건너뛰기 */
mysqld --skip-grant-tables
-- 루트 비밀번호 변경
비밀번호 암호화 기능 비밀번호()
update mysql.user set 비밀번호=password('root');
SHOW PROCESSLIST -- 실행 중인 스레드 표시
SHOW VARIABLES --
/* 데이터베이스 작업*/ -----
-- 현재 데이터베이스 보기
데이터베이스 선택();
-- 현재 시간, 사용자 이름, 데이터베이스 버전 표시
지금 선택(), user(), 버전();
- 라이브러리 생성
데이터베이스 생성[ if 존재하지 않음] 데이터베이스 이름 데이터베이스 옵션
데이터베이스 옵션:
CHARACTER SET charset_name
COLLATE collation_name
--기존 라이브러리 보기
데이터베이스 표시[ like 'pattern']
--현재 라이브러리 정보 보기
데이터베이스 데이터베이스 이름 생성 표시
--라이브러리 옵션 정보 수정
데이터베이스 라이브러리 이름 옵션 정보 변경
--삭제라이브러리
데이터베이스 삭제[ 존재하는 경우] 데이터베이스 이름
동시에 데이터베이스와 관련된 디렉터리 및 해당 디렉터리 내용을 삭제
/* 테이블 작업*/ --- ---------------
-- 테이블 생성
[임시] 테이블 생성[ 존재하지 않는 경우] [라이브러리 이름.]테이블 이름(테이블의 구조 정의)[테이블 옵션]
각 필드에는 데이터 유형
이 있어야 합니다. 임시 테이블, 테이블은 자동으로 사라집니다. 세션 종료 시
--테이블 옵션
--문자 집합
-CHARSET = charset_name
-테이블이 설정되지 않은 경우 데이터베이스 문자 집합이 사용됩니다.
--스토리지 엔진
ENGINE = 엔진 이름
테이블은 데이터를 관리할 때 다른 데이터 구조를 사용합니다. 구조가 다르면 처리 방법과 제공되는 기능 작업이 달라집니다.
공통 엔진: InnoDB MyISAM 메모리/힙 BDB 병합 예 CSV MaxDB Archive
다른 엔진이 사용됩니다. 테이블의 구조와 데이터를 저장하는 데 다양한 방법이 사용됩니다
로그 파일 SHOW ENGINES - 스토리지 엔진의 상태 정보를 표시합니다.
SHOW ENGINE 엔진 이름 {LOGS|STATUS} -- 스토리지 엔진의 로그 또는 상태 정보 표시
-- 데이터 파일 디렉터리
DATA DIRECTORY = 'Directory'
-- 인덱스 파일 디렉터리
INDEX DIRECTORY = 'Directory'
-- 테이블 주석
COMMENT = 'string'
-- 파티션 옵션
PARTITION BY.. (자세한 내용은 매뉴얼 참조)
--모든 테이블 보기
SHOW TABLES[ LIKE 'pattern']
SHOW TABLES FROM 테이블 이름
--테이블 구성 보기
SHOW CREATE TABLE 테이블 이름(자세한 정보)
DESC 테이블 이름/DESCRIBE 테이블 이름/ EXPLAIN 테이블 이름/SHOW COLUMNS FROM 테이블 이름 [LIKE 'PATTERN']
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
- -
테이블 수정
-- 테이블 자체를 수정하는 옵션 ALTER TABLE 테이블 이름 테이블에 대한 옵션
EG: ALTER TABLE 테이블 이름 ENGINE=MYISAM;
-- 테이블 다시 시작 Naming
RENAME TABLE 원래 테이블 이름 TO 새 테이블 name
RENAME TABLE 원본 테이블 이름 TO 데이터베이스 이름.테이블 이름(테이블을 다른 데이터베이스로 이동할 수 있음)
-- RENAME은 두 개의 테이블 이름을 교환할 수 있습니다. - 테이블의 필드 메커니즘 수정
Alter 테이블 테이블 이름 작업 이름
- 작업 이름
ADD [열] 필드 이름 - 필드 추가
필드 이름 뒤 - 이 증가의 증가를 나타냅니다. 필드 이름 뒤
FIRST - 의미 첫 번째 항목에 추가
ADD PRIMARY KEY(필드 이름) - 기본 키 생성
ADD UNIQUE [인덱스 이름](필드 이름) - 고유 인덱스 생성
ADD INDEX [인덱스 이름](필드 이름) ) - 일반 인덱스 생성
ADD
DROP[ COLUMN] 필드 이름 - 필드 삭제
MODIFY[ COLUMN] 필드 이름 필드
속성
- - 필드 속성 수정을 지원합니다. 필드 이름은 수정할 수 없습니다. 수정되어야 합니다(모든 원래 속성도 작성해야 함)
CHANGE[COLUMN] 원래 필드 이름 새 필드 이름 필드 속성 는 필드 이름 수정을 지원하지 않습니다. DROP PRIMARY KEY -- 기본 키 삭제(AUTO_INCREMENT 속성을 삭제해야 함) 기본 키를 삭제하기 전) DROP INDEX 인덱스 이름 - 인덱스 삭제
DROP FOREIGN KEY 외래 키 - 외래 키 삭제
-- 테이블 삭제
DROP TABLE[IF EXISTS] 테이블 이름...
-- 테이블 지우기 data
TRUNCATE [TABLE] 테이블 이름
-- 테이블 구조 복사
CREATE TABLE 테이블 이름 LIKE 복사할 테이블 이름
-- 테이블 구조 및 데이터 복사
CREATE TABLE 테이블 이름 [AS ] SELECT * FROM 복사할 테이블 이름
-- 테이블에 오류가 있는지 확인
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
-- 테이블 최적화
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
--테이블 복구
REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
-- 분석 테이블
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
/* 데이터 작업*/ -- ---
-- 추가
INSERT [INTO] 테이블 이름 [(필드 목록)] VALUES(값 목록 ) )[, (값 목록), ...]
— 삽입할 값 목록에 모든 필드가 포함되고 순서가 동일한 경우 필드 목록을 생략할 수 있습니다.
-- 여러 데이터 레코드를 동시에 삽입할 수 있습니다!
REPLACE는 INSERT와 정확히 동일하며 서로 바꿔 사용할 수 있습니다.
INSERT [INTO] 테이블 이름 SET 필드 이름 = 값 [, 필드 이름 = 값, ...]
--
확인 SELECT 필드 목록 FROM 테이블 이름 [기타 절]
-- 다중 여러 테이블의 필드
-- 다른 절은 사용할 수 없습니다.
-- 필드 목록을 *로 대체하여 모든 필드를 나타낼 수 있습니다.
--
삭제 DELETE FROM 테이블 name [조건절 삭제]
조건절이 없으면
모두 삭제됩니다--change
UPDATE 테이블 이름 SET 필드명=새값[, 필드명=새값] [ 업데이트조건]
/*문자셋 인코딩*/ -----
--MySQL, 데이터베이스, 테이블 및 필드에 대해 인코딩을 설정할 수 있습니다
-데이터 인코딩과 클라이언트 인코딩이 일관될 필요는 없습니다
SHOW VARIABLES LIKE 'character_set_ %' -- 모든 문자 집합 인코딩 항목 보기
Character_set_client 클라이언트가 서버에 데이터를 보낼 때 사용되는 인코딩
Character_set_results 서버가 결과를 클라이언트에 반환하기 위해 사용하는 인코딩
Character_set_connection 연결 계층 인코딩
SET 변수 이름 = 변수 값
set Character_set_client = gbk;
set Character_set_results = gbk;
set Character_set_connection = gbk;
SET NAMES GBK; -- 꽤 위 세 가지 설정을 완료한 후
-- 교정 세트
교정 세트를 사용하여 정렬
SHOW CHARACTER SET [LIKE '패턴']/SHOW CHARSET [LIKE '패턴 '] 모든 문자 집합 보기
SHOW COLLATION [LIKE 'pattern'] 모든 데이터 정렬 집합 보기
charset 문자 집합 인코딩
데이터 정렬 집합 인코딩
/* 데이터 유형(열 유형) */ -----
-- 정수 유형---------
유형 바이트 범위(부호 있는 비트)
tinyint 1바이트 -128 ~ 127부호 없는 비트: 0 ~ 255
smallint 2바이트 -32768 ~ 32767
mediumint 3바이트 -8388608 ~ 8388607
int 4바이트
bigint 8바이트
int(M) M은 총 자릿수를 나타냅니다.
- 기본적으로 부호 비트가 있으며, 부호 없는 속성 수정
- 표시 너비, 필드 정의 시 설정한 자릿수에 특정 숫자가 부족할 경우 앞에 0을 채우고, zerofill 속성 수정
예: int(5) 숫자 '123' 삽입, 뒤에 '00123'을 입력하세요
- 요구 사항을 충족하면 작을수록 좋습니다.
- 1은 부울 값이 참임을 의미하고, 0은 부울 값이 거짓임을 의미합니다. MySQL에는 정수 0과 1로 표시되는 부울 유형이 없습니다. Tinyint(1)은 일반적으로 부울 유형을 나타내는 데 사용됩니다.
-- b. 부동 소수점 ----------
유형 바이트 범위
float (단정밀도) 4바이트
배정밀도(배정밀도) 8바이트
부동 소수점 유형은 부호 비트 unsigned 속성과 표시 너비 zerofill 속성을 모두 지원합니다.
정수형과 다르게 전후에 0이 채워집니다.
부동소수점형 정의 시 총 자릿수와 소수 자릿수를 지정해야 합니다.
float(M, D) double(M, D)
M은 전체 자릿수를 나타내고, D는 소수점 이하 자릿수를 나타냅니다.
M과 D의 크기에 따라 부동 소수점 수의 범위가 결정됩니다. 고정된 범위의 정수와 다릅니다.
M은 총 자릿수(소수점 및 기호 제외)와 표시 너비(모든 표시 기호 포함)를 모두 나타냅니다.
과학적 표기법을 지원합니다.
부동 소수점 숫자는 대략적인 값을 나타냅니다.
-- c. 고정 소수점 숫자---------
십진수 — 가변 길이
decimal(M, D) M은 전체 자릿수를 나타내고, D는 소수점 이하 자릿수를 나타냅니다.
정확한 값을 저장하면 부동 소수점 숫자의 반올림과 달리 데이터가 변경되지 않습니다.
부동소수점수를 문자열로 변환하여 저장하면 9자리 숫자가 각각 4바이트로 저장됩니다.
2. 문자열 유형
-- a.char, varchar ----------
char 고정 길이 문자열, 빠르지만 공간 낭비
varchar 가변 길이 문자열, 느리지만 공간 절약
M은 저장할 수 있는 최대 길이를 나타내며, 이 길이는 문자 바이트 수가 아닌 숫자입니다.
다른 인코딩은 다른 공간을 차지합니다.
문자, 인코딩에 관계없이 최대 255자입니다.
varchar, 최대 65535자(인코딩 관련).
유효한 레코드의 최대 길이는 65535바이트를 초과할 수 없습니다.
utf8의 최대 길이는 21844자, gbk의 최대 길이는 32766자, latin1의 최대 길이는 65532자입니다.
varchar는 가변 길이이며 저장 공간이 필요합니다. varchar의 길이를 저장하는 데 사용됩니다. 데이터가 255바이트 미만인 경우 길이를 저장하는 데 1바이트가 사용되고, 그렇지 않으면 2바이트가 저장됩니다.
varchar의 최대 유효 길이는 최대 줄 크기와 사용된 문자 집합에 따라 결정됩니다.
최대 유효 길이는 65532바이트입니다. varchar가 문자열을 저장할 때 첫 번째 바이트는 비어 있고 데이터가 없으며 그 다음에는 문자열 길이를 저장하는 데 2바이트가 필요하기 때문입니다. 64432-1-2=65532바이트입니다.
예: 테이블이 CREATE TABLE tb(c1 int, c2 char(30), c3 varchar(N))로 정의된 경우 charset=utf8; 답변: (65535-1-2-4-30*3)/3
-- blob, 텍스트 ----------
blob 바이너리 문자열(바이트 문자열)
tinyblob, blob, Mediumblob, longblob
텍스트 비바이너리 문자열(문자열)
tinytext , text, mediatext, longtext
text 정의 시 길이를 정의할 필요가 없으며 전체 길이는 계산되지 않습니다.
텍스트 유형 정의 시 기본값을 지정할 수 없습니다.
-- c.binary, varbinary ----------
은 char, varchar와 유사하며 바이너리 문자열을 저장하는 데, 즉 문자열 대신 바이트 문자열을 저장하는 데 사용됩니다.
char, varchar, text는 binary, varbinary, blob에 해당합니다.
3. 일반적으로 날짜 및 시간 유형
정수 사용 PHP는 타임스탬프 형식을 쉽게 지정할 수 있으므로 타임스탬프 를 저장하세요.
datetime 8바이트 날짜 및 시간 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
날짜 3바이트 날짜 1000-01-01 ~ 9999 - 12- 31
timestamp 4바이트 타임스탬프 19700101000000 ~ 2038-01-19 03:14:07
time 3바이트 시간 -838:59:5 9 ~ 838:59:59
연도 1바이트 1901년 - 2155년
datetime “YYYY-MM-DD hh:mm:ss”
timestamp “YY-MM-DD hh:mm:ss”
“YYYYMMDDhhmmss”
“YYMMDDhhmmss”
“YYYYMMDDhhmmss
” YYYY-MM-DD”
“YY-MM-DD”
“YYYYMMDD”
“ YYMMDD"
"hhmmss"
연도 “YYYY”
“YY”
“YYYY”
YY
열거 및 컬렉션
-- 열거형(enum) ----- -----
enum(val1, val2, val3...)알려진 값 중에서 하나를 선택합니다. 최대 개수는 65535개입니다.
열거값 저장 시 2바이트 정수(smallint)로 저장됩니다. 각 열거값은 저장된 위치순으로 1부터 시작하여 1씩 증가합니다. 은 문자열 유형으로 동작하지만 정수로 저장됩니다. NULL 값의 인덱스는 NULL입니다. 빈 문자열 오류 값의 인덱스 값은 0입니다. -- 세트 ----------세트(val1, val2, val3 ... )
테이블 탭 생성( 성별 세트('남성', '여성', '없음') );
비트 연산
형식을 취합니다. 테이블 생성 시 SET 멤버 값의 후행 공백이 자동으로 제거됩니다./* 유형 선택*/-- PHP 관점
1. 기능이 만족됩니다2. 저장 공간이 최대한 작아야 하며 처리 효율성이 높아야 합니다
3. 호환성 문제 고려
--IP 저장---------
1. 그냥 저장, 사용 가능한 문자열 2. 계산, 검색 등이 필요한 경우 4바이트 unsigned int, 즉 unsigned로 저장할 수 있습니다
1)
PHP 함수conversion
ip2long을 정수형으로 변환할 수는 있지만 기호를 전달하는 문제가 있습니다. 부호 없는 정수로 형식을 지정해야 합니다. sprintf 함수를 사용하여 문자열 형식 지정
sprintf("%u", ip2long('192.168.3.134'));그런 다음 long2ip를 사용하여 정수를 변환 뒤로 IP 문자열2) MySQL 함수 변환(부호 없는 정수, UNSIGNED)
INET_ATON('127.0.0.1') IP를 정수로 변환INET_NTOA(2130706433 ) 정수를 IP로 변환
/* 열 속성(열
제약조건
- 레코드의 필드를 고유하게 식별할 수 있습니다. 기본 키로 사용할 수 있습니다.
- 테이블에는 기본 키가 하나만 있을 수 있습니다. - 기본 키는 고유합니다. - 필드를 선언할 때 기본 키를 사용하여 식별하세요.
예: 테이블 생성 탭(id int, stu varchar(10), 기본 키(id));
- 기본 키 필드의 값은 null일 수 없습니다.
- 기본 키는 여러 필드로 구성될 수 있습니다. 이때, 필드 목록 뒤에 선언된 메소드가 필요합니다.
예: 테이블 탭 생성(id int, stu varchar(10), age int, 기본 키(stu, age));
2. )
특정 필드의 값이 반복되지 않도록 합니다.
3. null 제약 조건
null은 데이터 유형이 아니라 열의 속성입니다.
현재 열이 null일 수 있는지 여부를 나타냅니다. 즉, 아무것도 없음을 의미합니다.
null, 비워둘 수 있습니다. 기본.
null이 아니며 비어 있을 수 없습니다.
탭 값에 삽입 (null, 'val');
-- 이는 필드가 null이 허용되는지 여부에 따라 첫 번째 필드의 값을 null로 설정한다는 의미입니다
4. 기본 기본값 속성
현재 필드의 기본값입니다.
탭 값에 삽입 (기본값, 'val') - 이는 이 기본값 을 사용하도록 강제한다는 의미입니다.
테이블 탭 만들기(add_time 타임스탬프 기본 current_timestamp);
-- 현재 시간의 타임스탬프를 기본값으로 설정하는 것을 의미합니다.
현재_날짜, 현재_시간
5. auto_increment 자동 증가 제약
자동 증가는 인덱스(기본 키 또는 고유)여야 합니다.
하나의 필드만 자동 증가할 수 있습니다.
자동 성장을 시작하려면 기본값은 1입니다. 테이블 속성 auto_increment = x를 통해 설정하거나 테이블 tbl auto_increment = x;
6. 주석 주석
예: 테이블 생성( id int ) comment 'comment content'
7. 외래 키 외래 키 제약 조건
은 마스터를 제한하는 데 사용됩니다. 테이블과 슬레이브 테이블 데이터 무결성.
alter table t1 add 제약 조건 `t1_t2_fk` 외래 키(t1_id)는 t2(id)를 참조합니다.
--테이블 t1의 t1_id 외래 키를 테이블 t2의 id 필드에 연결합니다.
--각 외래 키에는 이름이 있습니다. 제약 조건을 통해
을 지정할 수 있습니다. 외래 키가 존재하는 테이블을 슬레이브 테이블(하위 테이블)이라고 하며, 외래 키가 가리키는 테이블을 호출합니다. 마스터 테이블(부모 테이블)
기능: 데이터 일관성과 무결성을 유지하는 주요 목적은 외래 키 테이블(슬레이브 테이블)에 저장된 데이터를 제어하는 것입니다.
MySQL에서는 InnoDB 엔진에 외래 키 제약 조건을 사용할 수 있습니다.
구문:
외래 키(외래 키 필드)는 기본 테이블을 참조합니다. name ( 관련분야) [마스터 테이블 레코드 삭제 시 동작] [마스터 테이블 레코드 업데이트 시 동작]
이때 슬레이브 테이블에서 외래키를 검출해야 하는 경우 마스터 테이블의 기존 값으로 제한됩니다. 연결이 없는 경우 외래 키를 null로 설정할 수 있습니다. 전제는 외래 키 열이 null이 아니라는 것입니다.
메인 테이블 레코드가 변경되거나 업데이트될 때 작업을 지정할 수 없으며, 이때 메인 테이블의 작업이 거부됩니다.
업데이트 시 또는 삭제 시가 지정된 경우: 삭제 또는 업데이트 시 선택할 수 있는 여러 작업이 있습니다.
1. 캐스케이드 작동. 마스터 테이블의 데이터가 업데이트(기본 키 값 업데이트)되고, 슬레이브 테이블도 업데이트(외래 키 값 업데이트)됩니다. 마스터 테이블의 레코드가 삭제되고, 슬레이브 테이블의 관련 레코드도 삭제됩니다.
2. null로 설정, null로 설정. 메인 테이블의 데이터가 업데이트되고(기본 키 값이 업데이트됨) 보조 테이블의 외래 키가 null로 설정됩니다. 기본 테이블 레코드가 삭제되고, 보조 테이블 관련 레코드의 외래 키가 null로 설정됩니다. 그러나 외래 키 열에는 null이 아닌 속성 제약 조건이 없어야 합니다.
3. 상위 테이블 삭제 및 업데이트를 제한하고 거부합니다.
외래 키는 InnoDB 스토리지 엔진에서만 지원됩니다. 다른 엔진은 지원되지 않습니다.
/* 테이블 생성 사양 */ ------------------
-- 일반 형식, NF
- 각 테이블은 하나의 엔터티 정보를 저장합니다.
- 각 테이블에는 기본 키로 ID 필드가 있습니다.
- ID 기본 키 + 원자 테이블
-- 1NF, 첫 번째 정규형
필드를 더 이상 나눌 수 없는 경우 첫 번째 정규형을 만족합니다.
-- 2NF, 제2정규형
제1정규형을 만족한다는 전제 하에서는 부분의존이 발생할 수 없습니다.
일치하는 기본 키를 제거하면 부분 종속성을 피할 수 있습니다. 단일 열 키워드를 추가합니다.
-- 3NF, 제3정규형
제2정규형을 만족한다는 전제하에 전이적 종속성이 발생할 수 없습니다.
특정 필드는 기본 키에 종속되고 다른 필드는 이 필드에 종속됩니다. 이는 전이적 종속성입니다.
엔터티 정보의 데이터를 테이블에 담습니다.
/* 선택 */ ------------------
[모두 선택] |distinct] select_expr -> [total function]으로 그룹화 -> order by ->
a. 🎜>
--*는 모든 필드를 나타내는 데 사용할 수 있습니다. select * from tb; -
을 사용할 수 있습니다(수식 계산, 함수 호출, 필드도 표현식임)
SELECT STU, 29+25, Now () from ( ) from () from tb;
-- 각 열에 별칭을 사용할 수 있습니다. 열 식별을 단순화하고 여러 열 식별자의 중복을 방지하는 데 적합합니다. -Am 키워드는 AS를 생략할 수도 있습니다.
🎜>
질문. -- 테이블에 별칭을 지정할 수 있습니다. as 키워드를 사용하세요.
tb1에서 *를 tt로, tb2에서 bb로 선택 - 클래스에서 여러 테이블이 동시에 나타날 수 있습니다. —여러 테이블이 가로로 겹쳐지고 데이터가 데카르트 곱을 형성합니다.
-- 정수 1은 참을 나타내고, 0은 거짓을 나타냅니다. -- 표현식은 연산자
와 연산 배열 으로 구성됩니다.
in (not) null, (not) like, (not) in, (not) between and, is (not), 그리고, 또는,
d. group by 절, grouping 절
group by field/alias [정렬 방법]
그룹핑은 나중에 정리할 예정입니다. 오름차순: ASC, 내림차순: DESC
다음 [total 함수]는 group by와 함께 사용해야 합니다:
count NULL이 아닌 다양한 값의 개수를 반환합니다. count(*), count(field) sum 합계를 구합니다.
max 최대값을 찾습니다. min 최소값을 찾습니다. avg 평균값을 찾습니다.
문자열 연결
.
e.hing절, 조건절
where와 기능 및 사용법은 동일하지만 실행 시점이 다릅니다.
처음에 탐지 데이터를 실행하고 원본 데이터를 필터링하는 곳입니다.
필터링된 결과를 다시 필터링해야 합니다.
have 필드를 쿼리해야 하며, where 필드는 데이터 테이블에 존재해야 합니다.
필드 별칭을 사용할 수 없지만 사용할 수 있는 곳. WHERE 코드가 실행될 때 아직 컬럼 값이 결정되지 않았을 수 있기 때문입니다.
전체 기능을 사용할 수 없는 경우. 일반적으로 has
는 집계 함수가 필요할 때 사용됩니다. SQL 표준에 따르면 HAVING은 GROUP BY 절의 열을 참조하거나 집계 함수의 열에서 사용해야 합니다.
f.order by 절, sorting 절
order by sort 필드/별칭 정렬 방법 [, sorting field/ 별칭 정렬 방법]...
오름차순: ASC, 내림차순: DESC
여러 필드의 정렬을 지원합니다.
g. 결과 개수 제한 조항
은 처리된 결과 개수만 제한합니다. 처리된 결과를 레코드가 나타나는 순서대로 0부터 시작하는 인덱스를 사용하여 컬렉션으로 처리합니다.
시작 위치 제한, 항목 수 가져오기
첫 번째 매개변수를 생략하면 인덱스 0부터 시작한다는 의미입니다. limit 레코드 수 가져오기
h. 개별, 모든 옵션
distinct 중복 레코드 제거
기본값은 모두, 모든 기록
/* UNION */ ------------------
여러 선택 쿼리의 결과를 결과 집합으로 결합합니다.
SELECT ... UNION [ALL|DISTINCT] SELECT ...
기본 DISTINCT 모드, 즉 반환된 모든 행은 고유합니다.
각 SELECT 쿼리를 괄호로 묶는 것이 좋습니다.
ORDER BY로 정렬할 경우 조합을 위해 LIMIT를 추가해야 합니다.
각 선택 항목에서 쿼리하는 필드 수가 동일해야 합니다.
결과의 필드 이름은 첫 번째 Select 문을 기반으로 하므로 각 Select 쿼리의 필드 목록(번호, 유형)은 일관되어야 합니다.
/* 하위 쿼리*/ ------------------
- 하위 쿼리는 괄호로 묶어야 합니다.
-- from type
from 뒤의 요구 사항은 테이블이고 하위 쿼리 결과는 별칭이어야 합니다.
- 각 쿼리 내의 조건을 단순화합니다.
- from 유형은 결과에서 임시 테이블 을 생성해야 하며, 이는 원래 테이블의 잠금을 해제하는 데 사용할 수 있습니다.
- 하위 쿼리는 테이블, 테이블 하위 쿼리를 반환합니다.
select * from (select * from tb where id>0) as subfrom where id>1;
-- where type
- 하위 쿼리는 스칼라 하위 쿼리 값을 반환합니다.
- 하위 쿼리에 별칭을 지정할 필요가 없습니다.
- 하위 쿼리의 테이블은 직접 업데이트할 수 없습니다.
select * from tb where Money = (select max(money) from tb);
-- 열 하위 쿼리
if sub -query 쿼리 결과는 열을 반환합니다.
in 또는 not in을 사용하여 쿼리를 완료합니다.
존재 및 존재하지 않음 조건
하위 쿼리가 데이터를 반환하는 경우 1 또는 0을 반환합니다. 조건을 결정하는 데 자주 사용됩니다.
존재하는 t1에서 열 1을 선택합니다(t2에서 * 선택).
>
-- 특수 연산자
!= all() not in과 동일 = some() in과 동일. any는 some
모두 일부는 다른 연산자와 함께 사용할 수 있습니다.
/* 조인 쿼리(join) */ -----
여러 테이블의 필드를 연결하려면 연결 조건을 지정하면 됩니다.
-- Inner Join(inner Join)
- 기본값은 Inner Join이며, Inner는 생략 가능합니다.
- 데이터가 존재하는 경우에만 연결을 보낼 수 있습니다. 즉, 연결 결과에는 빈 줄이 포함될 수 없습니다.
on은 연결 상태를 나타냅니다. 조건식은 where와 유사합니다. 조건을 생략할 수도 있습니다(조건이 항상 참임을 나타냄)
where를 사용하여 연결 조건을 표현할 수도 있습니다.
using도 있지만 필드명이 동일해야 합니다. using (필드명)
-- Cross Join Cross Join
즉, 조건 없는 내부 조인입니다.
select * from tb1 cross Join tb2;
-- 외부 조인(outer Join)
- 데이터가 없으면 연결 결과에도 나타납니다.
-- 왼쪽 외부 조인 왼쪽 조인
데이터가 없으면 왼쪽 테이블에 레코드가 나타나고 오른쪽 테이블은 Null로 채워집니다.
-- 오른쪽 외부 조인 오른쪽 조인
데이터가 없으면 오른쪽 테이블에 레코드가 나타나고 왼쪽 테이블은 null로 채워집니다
-- 자연 조인(자연 조인)
자동으로 연결 조건을 결정하여 연결을 완료합니다.
using을 생략하는 것과 동일하며, 동일한 필드 이름이 자동으로 검색됩니다.
자연 조인
자연 왼쪽 조인
자연 오른쪽 조인
info에서 info.id, info.name, info.stu_num, extra_info.hobby, extra_info.sex를 선택하고, extra_info where info. stu_num = extra_info.stu_id;
/* 가져오기 및 내보내기*/ ------------------
*를 out파일 테이블 이름에서 [제어 형식]으로 선택; -- 테이블 데이터 내보내기
데이터 로드 [로컬] infile 파일 주소 [교체|무시] into table table name [control format]; -- 데이터 가져오기
생성된 데이터의 기본 구분 기호는 탭 문자입니다.
local이 지정되지 않은 경우 데이터 파일은 서버에 있어야 합니다.
키워드 교체 및 무시 제어 쌍 기존 고유 키 레코드의 중복 처리
--제어 형식
필드 제어 필드 형식
기본값: ''로 묶인 't'로 끝나는 필드 '\'로 이스케이프됨
'string'으로 종료됨 -- 종료됨
'char'로 묶음 -- 래핑
'char'로 이스케이프됨 -- 이스케이프됨
-- 예:
SELECT a ,b,a+b INTO OUTFILE '/tmp/result.text'
','로 끝나는 필드 '"'
'n'으로 끝나는 줄
FROM test_table;
라인 제어 라인 형식
기본값: 'n'으로 끝나는 라인
'string'으로 끝나는 라인 -- 종료
/* insert */ -----
select 문으로 얻은 데이터 가능 insert를 사용하여 삽입합니다.
열 지정을 생략하고 괄호 안에 값()을 입력하여 열 순서대로 나타나는 모든 필드에 값을 제공하도록 요구할 수 있습니다.
또는 집합 구문을 사용하세요.
tbl_name set field=value,...;
에 삽입하면 (), (), (); 형식으로 한 번에 여러 값을 사용할 수 있습니다.
tbl_name 값에 삽입 (), (), ();
열 값을 지정할 때 표현식을 사용할 수 있습니다.
tbl_name 값에 삽입 (field_value, 10+10, now());
특수한 기본값인 기본값을 사용할 수 있습니다. 이는 해당 열이 기본값을 사용한다는 의미입니다.
tbl_name 값에 삽입 (field_value, default);
쿼리 결과를 삽입할 값으로 사용할 수 있습니다.
insert into tbl_name select ...;
은 삽입된 값에 기본 키(또는 고유 인덱스) 충돌이 있는 경우 기본 키가 아닌 다른 열의 정보를 업데이트하도록 지정할 수 있습니다.
tbl_name 값에 삽입/중복 키 업데이트 필드=값 선택/설정, …;
/* 삭제 */ ------------ ------
DELETE FROM tbl_name [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
조건에 따라 삭제
삭제할 최대 레코드 수를 지정하세요. 한도
정렬 조건에 따라 삭제될 수 있습니다. order by +limit
는 유사한 연결 구문을 사용하여 다중 테이블 삭제를 지원합니다.
delete from은 테이블 연결 동작 조건을 이용하여 여러 테이블 1, 2의 데이터를 삭제해야 합니다.
/* 잘림 */ ------------------
TRUNCATE [TABLE] tbl_name
데이터 지우기
테이블 삭제 및 재구축
차이:
1, truncate는 삭제 테이블을 다시 생성하고 삭제는
2개 항목을 항목별로 삭제하는 것이며, truncate는 auto_increment 값을 재설정합니다. 그리고 삭제는 모릅니다
3. Truncate는 삭제된 항목 수를 모르지만 delete는 알 수 있습니다.
4, 파티션된 테이블에서 사용하는 경우 truncate는 파티션을 유지합니다.
/* 백업 및 복원*/ ------ -- ----------
백업, 데이터 구조와 테이블의 데이터를 저장합니다.
mysqldump 명령을 사용하여 완료하세요.
-- 내보내기
1. 테이블 내보내기
mysqldump -u 사용자 이름 -p 비밀번호 라이브러리 이름 테이블 이름> a.sql)
2. 여러 테이블 내보내기
mysqldump -u 사용자 이름 -p 비밀번호 데이터베이스 이름 테이블 1 테이블 2 테이블 3 > 파일 이름(D:/a.sql)
3.
mysqldump -u 사용자 이름-p 비밀번호 라이브러리 이름> 파일 이름(D:/a.sql)
4. 라이브러리 내보내기
mysqldump -u 사용자 이름-p 비밀번호-B 라이브러리 이름> 파일 이름(D :/a.sql)
-w를 사용하여 백업 조건을 수행할 수 있습니다
-- Import
1 mysql에 로그인할 때. :
소스 백업 파일
2. 로그인하지 않은 경우
mysql -u 사용자 이름 -p 비밀번호 데이터베이스 이름 < 백업 파일
/* 보기 */ ------------------
보기란 무엇입니까:
뷰는 쿼리에 의해 내용이 정의되는 가상 테이블입니다. 실제 테이블과 마찬가지로 뷰에는 일련의 명명된 열과 데이터 행이 포함되어 있습니다. 그러나 뷰는 데이터베이스에 저장된 데이터 값 세트로 존재하지 않습니다. 행 및 열 데이터는 뷰를 정의하는 쿼리에서 참조하는 테이블에서 나오며 뷰가 참조될 때 동적으로 생성됩니다.
뷰에 테이블 구조 파일이 있지만 데이터 파일이 없습니다.
뷰는 참조하는 기본 테이블에 대한 필터처럼 작동합니다. 정의된 보기에 대한 필터는 현재 또는 다른 데이터베이스에 있는 하나 이상의 테이블이나 다른 보기에서 가져올 수 있습니다. 뷰를 통한 쿼리에는 제한이 없으며 뷰를 통한 데이터 수정에도 거의 제한이 없습니다.
뷰는 데이터베이스에 저장된 쿼리의 SQL 문입니다. 주로 두 가지 이유가 있습니다: 보안이유로 인해 뷰는 다음과 같은 일부 데이터를 숨길 수 있습니다. Security Fund 테이블에서는 주민등록번호와 급여번호를 표시하지 않고 이름과 주소만 표시하는 뷰를 사용할 수 있습니다. 또 다른 이유는 복잡한 쿼리를 쉽게 이해하고 사용할 수 있다는 것입니다.
-- 뷰 생성
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | TEMPTABLE}] VIEW view_name [(column_list)] AS select_statement
- 뷰 이름은 고유해야 하며 테이블과 동일한 이름을 가질 수 없습니다.
- 뷰는 select 문으로 쿼리된 열 이름을 사용할 수도 있고, 해당 열 이름을 직접 지정할 수도 있습니다.
- ALGORITHM을 통해 지정된 뷰에서 실행되는 알고리즘을 지정할 수 있습니다.
- column_list가 존재하는 경우 그 수는 SELECT 문으로 검색된 열 수와 동일해야 합니다.
-- 뷰 구조
SHOW CREATE VIEW view_name
-- 뷰 삭제
- 뷰를 삭제한 후에도 데이터는 여전히 존재합니다.
- 여러 뷰를 동시에 삭제할 수 있습니다.
DROP VIEW [IF EXISTS] view_name ...
-- 뷰 구조 수정
- 일반적으로 뷰를 수정하지 마십시오. 모든 업데이트 보기는 테이블에 매핑됩니다.
ALTER VIEW view_name [(column_list)] AS select_statement
-- 보기 기능
1. 고객용 마지막에 실제 테이블 구조 숨기기
-알고리즘 보기(ALGORITHM)
쿼리 병합 뷰의 명령문을 실행하기 전에 외부 쿼리와 병합해야 합니다!
TEMPTABLE 임시 테이블
뷰 실행 후 임시 테이블이 생성된 후 외부 쿼리가 수행됩니다!
UNDEFINED 정의되지 않음(기본값)은 MySQL이 해당 알고리즘을 독립적으로 선택함을 의미합니다.
/* 거래(transaction) */ ----------------- - -
트랜잭션은 논리적 작업 집합을 의미합니다. 이 작업 집합을 구성하는 각 단위는 성공하거나 실패합니다.
- 연속 SQL의 집합적 성공 또는 집합적 취소를 지원합니다.
- 트랜잭션은 데이터 자체 학습에서 데이터베이스의 기능입니다.
- 자동 제출 기능을 지원하려면 InnoDB 또는 BDB 스토리지 엔진을 사용해야 합니다.
- InnoDB는 트랜잭션에 안전한 엔진이라고 합니다.
--트랜잭션 열기
START TRANSACTION; 또는 BEGIN;
트랜잭션이 열린 후 실행된 모든 SQL 문은 현재 트랜잭션 내에서 SQL 문으로 인식됩니다.
--트랜잭션 제출
COMMIT;
--트랜잭션 롤백
ROLLBACK;
일부 작업에 문제가 있는 경우 트랜잭션이 시작되기 전에 매핑됩니다.
-- 트랜잭션의 특성
1. 원자성
트랜잭션은 트랜잭션의 모든 작업이 발생하거나 발생하지 않는 분할할 수 없는 작업 단위입니다.
2. 일관성
거래 전후의 데이터 무결성은 일관되어야 합니다.
- 트랜잭션 시작과 끝에서 외부 데이터가 일관됨
- 트랜잭션 전체 동안 작업이 연속됨
3. 격리(Isolation)
여러 사용자가 동시에 데이터베이스에 액세스하는 경우 한 명의 사용자가 트랜잭션 다른 사용자의 트랜잭션에 의해 방해받을 수 없으며 동시에 여러 트랜잭션 사이의 데이터는 서로 격리되어야 합니다.
4. 내구성
트랜잭션이 커밋되면 데이터베이스의 데이터 변경 사항은 영구적입니다.
--트랜잭션 구현
1. 요구 사항은 트랜잭션이 지원하는 테이블 유형입니다
2. 관련 작업 집합을 실행하기 전에 트랜잭션을 시작합니다
3. 전체 집합 이후 작업이 완료되고 모두 성공하며, 실패하면 커밋하고 롤백을 선택하면 트랜잭션이 시작된 백업 지점으로 돌아갑니다.
--트랜잭션의 원리
InnoDB의 자동 커밋 기능을 이용하여 완성된다.
일반 MySQL이 명령문을 실행한 후 현재 데이터 제출 작업을 다른 클라이언트가 볼 수 있습니다.
트랜잭션은 일시적으로 "자동 커밋" 메커니즘을 끄고 지속적인 데이터 작업을 제출하려면 커밋이 필요합니다.
-- 참고
1. 데이터 정의 언어(DDL) 문은 데이터베이스를 생성하거나 취소하는 문, 테이블을 생성, 취소 또는 변경하는 문 등 롤백할 수 없습니다. 또는 서브루틴의 저장 명령문.
2. 트랜잭션은 중첩될 수 없습니다.
--저장 포인트
SAVEPOINT 저장 포인트 이름--트랜잭션 저장 포인트 설정
ROLLBACK TO SAVEPOINT 저장 포인트 이름--저장 포인트로 롤백
RELEASE SAVEPOINT 저장 포인트 이름--저장 포인트 삭제
-InnoDB 자동 커밋 기능 설정
SET autocommit = 0|1; 0은 자동 커밋을 끄는 것을 의미하고, 1은 켜는 것을 의미합니다. 자동 커밋.
- 꺼지면 정상적인 작업의 결과가 다른 클라이언트에 표시되지 않으며, 데이터 작업을 지속하려면 커밋이 필요합니다.
- 자동 제출을 꺼서 거래를 활성화할 수도 있습니다. 그러나 START TRANSACTION과 달리
SET 자동 커밋은 다음에 설정이 수정될 때까지 서버 설정을 영구적으로 변경합니다. (현재 연결의 경우)
그리고 START TRANSACTION은 열기 전 상태를 기록하며, 트랜잭션이 커밋되거나 롤백되면 트랜잭션을 다시 열어야 합니다. (현재 트랜잭션의 경우)
/* 테이블 잠금*/
테이블 잠금은 다른 클라이언트가 잘못 읽고 쓰는 것을 방지하기 위한 용도로만 사용됩니다.
MyISAM은 테이블 잠금을 지원하며 InnoDB는 이를 지원합니다. 행 잠금
--잠금
LOCK TABLES tbl_name [AS 별칭]
--잠금 해제
UNLOCK TABLES
/* 트리거*/ ------ - -----------
트리거는 테이블과 관련된 명명된 데이터베이스 개체입니다. 테이블에서 특정 이벤트가 발생하면 해당 개체가 활성화됩니다.
모니터링: 추가, 수정, 삭제 기록의 .
--트리거 생성
CREATE TRIGGER Trigger_name Trigger_time Trigger_event ON tbl_name FOR EACH ROW Trigger_stmt
매개변수:
Trigger_time은 트리거 프로그램의 작업 시간입니다. 트리거가 실행되는 명령문 이전 또는 이후에 트리거가 실행되는지 여부를 나타내는 이전 또는 이후일 수 있습니다.
Trigger_event는 트리거를 활성화하는 문의 유형을 지정합니다.
INSERT: 테이블에 새 행이 삽입될 때 트리거를 활성화합니다.
UPDATE: 행이 변경될 때 트리거를 활성화합니다.
DELETE: 테이블을 삭제합니다.
tbl_name: 모니터링되는 테이블은 영구 테이블이어야 합니다. 트리거 프로그램은 TEMPORARY 테이블 또는 뷰와 연관될 수 없습니다.
Trigger_stmt: 트리거 프로그램이 활성화될 때 실행되는 문장입니다. 여러 문을 실행하려면 BEGIN...END 복합 문 구조를 사용할 수 있습니다.
-- 삭제
DROP TRIGGER [schema_name.]trigger_name
대신 이전 및 새를 사용할 수 있습니다. 이전 및 새
업데이트 작업의 데이터는 업데이트 전에는 오래되었고 새 것입니다.
업데이트 후에는 삭제 작업은 오래된 것입니다.
추가 작업은 새로운 것입니다.
-- 참고
1. 동일한 트리거 동작 시간과 이벤트를 가진 특정 테이블에 대해 두 개의 트리거가 있을 수 없습니다.
-- 문자 연결 함수
concat(str1[, str2,...])
-- 분기 문
if 조건 then
실행 문
elseif 조건 then
실행 문
else
실행 문
end if;
-- 가장 바깥쪽 문 끝 문자 수정
구분자 사용자 정의 끝 기호
SQL 문
사용자 정의 종료 기호
구분 기호 — 원래 세미콜론으로 다시 수정
-- 명령문 블록 래퍼
begin
명령문 블록
end
-- 특수 실행
1. 레코드가 추가되는 한 프로그램이 실행됩니다.
2. 중복 키 업데이트 구문에 삽입하면 다음이 실행됩니다.
중복 레코드가 없으면 삽입 전, 삽입 후에 트리거됩니다.
중복 레코드가 있으면 업데이트됩니다. 삽입 전, 업데이트 전, 업데이트 후 트리거
중복 레코드가 있지만 업데이트가 발생하지 않는 경우 삽입 전, 업데이트 전 트리거
3. 교체 구문: 레코드가 있으면 삽입 전, 삭제 전 실행 , 삭제 후, 삽입 후
/* SQL프로그래밍 */ ------------------
--// 지역 변수---- ------
-- 변수 선언
declare var_name[,...] type [기본값]
이 문은 지역 변수를 선언하는 데 사용됩니다. 변수에 기본값을 제공하려면 기본 절을 포함하십시오. 값은 표현식으로 지정할 수 있으며 상수일 필요는 없습니다. default 절이 없으면 초기값은 null입니다.
-- 할당
set 및 select into 문을 사용하여 변수에 값을 할당합니다.
- 참고: 전역 변수(사용자 정의 변수)는 함수 내에서 사용할 수 있습니다.
--// 전역 변수---------
--정의 및 할당
set 문은 변수에 값을 정의하고 할당할 수 있습니다.
set @var = value;
select into 문을 사용하여 초기화하고 변수에 값을 할당할 수도 있습니다. 이를 위해서는 select 문이 하나의 행만 반환할 수 있어야 하지만 여러 필드가 될 수 있습니다. 즉, 여러 변수에 동시에 값이 할당되어야 하며, 변수 수는 쿼리의 열 수와 일치해야 합니다. .
대입문을 표현식으로 간주하고 select를 통해 실행할 수도 있습니다. 이때 =가 관계 연산자로 취급되는 것을 피하기 위해 대신 :=를 사용합니다. (set 문은 = 및 :=를 사용할 수 있습니다).
@var:=20 선택;
t1 제한 1에서 @v1:=id, @v2=name 선택;
@var:=30;
tbl_name에서 * 선택 into는 테이블의 쿼리에서 얻은 데이터를 변수에 할당할 수 있습니다.
-| select max(height) into @max_height from tb;
-- 맞춤 변수 이름
select 문 이름에 사용자 정의 변수 및 시스템 식별자(일반적으로 필드)를 방지하기 위해 ) 충돌이 발생하면 사용자 정의 변수는 @를 변수 이름 앞의 시작 기호로 사용합니다.
@var=10;
- 변수를 정의한 후 세션 내내 유효합니다(로그인부터 로그아웃까지)
--// 제어 구조--- - ------
-- if 문
if search_condition then
문_목록
[elseif search_condition then
문_목록]
...
[else
문 목록 ]
end if;
-- 사례 문
CASE 값 WHEN [비교 값] THEN 결과
[WHEN [비교 값] THEN 결과 ...]
[ ELSE 결과]
END
-- while 루프
[begin_label:] while search_condition do
문_목록
end while [end_label];
- 루프 내에서 while 루프를 종료해야 하는 경우 레이블을 사용해야 합니다. 레이블은 쌍으로 표시되어야 합니다.
- 루프 종료
전체 루프 종료 Leave
현재 루프 종료 반복
종료 레이블로 종료할 루프 결정
--/ / 내장 함수 ----------
-- 수치 함수
abs(x) — 절대값 abs(-10.9) = 10
format( x, d) -- 천분의 일 값 형식 format(1234567.456, 2) = 1,234,567.46
ceil(x) -- 반올림 ceil(10.1) = 11
floor(x) -- 반내림 Floor(10.1 ) = 10
round(x) -- 가장 가까운 정수로 반올림
mod(m, n) -- m%n m mod n 나머지 찾기 10%3=1
pi() -- pi 구하기
pow(m, n) -- m^n
sqrt(x) -- 산술 제곱근
rand() -- 난수
truncate(x, d) -- 십진수 d로 자릅니다. place
-- 시간 및 날짜 함수
now(), current_timestamp() -- 현재 날짜 및 시간
current_date() -- 현재 날짜
current_time(); 현재 시간
date('yyyy-mm-dd hh:ii:ss') -- 날짜 부분 가져오기
time('yyyy-mm-dd hh:ii:ss') -- 가져오기 시간 부분
date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j') -- 형식 시간
unix_timestamp(); -- - 유닉스 타임스탬프 가져오기
from_unixtime(); -- 타임스탬프에서 시간 가져오기
-- 문자열 함수
length(string) -- 문자열 길이, 바이트
char_length(string ) ~ replace_str은 search_str을 대체합니다
instr(string,substring) -- 문자열에서 하위 문자열이 처음 나타나는 위치를 반환합니다.
concat(string [,...]) -- 문자열을 연결합니다
charset( str) -- 문자열 문자 세트를 반환합니다.
lcase(string) — 소문자로 변환
left(string, length) — string2의 왼쪽에서 길이 문자를 가져옵니다.
load_file(file_name) — 파일에서 읽습니다. 콘텐츠 가져오기
locate(substring, string [,start_position]) - instr과 동일하지만 시작 위치를 지정할 수 있습니다.
lpad(string, length, pad) - 문자열 시작 부분에 패드를 추가하는 과정을 반복합니다. 문자열의 길이 길이
ltrim(string) — 앞 공백 제거
repeat(string, count) — 횟수 반복
rpad(string, length, pad) — 길이가 될 때까지 str 다음에 pad를 사용합니다. 길이
rtrim(string) — 백엔드 공백 제거
strcmp(string1,string2) —두 문자열의 크기를 문자별로 비교
-- 처리 함수
if(expr1,expr2,expr3) 이중 분기.
-- 집계 함수
sum();
max();
min();
avg();
group_concat()
--자주 사용하는 기타 기능
default();
커스텀 기능
------------ New CREATE FUNCTION 함수_이름(매개변수 목록)
RETURN
S 반환값 유형 함수 본문
- 함수 이름은 법적 식별자여야 하며 기존 키워드와 충돌해서는 안 됩니다.
- 함수는 특정 데이터베이스에 속해야 합니다. db_name.funciton_name 형식을 사용하여 현재 함수가 속한 데이터베이스를 실행할 수 있습니다. 그렇지 않으면 현재 데이터베이스입니다.
- 매개변수 부분은 "매개변수 이름"과 "매개변수 유형"으로 구성됩니다. 여러 매개변수는 쉼표로 구분됩니다.
- 함수 본문은 사용 가능한 여러 mysql 문, 프로세스 제어 , 변수 선언 및 기타 문으로 구성됩니다.
- Begin...end 문 블록을 사용하여 여러 문을 포함해야 합니다.
- return return value 문이 있어야 합니다.
-- 삭제
DROP FUNCTION [IF EXISTS] function_name;
-- 보기
'partten'과 같은 함수 상태 표시
SHOW CREATE FUNCTION function_name;
--수정
ALTER FUNCTION function_name 함수 옵션
--// 저장 프로시저, 사용자 정의 함수----------
-- 정의
저장 프로시저는 데이터베이스에 저장된 SQL로 구성된 코드(프로시저)의 조각입니다.
저장 프로시저는 일반적으로 등록, 교대 근무 지불, 주문 창고 보관 등과 같은 비즈니스 로직을 완료하는 데 사용됩니다.
함수는 일반적으로 특정 함수에 초점을 맞추고 다른 프로그램에 대한 서비스로 간주됩니다. 그러나 저장 프로시저는 다른 사람이 호출할 수 없으며 호출을 통해 자체적으로 실행됩니다.
--
CREATE PROCEDURE sp_name(매개변수 목록)
프로시저 본문
매개변수 목록 생성: 함수의 매개변수 목록과 다름, 매개변수 유형을 지정해야 합니다.
IN, 입력 유형을 나타냄
OUT, 출력 유형을 나타냄
INOUT, 혼합 유형을 나타냄
반환 값이 없다는 점에 유의하세요.
/* 저장 프로시저 */ ------------------
저장 프로시저는 실행 가능한 코드의 모음입니다. 함수보다 비즈니스 로직을 선호합니다.
Call: CALL 프로시저 이름
-- 참고
- 반환값이 없습니다.
- 단독으로만 호출 가능하며 다른 문과 혼합하여 호출할 수 없습니다.
-- 매개변수
IN|OUT|INOUT 매개변수 이름 데이터 유형
IN 입력: 호출 과정에서 다음을 입력합니다. data 프로세스 본체 내부의 매개변수
OUT 출력: 호출 프로세스 중 프로세스 본체에서 처리한 결과를 클라이언트로 반환
INOUT 입출력: 입력 또는 출력 가능
- - 구문
CREATE PROCEDURE 프로세스 이름(매개변수 목록)
BEGIN
프로세스 본문
END
/* 사용자 및 권한 관리 * / -- ---
사용자 정보 테이블: mysql.user
-- 권한 새로 고침
FLUSH 권한
--사용자 추가
사용자 생성 사용자 이름 [PASSWORD]로 식별됨 비밀번호(문자열 )
- mysql 데이터베이스에 대한 전역 CREATE USER 권한이나 INSERT 권한이 있어야 합니다.
- 사용자 생성만 가능하며, 권한 부여는 불가능합니다.
- 사용자 이름, 따옴표에 주의하세요: 예: 'user_name'@'192.168.1.1'
- 비밀번호에도 따옴표가 필요하고, 순수 숫자 비밀번호에도 따옴표가 필요합니다.
- To 일반 텍스트로 비밀번호를 지정하고 PASSWORD 키워드를 무시하세요. PASSWORD() 함수에서 반환된 해시 값으로 비밀번호를 지정하려면 PASSWORD
-- 사용자 이름 바꾸기
RENAME USER old_user TO new_user
-- 비밀번호 설정
SET PASSWORD = PASSWORD( 'password') -- 현재 사용자의 비밀번호를 설정합니다.
SET PASSWORD FOR 사용자 이름 = PASSWORD('password') -- 지정된 사용자의 비밀번호를 설정합니다.
-- 사용자 삭제
DROP USER 사용자 이름
-- 권한 할당/사용자 추가
GRANT 권한 목록 ON 테이블 이름 TO 사용자 이름 [IDENTIFIED BY [PASSWORD] 'password']
- 모든 권한은 모든 권한을 의미합니다
- *.*는 모든 라이브러리의 모든 테이블을 나타냅니다.
- 라이브러리 이름. 테이블 이름은 특정 라이브러리에 속한 테이블을 나타냅니다.
-- 권한 보기
사용자 이름에 대한 부여 표시
-- 현재 사용자 권한 보기
CURRENT_USER에 대한 GRANTS 표시 또는 CURRENT_USER에 대한 GRANTS 표시();
-- 권한 취소
사용자 이름에서 테이블 이름에 대한 권한 목록 취소
모든 권한을 REVOKE, 사용자에게 GRANT OPTION name -- 모든 권한 취소
-- 권한 수준
-- GRANT 또는 REVOKE를 사용하려면 GRANT OPTION 권한이 있어야 하며, 부여하거나 취소하려는 권한을 사용해야 합니다.
글로벌 수준: 글로벌 권한은 해당 서버의 모든 데이터베이스에 적용됩니다. mysql.user
GRANT ALL ON *.* 및 REVOKE ALL ON *.*는 글로벌 권한만 부여하고 취소합니다.
데이터베이스 수준: 데이터베이스 권한은 지정된 데이터베이스 mysql.db, mysql.host의 모든 대상에 적용됩니다.
GRANT ALL ON db_name.* 및 REVOKE ALL ON db_name.*은 데이터베이스 권한만 부여하고 취소합니다.
테이블 수준: 테이블 권한은 해당 테이블의 모든 열에 적용됩니다. mysql.talbes_priv
GRANT ALL ON db_name.tbl_name 및 REVOKE ALL ON db_name.tbl_name은 테이블 권한만 부여하고 취소합니다.
열 수준: 열 권한은 주어진 테이블의 단일 열인 mysql.columns_priv에 적용됩니다.
REVOKE를 사용할 때는 승인된 열과 동일한 열을 지정해야 합니다.
-- 권한 목록
모든 [PRIVILEGES]--GRANT OPTION을 제외한 모든 단순 권한 설정
ALTER--ALTER TABLE 사용 허용
ALTER ROUTINE--저장된 하위 PROCEDURE를 변경 또는 취소
CREATE — CREATE TABLE 허용
CREATE ROUTINE — 저장된 서브루틴 생성
CREATE TEMPORARY TABLES — CREATE TEMPORARY TABLE 허용
CREATE USER — CREATE USER, DROP USER, RENAME USER 및 모든 권한 취소를 허용합니다.
CREATE VIEW — CREATE VIEW 사용 허용 SELECT...INTO OUTFILE 및 LOAD DATA INFILE 허용
INDEX - CREATE INDEX 및 DROP INDEX 허용
INSERT - INSERT 허용
LOCK TABLES - 다음에 대한 테이블 허용 SELECT 권한이 있는 LOCK TABLES
PROCESS - SHOW FULL PROCESSLIST 허용
REFERENCES - 구현되지 않음
RELOAD - FLUSH 허용
REPLICATION CLIENT - 사용자가 슬레이브의 주소를 요청할 수 있도록 허용 또는 마스터 서버
REPLICATION SLAVE -- 복제 슬레이브 서버에 사용됩니다(마스터 서버에서 바이너리 로그 이벤트 읽기)
SELECT -- SELECT 사용 허용
SHOW DATABASES -- 모든 데이터베이스 표시
SHOW VIEW -- SHOW CREATE VIEW
SHUTDOWN 사용 허용 -
에서 mysql
admin shutdown
SUPER 사용 허용 - CHANGE MASTER, KILL, PURGE MASTER LOGS 및 SET 사용 허용 GLOBAL 문, mysqladmin 디버그 명령 ;max_connections에 도달한 경우에도 연결을 (한 번) 허용합니다. UPDATE -- 사용 허용 UPDATE
USAGE -- "권한 없음"의 동의어
GRANT OPTION -- 권한 부여 허용
/* 테이블 유지 관리*/
- - 스토리지 테이블 분석 및 키워드 분포
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE 테이블 이름...
--하나 이상의 테이블에 오류가 있는지 확인
CHECK TABLE tbl_name [, tbl_name] ... [옵션 ] ...
옵션 = {빠른 | 빠른 | 확장됨 | 변경됨}
- 데이터 파일 조각 모음
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name] ...
/* 기타*/ -----
1. 백틱(`)을 식별자로 사용할 수 있습니다(라이브러리 이름, 테이블 이름, 필드 이름, 인덱스, 별칭) 패키지를 사용하여 키워드와 이름이 중복되는 것을 방지하세요! 중국어도 식별자로 사용할 수 있습니다!
2. 각 라이브러리 디렉터리에는 현재 데이터베이스를 저장하는 옵션 파일 db.opt가 있습니다.
3. 댓글:
한 줄 주석# 주석 내용
여러 줄 주석/* 주석 내용*/
한 줄 주석--댓글 내용(표준 SQL 주석 스타일) , 이중 필요 대시 뒤에 공백 추가(공백, TAB, 개행 등))
4. 패턴 와일드카드 :
_ 모든 단일 문자
% 0 문자를 포함한 여러 문자
작은따옴표는 이스케이프해야 합니다. '
5. CMD 명령줄의 명령문 종결자는 ";", "G", "g"일 수 있습니다. 이는 표시 결과에만 영향을 미칩니다. 다른 곳에서는 세미콜론으로 끝나야 합니다. 구분 기호는 현재 대화의 명령문 종결자를 수정할 수 있습니다.
6. SQL은 대소문자를 구분하지 않습니다
7. 기존 문 지우기: c
위 내용은 MySql에서 자주 사용되는 문에 대한 포괄적인 요약에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!