레이블이 mariaDB인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mariaDB인 게시물을 표시합니다. 모든 게시물 표시

2016. 8. 5.

[mariaDB] 중복키 관리

웹상에서 계속 데이터를 받아와서 DB에 업로드를 하는데 중복된 값이 나오면 이를 무시하고 덮어씌울 수가 있습니다. 이를 이용하면 간단한 insert를 하기에 편합니다.

INSERT IGNORE

INSERT IGNORE into 테이블명 values ()

이렇게 하면 에러 없이 덮어씌여 버립니다.

ON DUPLICATE UPDATE

중복되는 값이 존재하면 UPDATE 하는 방법도 있다.

insert into DB명
    VALUES (?,?,?,?,?)
    ON DUPLICATE KEY
    UPDATE CATEGORY=?, HIT=?

만약에 중복값이 존재하면 CATEGORY, HIT 값을 업데이트하라는 명령어 입니다.

REPLACE INTO

REPLACE INTO DB명
    VALUES (?,?,?,?)

기존에 있던 키는 지워지고 새로운 키가 등록이 된다.
AUTO_INCREMENT 를 기본으로 등록하고 있다면, 기존에 있는 번호가 사라지고 새로운 번호로 등록되는 것을 확인 할 수 있다.

2016. 8. 2.

[mariaDB] 기본명령어

mariaDB 명령어

명령어들이 생각나지 않을 때 한번 보기 위해서.

ALTER 명령어

테이블 이름 변경

  • ALTER TABLE [테이블이름] REANME [바꿀이름]
  • RENAME TABLE [테이블이름] TO [바꿀이름]

ADD COLUMN

  • ALTER TABLE [테이블이름] ADD COLUMN [칼럼이름] [칼럼타입]
  • ALTER TABLE [테이블이름] ADD COLUMN [칼럼이름] [칼럼타입] AFTER [칼럼이름]
  • ALTER TABLE [테이블이름] ADD COLUMN [칼럼이름] [칼럼타입] FIRST

DELETE COLUMN

  • ALTER TABLE [테이블명] DROP COLUMN [COLUMN이름]

COLUMN CHANGE

  • ALTER TABLE [테이블명] MODIFY [COLUMN이름] [NEW COLUMN이름]
  • ALTER TABLE [테이블명] CHANGE [COLUMN이름] [NEW COLUMN이름] [NEW COLUMN TYPE]

ADD INDEX

  • ALTER TABLE [테이블명] ADD INDEX([컬럼이름])

DELETE INDEX

  • ALTER TABLE [테이블명] DROP INDEX [컬럼이름]
  • DROP INDEX [인덱스명] ON [테이블명]

SET PRIMARY KEY

  • ALTER TABLE [테이블명] ADD PRIMARY KEY([컬럼이름]) [컬럼이름]

DELETE PRIMARY KEY

  • ALTER TABLE [테이블명] DROP PRIMARY KEY
CREATE DATABASE mydb; -- mydb 데이터베이스 생성
USE mydb; -- 기본 데이터베이스로 mydb를 지정
CREATE TABLE mytable ( id INT PRIMARY KEY, name VARCHAR(20) ); -- mytable 테이블 생성
INSERT INTO mytable VALUES ( 1, 'Will' ); -- 데이터 입력
INSERT INTO mytable VALUES ( 2, 'Marry' ); 
INSERT INTO mytable VALUES ( 3, 'Dean' );
SELECT id, name FROM mytable WHERE id = 1;
UPDATE mytable SET name = 'Willy' WHERE id = 1;
SELECT id, name FROM mytable;
DELETE FROM mytable WHERE id = 1;
SELECT id, name FROM mytable;
DROP DATABASE mydb;
SELECT count(1) from mytable; gives the number of records in the table
INSERT into DB명 VALUES (?,?,?,?,?) ON DUPLICATE KEY UPDATE CATEGORY=?, HIT=?
REPLACE INTO DB명 VALUES (?,?,?,?)

2016. 7. 31.

[GOLANG] MYSQL, MARIADB 원격접속 허용하기

개발환경은 다른 곳에 라즈베리파이를 놓고, 다시 다른 곳에서 golang을 통해서 접속을 하려고 합니다.

모든 초반 작업은 root 계정에서 합니다.

 $ mysql -u root -p

DB를 생성

MariaDB [(none)]> CREATE DATABASE test;
MariaDB [(none)]> flush privileges;

mysql 외부 접속을 위한 아이디 생성

를 통해 관리자 아이디로 mysql(mariaDB)에 접속을 하고, 계정을 생성합니다.

내부 접속용 아이디

MariaDB [(none)]> create user ‘이름’@‘localhost’ identified by ‘비밀번호’;
MariaDB [(none)]> flush privileges;

localhost 가 들어가 있으면 내부접속만 허용하는 옵션입니다.

외부 접속용 아이디

MariaDB [(none)]> create user '이름'@'%' identified by '비밀번호'
MariaDB [(none)]> flush privileges;

% 이 들어가면 모든 아이피의 접속을 허용한다는 뜻입니다.
특정 IP에 권한을 주려면 ‘123.123.123.123’ 과 같은 권한을 추가하면 됩니다.

DB 계정에 권한설정

grant all privileges on 디비명.* to 이름@'%' identified by ‘비밀번호';
MariaDB [(none)]> flush privileges;

mysql 설정하기

$sudo vi /etc/mysql/my.cnf

bind-address = 127.0.0.1설정의 맨 앞에 #을 넣어서 주석처리 합니다.

raspberry 에 mysql 포트 열기

mysql 기본포트는 3306를 사용하고 있습니다.
3306 포트를 열어줍니다.

$ iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
$ iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT
$ iptables-save

golang 소스

go get github.com/go-sql-driver/mysq;

를 통해서 소스 mysql 접속 소스를 다운받습니다. ($GOPATH) 폴더에 자동으로 설치가 됩니다.

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "아이디:비밀번호@tcp(접속주소:포트)/디비명")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    var version string
    db.QueryRow("SELECT VERSION()").Scan(&version)
    fmt.Println("Connected to:", version)
}

sql.Open(“mysql”, “아이디:비밀번호@tcp(접속주소:포트)/디비명”)
포트번호까지 전부 적어줘야 합니다.