블로그 이미지
좋은느낌/원철
이것저것 필요한 것을 모아보렵니다.. 방문해 주셔서 감사합니다..

calendar

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

Notice

    '개발/MySQL'에 해당되는 글 1

    1. 2008.06.24 MySQL 명령어 모음
    2008. 6. 24. 15:34 개발/MySQL
    데이터베이스 접속
    $ mysql -u 사용자명 -p dbname
    설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.

    $ mysql -u root mysql


    비밀번호 변경
    MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다.
    다음 세가지 방법으로 비밀번호를 변경 할 수 있다.

    mysqladmin이용.

    $ mysqladmin -u root password 새비밀번호

    update문 이용

    $ mysql -u root mysql mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root'; mysql> FLUSH PRIVILEGES;

    Set Password 이용

    SET PASSWORD FOR root=password('새비밀번호');

    일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.


    사용자 추가/삭제
    mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';
    username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는
    데이타베이스에 대해 모든 권한을 가지고 있다.
    username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면

    GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';
    위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

    불필요한 사용자 삭제는

    mysql> DLETE FROM user WHERE user='username'; mysql> FLUSH PRIVILEGES;


    데이터베이스 생성/보기
    데이터베이스를 생성하고,

    mysql> CREATE DATABASE dbname;
    현재 존재하는 데이터베이스 목록을 보여준다.

    mysql> SHOW DATABASES;
    특정 데이타베이스를 사용하겠다고 선언한다.

    mysql> USE dbname;
    쓸모 없으면 과감히 삭제한다.

    mysql> DROP DATABASE [IF EXISTS] dbname;
    IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.


    테이블 생성/보기

    테이블을 생성하고,

    mysql> CREATE TABLE tablename ( column_name1 INT, column_name2 VARCHAR(15), column_name3 INT );
    현재 데이타베이스의 테이블 목록을 보고

    테이블 생성 추가 메모:

    CREATE TABLE free(
    uid mediumint(9) unsigned not null auto_increment,
    fid mediumint(9) unsigned not null,
    name varchar(12) not null,
    email varchar(40),
    homepage varchar(60),
    subject varchar(60) not null,
    comment text not null,
    passwd varchar(30) not null,
    signdate int(10) unsigned not null,
    ref smallint(5) unsigned not null,
    thread varchar(255) not null,
    primary key (uid)
    );

    mysql> SHOW TABLES;
    테이블 구조를 살펴본다.

    mysql> EXPLAIN tablesname; 혹은 mysql> DESCRIBE tablename;
    이름을 잘못 지정했으면 이름을 변경할 수도 있다.

    mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];

    필요 없으면 삭제한다.

    mysql> DROP TABLE tablename;


    현재 상태 보기

    mysql> status -------------- mysql Ver 11.18 Distrib 3.23.58, for pc-linux (i686) Connection id: 26 Current database: study Current user: study@localhost Current pager: stdout Using outfile: '' Server version: 3.23.58 Protocol version: 10 Connection: Localhost via UNIX socket Client characterset: latin1 Server characterset: euc_kr UNIX socket: /var/lib/mysql/mysql.sock Uptime: 2 hours 9 min 59 sec Threads: 1 Questions: 160 Slow queries: 0 Opens: 28 Flush tables: 1 Open tables: 1 Queries per second avg: 0.021 --------------


    INSERT
    mysql> INSERT INTO tablename VALUES(값1, 값2, ...);
    혹은

    mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);


    SELECT
    mysql> SELECT col1, col2, ... FROM tablename;
    컬럼명을 *로 하면 모든 컬럼 의미.

    mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;
    컬럼의 이름을 바꿔서 출력.

    mysql> SELECT * FROM tablename ORDER BY col1 DESC; mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;
    DESC는 내림차순 ASC는 오름차순.

    mysql> SELECT * FROM grade WHERE korean < 90;
    조건줘서 SELECT.



    UPDATE
    mysql> UPDATE tablename SET col1=새값 WEHER 조건


    DELETE
    mysql> DELETE FROM tablename WEHRE 조건


    ALTER
    ALTER TABLE로는 다음과 같은 것들을 수행할 수 있습니다.

    TABLE에 새로운 열을 추가하기.
    열의 폭을 늘이거나 줄이기.
    NOT NULL인 열의 속성을 NULL로 NULL인 열의 속성을 NOT NULL로 변경하기.
    열에 초기값 지정하기.
    열에 대한 제약조건 지정하기.

    ALTER TABLE에는 다음 세가지 형식이 있어요.

    ALTER TABLE table_name ADD ( ... ) ;
    ALTER TABLE table_name MODIFY ( ... ) ;
    ALTER TABLE table_name DROP PRIMARY KEY ;

    보면 알겠지만, 첫 번째 형식은 TABLE에 열, 기본 키, 또는 외부 키를 테이블에 추가하는데 사용하고, 두 번째 형식은 기존의 열들을 변경하는데 사용합니다.

    세 번째는 TABLE의 기본 키를 DROP시키는데 사용하죠~!

    그럼 예를 들께요.

    ① NOT NULL을 NULL로 바꾸기!

    ALTER TABLE student MODIFY (age NUMBER NULL ) ;

    ② NULL을 NOT NULL로 바꾸기

    ALTER TABLE student MODIFY (age NUMBER NOT NULL ) ;

    ③ 열의 폭 늘이기

    ALTER TABLE student MODIFY (name VARCHAR2( 20 ) ) ;
    DB2의 경우 alter table store alter column snd_fn set data type varchar(11)
    ④ 열의 폭 줄이기

    ALTER TABLE student MODIFY (name VARCHAR2( 15 ) ) ;

    고친 후에 DESC STUDENT ;로 확인이 가능하겠죠?

    ※ 이부분이 ORACLE 과 MySQL 이 약간 다른데요 위의 설명은 오라클 이때이고 MySQL의 경우 MODIFY 대신 CHANGE 라고 씁니다.



    -----------------------------------------------------

    MySQL Data Types

    출처: http://blog.naver.com/jmhan92/140017641549


    int: 정수형
    varchar: 가변문자형
    text: 최대 65535개의 문자를 가변적으로 입력
    tinyblob (tinytext): 이진/문자 데이타, 최대크기 255 (2^8 - 1) characters.
    blob (text): 이진/문자 데이타, 최대크기 65535 (2^16 - 1) characters.
    mediumblob (mediumtext): 이진/문자 데이타, 최대크기 16777215 (2^24 - 1) characters.
    longblob(longtext): 이진/문자 데이타, 최대크기 4294967295 (2^32 - 1) characters.

    tynyint: 부호 있는 정수 -128 ~ 127, 부호 없는 정수 0 ~255, 1 Byte
    smallint: 부호 있는 정수 -32768 ~ 32767, 부호 없는 정수 0 ~65535, 2 Byte
    mediumint: 부호 있는 정수 -8388608 ~ 8388607, 부호 없는 정수 0 ~16777215, 3 Byte
    int/integer: 부호 있는 정수 -2147483648 ~ 2147483647, 부호 없는 정수 0 ~4294967295, 4 Byte
    bigint: 부호 있는 정수 -9223372036854775808 ~ 9223372036854775807, 부호 없는 정수 0 ~18446744073709551615, 8 Byte
    float: 단일 정밀도를 가진 부동 소수점, -3.402823466E+38 ~3.402823466E+38
    double: 2 배 정밀도를 가진 부동 소수점, -1.79769313486231517E+308 ~ 1.79769313486231517E+308
    date: 날짜를 표현하는 유형, 1000-01-01 ~ 9999-12-31
    datetime: 날짜와 시간을 표현하는 유형, 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
    timestamp: 1970-01-01 00:00:00 부터 2037년 까지 표현, 4 Byte
    time: 시간을 표현하는 유형, -839:59:59 ~ 838:59:59
    year: 년도를 표현하는 유형, 1901 년 ~ 2155년
    char(m): 고정길이 문자열을 표현하는 유형, M = 1 ~255
    varchar(m): 가변길이 문자열을 표현하는 유형, M = 1 ~ 255
    tinyblob/tinytext: 255개의 문자를 저장, blob: binary large object의 약자
    blob/text: 63535개의 문자를 저장
    mediumblob/mediumtext: 16777215개의 문자를 저장
    longblob/longtext: 4294967295(4Giga)개의 문자를 저장

    테이블 크기 알아보기: show table status;
    posted by 좋은느낌/원철
    prev 1 next