CSE/MySQL 검색 결과

7개 발견
  1. 미리보기
    2015.06.12 - Palpit

    [MySQL] 저장 프로시저(Stored Procedure) & 저장 함수(Stored Function) & 트리거(Trigger)

  2. 미리보기
    2015.06.12 - Palpit

    [MySQL] 뷰(View)

  3. 미리보기
    2015.06.12 - Palpit

    [MySQL] UNION, JOIN, SUB QUERY

  4. 미리보기
    2015.06.12 - Palpit

    [MySQL] 수정(Update) & 삭제(Delete)

  5. 미리보기
    2015.06.12 - Palpit

    [MySQL] 조회

  6. 미리보기
    2015.06.12 - Palpit

    [MySQL] 테이블 변경, 색인, 기본키

  7. 미리보기
    2015.06.12 - Palpit

    [MySQL] 데이터베이스 & 테이블

조회수 확인



저장 프로시저 폼


 CREATE PROCEDURE 프로시저명()

 BEGIN

     SQL 문1

     SQL 문2

 END



저장 프로시저 생성


 

1
2
3
4
5
6
7
8
9
 
DELIMITER //
CREATE PROCEDURE pr1()
BEGIN
    select * from sale;
    select * from employ;
END
//
DELIMITER ;
cs





저장 프로시저 호출


 

1
2
3
CALL procedure_name;
 
CALL pr1;
cs






 




설정한 값 이상인 레코드만 표시하는 프로시저


1
2
3
4
5
6
7
8
9
10
11
DELIMITER //
 
CREATE PROCEDURE pr2(d INT)
BEGIN
    select * from sale where sales >= d;
END
//
 
DELIMITER ;
 
CALL pr2(100);
cs
 


 





프로시저 내용 표시


1
SHOW CREATE PROCEDURE pr2;
cs
 


 




프로시저 삭제



1
2
DROP PROCEDURE pr1;
DROP PROCEDURE pr2;
cs
 






저장 함수 폼


 CREATE FUNCTION 함수명(인수 자료형) RETURNS 반환값자료형

 BEGIN

     SQL 문.. 

     RETURN 반환값.식

 

 END

 




저장 함수로 표준 체중 계산


 

1
2
3
4
5
6
7
8
9
DELIMITER //
 
CREATE FUNCTION fWeight(height INT) RETURNS DOUBLE
BEGIN
    RETURN height * height * 22 / 10000;
END
//
 
DELIMITER ;
cs



 

1
select fWeight(175);
cs




 




레코드의 평균값 반환 저장 함수


 

1
2
3
4
5
6
CREATE FUNCTION fAverage() RETURNS DOUBLE
BEGIN
    DECLARE r DOUBLE;
    SELECT AVG(sales) INTO r FROM sale;
    RETURN r;
END
cs



 

1
select fAverage();
cs



 




저장 함수 삭제


1
2
3
4
DROP FUNCTION function_name;
 
DROP FUNCTION fAverage;
DROP FUNCTION fWeight;
cs
 







트리거 폼


 CREATE TRIGGER ​트리거_이름 BEFORE(또는 AFTER) delete 등의 명령

 ON 테이블_이름 FOR EACH ROW

 BEGIN     

     변경 전(OLD.칼럼_이름) 또는 변경 후(NEW.칼럼_이름)을 이용한 처리

 

 

 END



1
2
3
4
5
6
7
8
9
DELIMITER //
 
CREATE TRIGGER tr1 BEFORE DELETE ON employ FOR EACH ROW
BEGIN
    INSERT INTO sale_copy VALUES(OLD.number, OLD.name, OLD.age);
END
//
 
DELIMITER ;
cs
 


1
delete from sale;
cs

 



 

1
select * from sale_copy
cs






 

트리거 확인


1
show triggers;
cs
 


 


트리거 삭제



1
2
 
drop trigger tr1;
cs
 







다른 카테고리의 글 목록

CSE/MySQL 카테고리의 포스트를 톺아봅니다

[MySQL] 뷰(View)

