MySQL 튜토리얼
MySQL 시작하기
수색…
비고
MySQL 은 Oracle Corporation에서 개발 및 지원하는 오픈 소스 관계형 데이터베이스 관리 시스템 (RDBMS)입니다.
MySQL은 Linux 변형, OS X 및 Windows를 포함한 많은 플랫폼에서 지원 됩니다. 또한 C, C ++, Java, Lua, .Net, Perl, PHP, Python 및 Ruby를 비롯한 많은 언어에 대한 API 를 제공합니다.
MariaDB 는 약간 다른 기능 세트 가있는 MySQL 포크입니다. 대부분의 응용 프로그램에서 MySQL과 완전히 호환됩니다.
버전
번역 | 출시일 |
---|---|
1.0 | 1995-05-23 |
3.19 | 1996-12-01 |
3.20 | 1997-01-01 |
3.21 | 1998-10-01 |
3.22 | 1999-10-01 |
3.23 | 2001-01-22 |
4.0 | 2003-03-01 |
4.1 | 2004-10-01 |
5.0 | 2005-10-01 |
5.1 | 2008-11-27 |
5.5 | 2010-11-01 |
5.6 | 2013-02-01 |
5.7 | 2015-10-01 |
시작하기
MySQL에 데이터베이스 만들기
CREATE DATABASE mydb;
반환 값 :
쿼리 OK, 영향을받는 행 1 개 (0.05 초)
생성 된 데이터베이스 mydb
USE mydb;
반환 값 :
데이터베이스가 변경됨
MySQL에 테이블 만들기
CREATE TABLE mytable
(
id int unsigned NOT NULL auto_increment,
username varchar(100) NOT NULL,
email varchar(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE mytable
은 mytable
이라는 새 테이블을 작성합니다.
id int unsigned NOT NULL auto_increment
는 id
열을 생성합니다.이 유형의 필드는 테이블의 각 레코드에 고유 한 숫자 ID를 할당합니다 (이 경우 두 행이 동일한 id
를 가질 수 없음을 의미). MySQL은 자동으로 새로운, 레코드의 id
필드에 고유 한 값 (1부터 시작).
반환 값 :
쿼리 OK, 영향을받은 행 0 개 (0.10 초)
MySQL 테이블에 행 삽입하기
INSERT INTO mytable ( username, email )
VALUES ( "myuser", "[email protected]" );
반환 값의 예 :
질의 OK, 1 행 영향 (0.06 초)
varchar
일명 strings
은 작은 따옴표를 사용하여 삽입 할 수도 있습니다.
INSERT INTO mytable ( username, email )
VALUES ( 'username', '[email protected]' );
행을 MySQL 테이블로 업데이트하기
UPDATE mytable SET username="myuser" WHERE id=8
반환 값의 예 :
질의 OK, 1 행 영향 (0.06 초)
int
값은 따옴표없이 쿼리에 삽입 할 수 있습니다. 문자열과 날짜는 따옴표로 묶어야합니다 '
또는 큰 따옴표 "
.
행을 MySQL 테이블에 삭제하기
DELETE FROM mytable WHERE id=8
반환 값의 예 :
질의 OK, 1 행 영향 (0.06 초)
그러면 id
가 8 인 행이 삭제됩니다.
MySQL의 조건에 따라 행 선택하기
SELECT * FROM mytable WHERE username = "myuser";
반환 값 :
+----+----------+---------------------+
| id | username | email |
+----+----------+---------------------+
| 1 | myuser | [email protected] |
+----+----------+---------------------+
1 행 세트 (0.00 초)
기존 데이터베이스 목록 표시
SHOW databases;
반환 값 :
+-------------------+
| Databases |
+-------------------+
| information_schema|
| mydb |
+-------------------+
2 줄 세트 (0.00 초)
"information_schema"는 데이터베이스 메타 데이터에 대한 액세스를 제공하는 "마스터 데이터베이스"로 생각할 수 있습니다.
기존 데이터베이스에 테이블 표시
SHOW tables;
반환 값 :
+----------------+
| Tables_in_mydb |
+----------------+
| mytable |
+----------------+
1 행 세트 (0.00 초)
테이블의 모든 필드 표시
DESCRIBE databaseName.tableName;
또는 이미 데이터베이스를 사용하는 경우 :
DESCRIBE tableName;
반환 값 :
+-----------+----------------+--------+---------+-------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------+--------+---------+-------------------+-------+
| fieldname | fieldvaluetype | NO/YES | keytype | defaultfieldvalue | |
+-----------+----------------+--------+---------+-------------------+-------+
Extra
에는 auto_increment
가 포함될 수 있습니다.
Key
는 필드에 영향을 줄 수있는 키 유형을 나타냅니다. 기본 (PRI), 고유 (UNI) ...
n 행 세트 (0.00 초)
여기서 n은 테이블의 필드 수입니다.
사용자 만들기
먼저 사용자를 생성 한 다음 특정 데이터베이스 / 테이블에 대한 사용 권한을 부여해야합니다. 사용자를 생성하는 동안이 사용자가 연결할 수있는 위치도 지정해야합니다.
CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_password';
데이터베이스가 호스팅되는 로컬 컴퓨터에서만 연결할 수있는 사용자를 만듭니다.
CREATE USER 'user'@'%' IDENTIFIED BY 'some_password';
어디서나 연결할 수있는 사용자를 만듭니다 (로컬 컴퓨터 제외).
반환 값의 예 :
쿼리 OK, 영향을받은 행 0 개 (0.00 초)
권한 추가하기
지정된 데이터베이스의 모든 테이블에 대해 공통된 기본 권한을 사용자에게 부여하십시오.
GRANT SELECT, INSERT, UPDATE ON databaseName.* TO 'userName'@'localhost';
모든 데이터베이스에있는 모든 테이블에 대해 모든 권한을 사용자에게 부여하십시오 (이에 대한주의 사항).
GRANT ALL ON *.* TO 'userName'@'localhost' WITH GRANT OPTION;
위에서 설명한 것처럼 *.*
은 모든 데이터베이스와 테이블을 대상으로하며 databaseName.*
은 특정 데이터베이스의 모든 테이블을 대상으로합니다. 과 같이 데이터베이스와 테이블을 지정할 수도 있습니다 databaseName.tableName
.
사용자가 다른 사용자에게 권한을 부여 할 필요가없는 경우 WITH GRANT OPTION
을 생략해야합니다.
권한은 다음 중 하나 일 수 있습니다 .
ALL
또는 쉼표로 구분 된 각각의 다음 조합 (비 한정적인 목록).
SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
노트
일반적으로 공백이 포함 된 열 또는 테이블 이름을 사용하거나 SQL에서 예약어를 사용하지 마십시오. 예를 들어, 같은 이름을 방지하기 위해 최선의 table
또는 first name
.
그러한 이름을 사용해야한다면 백틱 (back-tick) ``
구분자 (delimiter) 사이에 두어라. 예 :
CREATE TABLE `table`
(
`first name` VARCHAR(30)
);
이 테이블에 백틱 구분 기호가 포함 된 질의는 다음과 같습니다.
SELECT `first name` FROM `table` WHERE `first name` LIKE 'a%';
정보 스키마 예제
처리 목록
그러면 모든 활성 및 대기중인 쿼리가 해당 순서대로 얼마나 오랫동안 표시됩니다.SELECT * FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
기본적으로 초 단위이기 때문에 시간 프레임에 대한 자세한 내용입니다.
SELECT ID, USER, HOST, DB, COMMAND,
TIME as time_seconds,
ROUND(TIME / 60, 2) as time_minutes,
ROUND(TIME / 60 / 60, 2) as time_hours,
STATE, INFO
FROM information_schema.PROCESSLIST ORDER BY INFO DESC, TIME DESC;
저장 프로 시저 검색
단어 및 와일드 카드에 대한 모든 Stored Procedures
를 쉽게 검색 할 수 있습니다.
SELECT * FROM information_schema.ROUTINES WHERE ROUTINE_DEFINITION LIKE '%word%';