Mysql sql: Difference between revisions
(→ETC) |
No edit summary |
||
Line 58: | Line 58: | ||
); | ); | ||
</source> | </source> | ||
== Update == | |||
이미 존재하는 레코드의 값을 변경한다. | |||
<pre> | |||
UPDATE <table> SET <field> = "<value>" WHERE <field> > "<condition>"; | |||
조건 값보다 큰 필드의 레코드 값을 수정 | |||
UPDATE <table> SET <field> = "<value>" WHERE <field> <> "<condition>"; | |||
조건 값을 제외한 모든 레코드 값을 수정 | |||
UPDATE <table> SET <field1> = "<value>", <field2> = "<value>" WHERE <conditions>; | |||
조건에 맞는 두개의 필드를 바꿈 | |||
UPDATE <table> SET <field> = REPLACE(<field>, 'alpha', 'beta') | |||
필드의 값에 'alpha'라는 단어가 포함 되어 있다면 모두 'beta'로 수정 | |||
UPDATE <table> SET <field> = CONCAT(<field>,'alpha') WHERE <conditions> | |||
조건에 맞는 필드명의 값에 'alpha' 단어를 덧붙임 | |||
</pre> | |||
== ETC == | == ETC == |
Revision as of 22:31, 17 November 2015
Overview
Mysql 사용법 정리.
Installation
Debian 8(Jessie) 에서 Mysql-server-5.6 이상 버전을 설치하기 위해서는 다음의 스크립트를 사용하면 된다.<ref>http://blog.programster.org/debian-8-install-mysql-5-6/</ref> <source lang=bash>
- !/bin/bash
cd /tmp
- Confirm the version at http://dev.mysql.com/downloads/repo/apt/
wget -O mysql-apt-config.deb https://dev.mysql.com/get/mysql-apt-config_0.3.7-1debian8_all.deb
sudo dpkg -i mysql-apt-config.deb
- At the popup-page, select "Apply"
- Install mysql-server package
sudo apt-get update sudo apt-get install mysql-server-5.6 -y </source>
Data types
datetime
Mysql-5.6 버전 이후부터 사용가능.
foreign key
Mysql-3.23.43 버전 이후부터는 외래키 지정이 가능하다.
Options
- on delete cascade
부모의 해당키가 삭제되면 자동으로 삭제된다.
- on delete set null
부모의 해당키가 삭제되면 자동으로 null 로 만든다.
- on update cascade
부모의 해당키가 삭제되면 자동으로 갱신된다.
Example
agent id 를 외래키로 지정을 한 agent_group 테이블이다. agent_group 에 속한 agent 삭제시 같이 삭제되고, 업데이트 시, 같이 업데이트된다.
<source lang=sql> create table agent (
id int not null unique, name varchar(255),
primary key(id)
);
create table agent_group(
group_id int not null unique, agent_id int not null,
foreign key(agent_id) references agent(id) on delete cascade on update cascade,
primary key(group_id, agent_id)
); </source>
Update
이미 존재하는 레코드의 값을 변경한다.
UPDATE <table> SET <field> = "<value>" WHERE <field> > "<condition>"; 조건 값보다 큰 필드의 레코드 값을 수정 UPDATE <table> SET <field> = "<value>" WHERE <field> <> "<condition>"; 조건 값을 제외한 모든 레코드 값을 수정 UPDATE <table> SET <field1> = "<value>", <field2> = "<value>" WHERE <conditions>; 조건에 맞는 두개의 필드를 바꿈 UPDATE <table> SET <field> = REPLACE(<field>, 'alpha', 'beta') 필드의 값에 'alpha'라는 단어가 포함 되어 있다면 모두 'beta'로 수정 UPDATE <table> SET <field> = CONCAT(<field>,'alpha') WHERE <conditions> 조건에 맞는 필드명의 값에 'alpha' 단어를 덧붙임
ETC
Check table exist
특정 테이블이 있는지, 아닌지를 알고 싶을 때가 있다. 이런 경우, 다음의 쿼리를 입력하면, 테이블이 있으면 정상, 없으면 오류를 리턴한다.<ref>http://stackoverflow.com/questions/8829102/mysql-check-if-table-exists-without-using-select-from</ref> <source lang=sql> SELECT 1 FROM testtable LIMIT 1; </source>
Execute sql script
SQL 스크립트를 실행하고자 할 때는 다음과 같이 하면 된다.<ref>https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html</ref>
-- shell shell> mysql db_name shell> mysql db_name < text_file shell> mysql < text_file -- mysql mysql> source file_name mysql> \. file_name
Create Primary Key with UUID()
uuid 를 primary key로 지정할 때, UUID() 함수를 사용할 수 있다. trigger 를 만들어 놓으면, 매번 테이블에 데이터를 입력할 때마다 자동으로 UUID() 함수가 실행되어 입력되도록 할 수도 있다.<ref>http://forums.mysql.com/read.php?10,175939,176708#msg-176708</ref> <source lang=sql> DROP TABLE IF EXISTS t; CREATE TABLE t(id CHAR(128));
DELIMITER // CREATE TRIGGER init_uuid BEFORE INSERT ON t
FOR EACH ROW SET NEW.id = UUID();
// DELIMITER ;
INSERT INTO t VALUES( NULL ); SELECT * FROM t; +--------------------------------------+ | id | +--------------------------------------+ | 42114800-6f22-1000-9611-2eb9174826e3 | +--------------------------------------+ </source>
References
<references />