2015.06.12 16:26 - Palpit
조회수 확인



뷰 생성하기


 

1
CREATE VIEW emp_view AS select name, age FROM employ;
cs




 



뷰 칼럼 값 변경


1
UPDATE emp_view SET name='팀장 강신우' WHERE name='강신우'
cs
 




 


뷰 칼럼을 변경하면 원본도 영향을 끼친다



조건 설정하여 뷰 생성


1
2
3
4
5
create view v2 as 
select sale.number, employ.name, sale.sales
from sale
join employ using(number)
where sale.sales >= 100;
cs
 



 



뷰 삭제


1
2
DROP VIEW view_name;
 
cs
 







다른 카테고리의 글 목록

CSE/MySQL 카테고리의 포스트를 톺아봅니다

[MySQL] UNION, JOIN, SUB QUERY

2015.06.12 16:25 - Palpit
조회수 확인

이번 장을 진행하기전에 기존의 sale table을 삭제하고 


아래 새로운 테이블을 작성한다.



 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
create table sale(
    number varchar(10),
    sales int,
    month int
);
 
create table employ(
    number varchar(10),
    name varchar(10),
    age int
);
 
create table another_employ(
    number varchar(10),
    name varchar(10),
    age int
);
 
create table loc(
    number varchar(10),
    city varchar(5)
);
cs




 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
insert into sale values('A103'1014);
insert into sale values('A102'545);
insert into sale values('A104'1814);
insert into sale values('A101'1844);
insert into sale values('A103'175);
insert into sale values('A101'3005);
insert into sale values('A102'2056);
insert into sale values('A104'935);
insert into sale values('A103'126);
insert into sale values('A107'876);
 
 
insert into employ values('A101''강신우'49);
insert into employ values('A102''김기덕'28);
insert into employ values('A103''김민호'20);
insert into employ values('A104''문소리'23);
insert into employ values('A105''박문수'35);
 
insert into another_employ values('A106''권명철'26);
insert into another_employ values('A107''김우진'24);
insert into another_employ values('A108''남수현'23);
insert into another_employ values('A109''박지수'25);
insert into another_employ values('A110''서연재'27);
 
 
insert into loc values('A101''서울');
insert into loc values('A102''부산');
insert into loc values('A103''대구');
insert into loc values('A104''대전');
insert into loc values('A105''인천');
 
cs






 여러 개의 추출 결과를 함께 표시(UNION)


 

1
2
3
4
5
select column_name1 FROM table_name UNION SELECT column_name2 FROM table_name_1;
 
SELECT * FROM employ 
UNION
SELECT * FROM another_employ;
cs



 




 여러 개의 테이블 결합(Join)



1
2
3
4
5
6
7
8
9
10
SELECT column_name
FROM table_name
JOIN joined_table_name
ON table_name.column = joined_table_name.column
 
 
select *
from sale
JOIN employ
ON sale.number = employ.number;
cs

 






  

 내부 조인(inner-Join)


1
2
select * from sale INNER JOIN employ ON sale.number = employ.number;
 
cs
 



 



 결합한 테이블에 WHERE 조건 설정


1
2
3
4
5
 
select sale.number AS 사원번호, employ.name AS 이름, sale.sales AS 매출
from sale
join employ USING(number)
WHERE sale.sales >= 100
cs
 



 



 여러 테이블에서 데이터 추출


1
2
3
4
5
 
select sale.number, sale.sales, employ.name, loc.city
from sale
join employ using (number)
join loc using (number)
cs
 



 





 하위 질의 


1
2
select * from sale 
where sales in (select max(sales) from sale);
cs

 








 

 평균 이상의 레코드 추출 - 하위 질의 


1
select * from employ where age >= (select avg(age) from employ)
cs
 

 



다른 카테고리의 글 목록

CSE/MySQL 카테고리의 포스트를 톺아봅니다

[MySQL] 수정(Update) & 삭제(Delete)

2015.06.12 16:24 - Palpit
조회수 확인

