BACKRUSH  대화방입장  유닉스명령  다음  자료실  Ascii Table   Exploit   원격접속  달력,시간   프로세스  
지하철노선   Whois   RFC문서   SUN FAQ   SUN FAQ1   C메뉴얼   PHP메뉴얼   너구리   아스키월드 아이피서치

글쓴이: SQL Mysql admin 조회수: 106


<SQL>

1.데이터베이스 생성 : CREATE DATABASE testdb;




2.확인 : SHOW DATABASES;

SHOW CREATE DATABASE testdb;




3.문자셋 변경

SHOW CREATE DATABASE testdb;

ALTER DATABASE testdb

CHARACTER SET euckr

COLLATE euckr_korean_ci;




4.데이터베이스 삭제

DROP DATABASE testdb;




5.테이블 생성(데이터베이스 생성 후 테이블 추가)

CREATE DATABASE testdb;

CHARACTER SET euckr

COLLATE euckr_korean_ci;




Use testdb;

CREATE TABLE student

(student_id INTEGER NOT NULL,

name Varchar(20) NOT NULL,

PRIMARY KEY (student_id)); //테이블의 기본키 설정




6.테이블 수정

ALTER TABLE student

ADD major VARCHAR(20);

DESC student; //테이블 정보 확인

SHOW TABLES; //데이터 베이스 내에 존재하는 테이블 목록 보여줌




/*테이블 속성 변경*/

ALTER TABLE student

CHANGE student_id student_id INT NOT NULL AUTO_INCREMENT,

CHANGE name name VARCHAR(10) NOT NULL;




/*테이블 속성 삭제*/

ALTER TABLE student

DROP major;




7.테이블 삭제

DROP TABLE student;







/*테이블 생성문 EX*/

Use testdb;

CREATE TABLE student

(student_id INT NOT NULL,

name VARCHAR(10) NOT NULL,

grade TINYINT NOT NULL DEFAULT 1,

dept_no INT NOT NULL,

major VARCHAR(20),

PRIMARY KEY(student_id));




CREATE TABLE department

(dept_no INT NOT NULL AUTO_INCREMENT,

dept_name VARCHAR(20) NOT NULL,

office VARCHAR(20) NOT NULL,

office_tel VARCHAR(13),

PRIMARY KEY(dept_no));




8.테이블 삽입

INSERT INTO 테이블이름 (필드1, 필드2, 필드3, ...)

VALUES (필드1의 값, 필드2의 값, 필드3의 값, ...);




/*필드 이름을 명시하여 레코드 추가하기 EX*/

set names euckr; //한글이 포함되므로 먼저 문자셋 입력

INSERT INTO department (dept_name,office,office_tel)

VALUES ('컴퓨터학과','이학관 101호','02-3290-0123');




/*필드 이름을 생략하여 레코드 추가하기 EX(모든 필드 값 입력)*/

INSERT INTO department VALUES

(NULL, '전자공학과','공학관 401호','02-3290-2345');




/*한번의 쿼리로 여러개의 데이터 추가*/

INSERT INTO 테이블이름 (컬럼1, 컬럼2, 컬럼3, ...)

VALUES (컬럼1의 값, 컬럼2의 값, 컬럼3의 값, ...),

(컬럼1의 값2, 컬럼2의 값2, 컬럼3의 값2, ...);







INSERT INTO department (dept_no, dept_name, office, office_tell)

VALUES (NULL,'법학과','법학관 101호','02-3290-1111'),

(NULL,'경영학과','경영관 203호','02-3290-2222');




set names euckr;

INSERT INTO student

VALUES (20070002,'송은이',3,4,'경영학'),

(20060001,'박미선',4,4,'경영학'),

(20030001,'이경규',4,2,'전기공학'),

(20070003,'김용만',3,2,'전자공학'),

(20060002,'김국진',3,1,'컴퓨터학');




/*MySQL 필드 삽입 방법*/

INSERT INTO 테이블 이름 SET 필드1=필드1값, 필드2=필드2값, ...;




INSERT INTO student SET student_id=20080001, name='강호동', dept_no=1;

INSERT INTO student SET student_id=20080002, name='유재석', dept_no=2, grade=1;

INSERT INTO student SET student_id=20070001, name='윤종신', dept_no=3, grade=2, major='법학';










8.데이터 수정

UPDATE 테이블이름 SET 컬럼1=컬럼1값, 컬럼2=컬럼2값, ...WHERE 조건식;




