Mysql sql: Difference between revisions
No edit summary |
No edit summary |
||
Line 77: | Line 77: | ||
조건에 맞는 필드명의 값에 'alpha' 단어를 덧붙임 | 조건에 맞는 필드명의 값에 'alpha' 단어를 덧붙임 | ||
</pre> | </pre> | ||
== View == | |||
== ETC == | == ETC == | ||
Line 118: | Line 121: | ||
+--------------------------------------+ | +--------------------------------------+ | ||
</source> | </source> | ||
== See also == | |||
* http://sjs0270.tistory.com/54 - 뷰(View) | |||
== References == | == References == |
Revision as of 12:11, 24 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' 단어를 덧붙임
View
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>
See also
- http://sjs0270.tistory.com/54 - 뷰(View)
References
<references />