조회때 작성한 테이블에서 수정한다. 추가적으로 note 컬럼을 varchar(15)로 추가시켜준다.


수정전:




 


수정후:





 컬럼 데이터 한번에 수정


1
UPDATE sale SET note = '특이사항 없음';
cs










 조건일치 데이터만 수정


1
UPDATE sale SET note = '우수' WHERE sales >= 100;
cs








 하위 3건만 수정


1
UPDATE sale set note='힘내!' ORDER BY sales LIMIT 3;
cs




 



 특정 레코드 삭제


1
DELETE FROM sale WHERE sales < 50
cs

 





 




다른 카테고리의 글 목록

CSE/MySQL 카테고리의 포스트를 톺아봅니다

[MySQL] 조회

2015.06.12 16:21 - Palpit
조회수 확인


예제 테이블 작성 및 데이터 추가


 

1
2
3
4
5
6
 
create table sale(
    number varchar(10),
    sales int,
    month int
)
cs



 

1
2
3
4
5
6
7
8
9
10
11
12
insert into sale values('A101'1014);
insert into sale values('A102'3424);
insert into sale values('A103'515);
insert into sale values('A104'925);
insert into sale values('A105'3304);
insert into sale values('A106'406);
insert into sale values('A107'114);
insert into sale values('A108'196);
insert into sale values('A109'337);
insert into sale values('A110'127);
insert into sale values('A111'875);
 
cs






칼럼 순서 바꿔서 표시


 

1
2
select sales, number from sale;
 
cs


기존의 number, sales 순서를 뒤바꿔서 조회.




 




칼럼 별명(alias) 사용하여 표시


1
2
select number AS 사원번호, sales AS 매출 from sale
 
cs

 







칼럼 계산하여 표시


 

1
2
 
select sales * 1000 AS 매출 from sale
cs







함수 사용하여 표시


 

1
select AVG(sales) from sale
cs


AVG, SUM, COUNT 등등 여러개의 함수가 있다.







레코드 수를 제한해서 표시


1
select * from sale LIMIT 3
cs
 




 




조건 조회


 

1
2
 
select * from sale WHERE sales >= 100;
cs





 




 

1
select * from sale WHERE sales BETWEEN 50 AND 150;
cs






 



 

1
select * from sale WHERE number LIKE 'A11%'
cs





 



CASE WHEN 조회


1
2
3
4
5
6
7
8
select number,
    CASE
        WHEN sales >= 100 then '많음'
        WHEN sales >= 50 then '중간'
        ELSE '적음'
    END
 
from sale
cs
 




 



정렬 조회


 

1
select * from sale order by sales desc;
cs


desc: 내림차순, asc: 오름차순





    



레코드 범위 지정 조회


1
select * from sale order by sales DESC LIMIT 2 OFFSET 3
cs

 





 



다른 카테고리의 글 목록

CSE/MySQL 카테고리의 포스트를 톺아봅니다
조회수 확인
ALTER TABLE 명령


 - 칼럼의 정의를 변경할 때          :  ALTER TABLE ... MODIFY ...

 - 칼럼을 추가할 때                  :  ALTER TABLE ... ADD ...

 - 칼럼의 이름과 정의를 변경할 때  :  ALTER TABLE ... CHANGE ...

 - 칼럼을 삭제할 때                  :  ALTER TABLE ... DROP ...

    



칼럼의 자료형 변경


 

1
ALTER TABLE tb1 MODIFY name VARCHAR(100);
cs


 테이블 tb1의 name 칼럼의 자료형을 VARCHAR(100)으로 변경.




칼럼 추가


 

1
2
ALTER TABLE tb1 ADD birth DATETIME;
 
cs


 테이블 tb1에 birth 칼럼 추가.



칼럼 이름과 자료형, 위치 변경


1
ALTER TABLE tb1 CHANGE birth birthdate DATE;
cs

 


 테이블 tb1의 birth 칼럼을 birthdate로 변경하고, 자료형을 DATE로 변경.




칼럼 삭제


