SELECT IFNULL(SUM(point), 0) FROM table WHERE 1 = 1

 

같이 IFNULL 을 이용하면 NULL 일경우 0으로 표기하도록 할 수 있다.


근데 위와같이 사용하면 안이쁘게 호출되니까

 

SELECT IFNULL(SUM(point), 0) as point FROM table WHERE 1 = 1


처럼 as를 써서 바꿔주자



나도 어느정도 이해가 되었던 이미지 인것같아서 스크랩해둡니다.


INNER JOIN은 JOIN과 같고,
LEFT OUTER JOIN은 LEFT JOIN과 같고,
RIGHT OUTER JOIN은 RIGHT JOIN과 같습니다.




출처 : http://rapapa.net/?p=311

TRUNCATE tableName;


만 해주면 해당 테이블에 모든 행(데이터)들이 지워집니다.

'DataBase' 카테고리의 다른 글

MySQL IFNULL을 사용해서 null일때 0으로 바꾸기  (0) 2018.08.27
JOIN 의 종류  (0) 2018.08.27
MySQL foreign key drop 오류  (0) 2018.08.27
MySQL 주간 월간 연간 평균 구하기  (0) 2018.08.27
putty 환경 mysql 명령어  (0) 2018.08.10

MySQL 에서 foreign key를 무턱대고 삭제하려고 할때


needed in a foreign key constraint

같은 오류가 발생할때가 있다.

스택오버플로우에서 검색하던중 해답을 찾고 포스팅해둡니다.

SHOW CREATE TABLE  <Table Name>

로 일단 조회를합니다.

ALTER TABLE <Table Name> DROP FOREIGN KEY <Foreign key name>

로 해당 키의 를 드랍해줍니다.

다음 인덱스가 남아있다면 인덱스까지 삭제하면 끝.


'DataBase' 카테고리의 다른 글

JOIN 의 종류  (0) 2018.08.27
MySQL TRUNCATE Table data 지우기  (0) 2018.08.27
MySQL 주간 월간 연간 평균 구하기  (0) 2018.08.27
putty 환경 mysql 명령어  (0) 2018.08.10
[DB] web에서 erd 그려주는 사이트  (0) 2018.08.09

주간

SELECT DATE_FORMAT(date,'%Y-%c %u') Month 

, AVG(battery) AVG 

FROM car_date_history 

WHERE DATE BETWEEN DATE_SUB(CURDATE(),INTERVAL 21 DAY) AND CURDATE() AND car_id = 54

GROUP 

BY WEEK(date) 

ORDER 

BY date DESC;



월간

SELECT DATE_FORMAT(date,'%Y-%c') Month 

, AVG(battery) AVG 

FROM car_date_history 

WHERE DATE BETWEEN DATE_SUB(CURDATE(),INTERVAL 90 DAY) AND CURDATE() AND car_id = 54

GROUP 

BY MONTH(date) 

ORDER 

BY date DESC;




년간

SELECT DATE_FORMAT(date,'%Y') year 

, AVG(battery) AVG 

FROM car_date_history 

WHERE DATE BETWEEN DATE_SUB(CURDATE(),INTERVAL 3 YEAR) AND CURDATE() AND car_id = 54

GROUP 

BY YEAR(date) 

ORDER 

BY date DESC;

'DataBase' 카테고리의 다른 글

JOIN 의 종류  (0) 2018.08.27
MySQL TRUNCATE Table data 지우기  (0) 2018.08.27
MySQL foreign key drop 오류  (0) 2018.08.27
putty 환경 mysql 명령어  (0) 2018.08.10
[DB] web에서 erd 그려주는 사이트  (0) 2018.08.09

데이터베이스 접속

$ 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';


위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

http://tech.zhenhua.info/2009/01/mysql-error-104528000-access-denied-for.html 에 따르면 '%'란 localhost 를 제외한 모든 호스트를 뜻한다고 한다. 즉, localhost에 대해서는 명시적으로 따로 권한을 지정해야 한다.

불필요한 사용자 삭제는

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 );

  • 현재 데이타베이스의 테이블 목록을 보고
    mysql> SHOW TABLES;

  • 테이블 구조를 살펴본다.
    mysql> EXPLAIN tablesname;
    혹은
    mysql> DESCRIBE tablename;

  • 이름을 잘못 지정했으면 이름을 변경할 수도 있다.
    mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];

  • 필요 없으면 삭제한다.
    mysql> DROP TABLE [IF EXISTS] 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.

mysql> SELECT * FROM grade LIMIT 10;


결과중 처음부터 10개만 가져오기

mysql> SELECT * FROM grade LIMIT 100, 10;


결과중 100번째부터 10개만 가져오기. 첫번째 레코드는 0번 부터 시작한다.

UPDATE

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



DELETE

mysql> DELETE FROM tablename WEHRE 조건



mysql에서 쿼리 결과 세로로 보기
-E 옵션을 줘서 실행한다.

$ mysql -E -u root -p mysql



mysql에서 발생한 오류나 경고 다시 보기

mysql> show errors;
mysql> show warnings;


출처 : http://egloos.zum.com/kwon37xi/v/1634694

'DataBase' 카테고리의 다른 글

JOIN 의 종류  (0) 2018.08.27
MySQL TRUNCATE Table data 지우기  (0) 2018.08.27
MySQL foreign key drop 오류  (0) 2018.08.27
MySQL 주간 월간 연간 평균 구하기  (0) 2018.08.27
[DB] web에서 erd 그려주는 사이트  (0) 2018.08.09

http://aquerytool.com/

'DataBase' 카테고리의 다른 글

JOIN 의 종류  (0) 2018.08.27
MySQL TRUNCATE Table data 지우기  (0) 2018.08.27
MySQL foreign key drop 오류  (0) 2018.08.27
MySQL 주간 월간 연간 평균 구하기  (0) 2018.08.27
putty 환경 mysql 명령어  (0) 2018.08.10

+ Recent posts