UPDATE student SET grade=grade+1; //전체 학생 학년 진급




/*특정 레코드 선택하여 수정(WHERE)*/

UPDATE student SET major='컴퓨터학' WHERE name='강호동';

UPDATE student SET major='전자공학' WHERE student_id=20080002; //유재석




9.데이터 삭제

DELETE FROM 테이블이름; //테이블에 존재하는 모든 레코드 삭제

DELETE FROM 테이블이름 WHERE 조건식;




DELETE FROM student WHERE grade > 4;




10.데이터 검색

/*수식 계산*/

SELECT 1+2;




/*레코드 조회*/

SELECT student_id, name, grade, major FROM student;




/*전체항목 조회*/

SELECT*FROM student;







/*조건검색(WHERE절)*/

SELECT name FROM student WHERE grade >=1 and grade <=3;

SELECT name FROM student WHERE grade BETWEEN 1 AND 3;

SELECT name FROM student WHERE grade IN (1,2,3);




/*문자열 사용(LIKE절)*/

SELECT name FROM student WHERE name LIKE '김%';

SELECT name FROM student WHERE name LIKE '%용%';




/*레코드를 그룹화 하여 결과 얻기(GROUP BY절)*/

:특정 필드를 기준으로 같은 값끼리 그룹화




SELECT dept_no, COUNT(*) FROM student GROUP BY dept_no;

SELECT grade, SUM(grade) FROM student GROUP BY grade;

//COUNT(*) : 검색된 레코드의 수를 계산하는 내장 함수

SUM(), AVG, MIN, MAX




/*HAVING절 - GROUP BY 조건 검색*/

SELECT dept_no, COUNT(*) FROM student

GROUP BY dept_no HAVING COUNT(*) >=2;




/*검색 & 정렬*/

SELECT name FROM student ORDER BY name ASC; //오름차순 정렬, 기본정렬방식(생략가능)

SELECT name FROM student ORDER BY name DESC; //내림차순 정렬




/*검색수 제한(LIMIT절)*/

SELECT name FROM student LIMIT 1; //첫번째 레코드만 검색

SELECT name FROM student LIMIT 0, 5; //0~5




/*JOIN - 정규화를 통해 분리된 테이블 합치기*/

SELECT name, dept_name FROM student, department

WHERE student.dept_no = department.dept_no;

SELECT S.name, D.dept_name FROM student S, department D

WHERE S.dept_no = D.dept_no;

SELECT S.name, D.dept_name FROM student AS S, department AS D

WHERE S.dept_no = D.dept_no;

SELECT S.name, D.dept_name FROM student AS S INNER JOIN department AS D

ON S.dept_no=D.dept_no;




*내부조인 : 결합된 레코드의 교집합만 보인다.




*외부조인 : 조인 조건에 일치하지 않는 테이블의 레코드를 추가하고 채우지 못한

정보는 모두 null로 대체 한다.

SELECT S.name, D.dept_name FROM student S LEFT JOIN department D

ON S.dept_no = D.dept_no; //왼쪽 테이블에 남아있는 레코드 처리

//LEFT JOIN, RIGHT JOIN, CROSS JOIN(내부 조인과 동일하게 동작)




/*NATURAL - 정규화를 통해 분리된 테이블 병합*/

SELECT * FROM student NATURAL JOIN department;

SELECT * FROM student NATURAL LEFT JOIN department;

SELECT * FROM student NATURAL RIGHT JOIN department;




/*DISTINCT - 중복된 레코드 제거*/

SELECT DISTINCT major FROM student;




/*UNION - 여러개의 SELECT 결과를 하나로 합치기 위한 키워드*/

SELECT name, major, grade FROM student WHERE dept_no=1 UNION

SELECT name, major, position FROM professor WHERE dept no=1;







11.권한부여

GRANT ALL ON *.* TO brown@'%'

IDENTIFIED BY 'pass1234' WITH GRANT OPTION;

관련글 : 없음 글쓴시간 : 2017/06/27 16:27 from 192.168.0.1

  목록보기 새글 쓰기 지우기 응답글 쓰기 글 수정  
BACKRUSH  대화방입장  유닉스명령  다음  자료실  Ascii Table   Exploit   원격접속  달력,시간   프로세스  
지하철노선   Whois   RFC문서   SUN FAQ   SUN FAQ1   C메뉴얼   PHP메뉴얼   너구리   아스키월드 아이피서치