1
ALTER TABLE tb1 DROP birthdate;
cs
 

 테이블 tb1의 birthdate 칼럼을 삭제.





 

기본키 생성


 

1
2
3
4
CREATE TABLE eigen(
    a INT PRIMARY KEY,
    b VARCHAR(10)
)
cs


 a를 기본키로 생성.



고유키 생성


1
2
3
4
CREATE TABLE uniq(
    a INT UNIQUE,
    b VARCHAR(10)
)
cs
 

 a를 고유키로 생성.










자동 번호 생성 기본 키 테이블


1
2
3
4
CREATE TABLE series(
    a INT AUTO_INCREMENT PRIMARY KEY,
    b VARCHAR(10)
)
cs
 

 a는 자동으로 증가하며 생성되는 기본키로 생성.



DEFAULT 값이 있는 컬럼 테이블


1
2
3
4
CREATE TABLE defl(
    a INT PRIMARY KEY,
    b VARCHAR(10DEFAULT 'N/A'
)
cs
 

 b는 미 입력시 N/A으로 표기됨.




색인 설정


1
2
3
CREATE INDEX index_name ON table_name(column_name);
 
CREATE INDEX idx_tb1 ON tb1(number);
cs
 

 테이블 tb1에 대한 인덱스 idx_tb1을 생성.



색인 표시


1
2
SHOW INDEX FROM table_name;
 
cs
 

 table 명으로 인덱스 검색.






다른 카테고리의 글 목록

CSE/MySQL 카테고리의 포스트를 톺아봅니다

[MySQL] 데이터베이스 & 테이블

2015.06.12 16:18 - Palpit
조회수 확인



데이터 베이스 생성 

'data_base_name' 란에 자신이 만들고자하는 DB 명을 입력.


 

1
2
3
create database 'data_base_name';
 
create database db1;
cs





데이터 베이스 확인


 

1
show databases;
cs




데이터 베이스 지정

'data_base_name'란에 자신이 사용하고자하는 DB 명을 입력.


 

1
2
3
use 'data_base_name';
 
use db1;
cs




현재 사용하고 있는 DB 표시

 

1
SELECT database();
cs






테이블 생성 

추가적으로 옵션을 줄수있다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE 'table_name' (
    'column_name1' 'datatype1'
    'column_name2' 'datatype2'
    ....
);
 
 
CREATE TABLE tb1 (
    number VARCHAR(10),
    name VARCHAR(10),
    age INT
);
 
cs

 

 




모든 테이블 표시

 

1
2
SHOW tables;
 
cs




테이블 칼럼 구조 확인

 

1
2
3
DESC 'table_name';
 
DESC tb1;
cs





테이블에 데이터 추가(INSERT)

 

1
2
3
4
5
6
7
8
9
10
INSERT INTO 'table_name' VALUES(data1, data2, ...);
 
INSERT INTO tb1 VALUES('A101''강신우'40);
INSERT INTO tb1 VALUES('A102''김기덕'55);
INSERT INTO tb1 VALUES('A103''김민호'28);
INSERT INTO tb1 VALUES('A104''문소리'30);
INSERT INTO tb1 VALUES('A105''박문수'35);
 
 
 
cs



혹은 auto_increment로 자동으로 증가하는 기본키를 설정하여 데이터를 추가할 경우는

컬럼 이름을 지정하여 추가할 수 있음.


 

1
2
3
INSERT INTO 'table_name'('column_name1','column_name2',...) VALUES(data1, data2, ...);
 
INSERT INTO tb1(number, name, age) VALUES('A105''박문수'35);
cs






데이터 표시

특정 컬럼만 조회할수 있거나, * 를 이용하여 전체 컬럼을 조회


 

1
2
3
4
SELECT column_name1, column_name2 FROM table_name;
 
SELECT age, name FROM tb1;
SELECT * FROM tbl;
cs




테이블 복사

 

1
2
CREATE TABLE tb1A SELECT * FROM tb1;
 
cs



다른 카테고리의 글 목록

CSE/MySQL 카테고리의 포스트를 톺아봅니다