INSERT INTO llx_user_rights (rowid, entity, fk_user, fk_id)

select rowid+30000 as rowid, entity, 16 as fk_user, fk_id from llx_user_rights

where fk_user = 13

and fk_id not in (select fk_id from llx_user_rights where fk_user = 16)



UPDATE mp_timesheet AS U1, mp_timesheet AS U2 

SET U1.timesheet_date = DATE(U2.timesheet_in)

WHERE U1.timesheet_id = U2.timesheet_id




'Skill > Database' 카테고리의 다른 글

Select Insert Example  (0) 2017.12.21
[MySQL] 8.1.1 Obtaining Auto-Increment Values  (0) 2017.07.21
mac을 위핸 sql tool  (0) 2015.10.26
mysql 무료 툴 간단 벤치마킹  (0) 2015.10.26
[Mysql] Function 권한 설정  (0) 2015.10.13
MySQL 설치와 초기 설정  (1) 2015.09.23

Obtaining the value of column that uses AUTO_INCREMENT after an INSERT statement can be achieved in a number of different ways. To obtain the value immediately after an INSERT, use a SELECT query with the LAST_INSERT_ID() function.

For example, using Connector/ODBC you would execute two separate statements, the INSERT statement and the SELECT query to obtain the auto-increment value.

INSERT INTO tbl (auto,text) VALUES(NULL,'text');
SELECT LAST_INSERT_ID();

If you do not require the value within your application, but do require the value as part of another INSERT, the entire process can be handled by executing the following statements:

INSERT INTO tbl (auto,text) VALUES(NULL,'text');
INSERT INTO tbl2 (id,text) VALUES(LAST_INSERT_ID(),'text');

Certain ODBC applications (including Delphi and Access) may have trouble obtaining the auto-increment value using the previous examples. In this case, try the following statement as an alternative:

SELECT * FROM tbl WHERE auto IS NULL;

This alternative method requires that sql_auto_is_null variable is not set to 0. See Server System Variables.

See also How to Get the Unique ID for the Last Inserted Row.








Reference : https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-usagenotes-functionality-last-insert-id.html








'Skill > Database' 카테고리의 다른 글

Select Insert Example  (0) 2017.12.21
[MySQL] 8.1.1 Obtaining Auto-Increment Values  (0) 2017.07.21
mac을 위핸 sql tool  (0) 2015.10.26
mysql 무료 툴 간단 벤치마킹  (0) 2015.10.26
[Mysql] Function 권한 설정  (0) 2015.10.13
MySQL 설치와 초기 설정  (1) 2015.09.23

소프트웨어 이름 : Sequel Pro

제  작 : Sequel Pro & CocoaMySQL Teams 

홈페이지 : http://www.sequelpro.com

운영체제 : MacOS X

분  류 : DB GUI 툴

가격 / 라이선스 : 프리웨어 (기부) / MIT License



MS SQL Server를 사용해 본 사람이라면, 기본적으로 설치되는 쿼리 분석기(Query Analyzer)를 많이 사용했을 것입니다. (사실 MS 툴들이 일단 한번 설치하면 토탈 솔루션으로 제공이 되니 이것저것 다른 생각 할 것 없이 쉽게 집중할 수 있는 장점이 있는것 같습니다.)


그러나 MySQL이든, MariaDB든 아쉽게도 MS의 쿼리 분석기와 같은 GUI 툴을 기본적으로 제공하지 않고 있습니다. (사실 Oracle도 마찬가지고요. 요즘은 어떤지 모르겠는데, 예전에 다니던 회사에서 보니 TOAD라는 툴을 많이 쓰는것 같더군요. 오래전 일이지만...)


그렇다고, 터미널에서 콘솔상에서 일일이 텍스트화면을 보면서 작업하기에는 너무 무식한 방법인것 같고요.


phpMyAdmin을 쓰기도 하지만, 아무래도 웹상에서 사용하는 툴이라 한계가 있습니다. 보안상 괜찮을지도 사실 걱정이 되고요.


여튼, 직접 지원이 안되서 아쉽지만 써드 파티들이 만들어준 툴들을 사용하면 어느정도 편리하게 GUI 방식으로 DBMS를 관리 할 수 있습니다.


MySQL을 지원하는 툴들도 여러가지가 있습니다만, 저는 맥을 주로 사용하기 때문에 맥에서 사용할 만한 쓸만한 툴이 없을까 찾아보았습니다.


그래서 Sequel Pro 라는 툴을 찾아 내었는데요, 맥용 네이티브 어플리케이션으로 만들어졌기 때문에 시원시원하게 쓸 수 있을 것 같습니다. (다른 툴도 하나 있던데, Java로 되어 있어서 아무래도 시원스럽지는 못하더군요.)


MySQL GUI 둘이지만, MySQL과 호환되는 MariaDB에서도 사용할 수 있습니다.


Donate(기부) 방식의 오픈소스 툴이라 무료로 사용 가능하며, 원하면 댓가를 기부 할 수도 있습니다. MIT License로 소스가 공개되어 있기 때문에 필요하다면 수정하거나 확장해서 사용해도 되겠군요.


다만, 업데이트 주기가 빠르지는 않은것 같습니다. 버그도 존재 하기도 하고요. 하지만 무료 툴로써 이정도면 소규모에서 쓰기에는 괜찮을 것 같습니다.


공식 웹사이트는 http://www.sequelpro.com 입니다.



(출처 : http://www.sequelpro.com )


위 사이트에서 다운로드 받을 수 있고요, 현재 MacOS X 10.9 매버릭스에서 사용하고 있는데, 아직까지는 큰 문제는 안보이는 것 같습니다.


다만, SSH 접속 즐겨찾기 만드는 부분이 약간 문제가 있네요.


새로 즐켜 찾기를 만들기 위해 [+]를 누르고 바로 [SSH] 탭을 누르면?




아랫 부분 입력창이 짤리는 현상이 일어나네요. 이게 MacOS X 산사자 버전에서는 안그랬었던것 같은데... (빨간줄 그어놓은 부분이 늘어나면서 입력 항목이 더 늘어나야 정상입니다.)


그렇지만, 나오게 하는 방법은 있더군요. (이래저래 하다 보니 되더라고요)


어떻게 하면 되냐면요.... 지금 이 상태에서...



[Standard] 탭을 누르고, 위에 빨간 네모 친 부분중에 Name 항목 'New Favorite'라고 기본으로 적혀 있는 내용을 임의의 내용으로 바꿉니다. 그러면 아래 빨간 네모처럼 [Connect], [Add to Favorites]등등 버튼들이 나옵니다.


이 상태에서 [SSH] 탭을 다시 눌러 보면?



이렇게 아까는 나오지 않던 아래 입력 하는 부분들도 나오게 됩니다. 이 무슨 ... --;


여튼, 요즘은 서버에 SSH로 접속들 많이 하지요? 그런 경우 위 항목을 다 채우면 SSH로 서버의 MySQL 또는 MariaDB에 접속 할  있습니다.


참고로 간략하게 항목들을 설명하면,

  • Name : 왼쪽 즐겨찾기에 들어갈 이름입니다. 아무거나 쉽게 알수 있는 이름을 지어주면 됩니다.
  • MySQL Host : MySQL 또는 MariaDB가 있는 서버의 주소 입니다. 만약에 test.com 에 DBMS가 있다면, test.com 으로 입력하면 됩니다. (IP만 있다면, IP 주소로 입력)
  • Username : DB 접속 유저 이름
  • Password : DB 접속 유저의 비밀번호
  • Database : 굳이 입력하지 않아도 접속후에 선택하면 됩니다.
  • Port : 기본 Port번호를 사용하지 않는다면 Port번호 입력
  • SSH Host : SSH 접속 주소 (서버 주소가 test.com이라면, test.com으로 입력)
  • SSH User : 서버 로그인 계정
  • SSH Password : 서버 로그인 계정 호
  • SSH Port : SSH 포트를 다르게 했다면 포트 번호 입력

항목들 모두 입력하고 [Test Connection] 버튼 누르면 정상적으로 접속이 되는지 확인도 해 줍니다.


다 입력 했으면 [Save changes]를 눌러 저장합니다.


이제 [CONNECT] 버튼으로 접속 하면,



이렇게 Sequel Pro의 GUI가 반겨주네요.


Choose Database.. 에서 사용하고 싶은 DB를 선택하거나 추가하거나 삭제 할 수 있습니다.



이런식으로 말이죠.



이렇게 DB 유저를 생성하거나 권한을 조정하거나 하는 유저 관리도 쉽게 되어 있고요,



당연히 쿼리도 쉽게 됩니다. 결과도 테이블 형태로 깔끔하게 볼 수도 있고요.


여기서 세세한 사용법까지 얘기 할 수는 없지만, 한번 써보는것도 괜찮을 것 같습니다.














출처 : http://wingsnote.com/22
















'Skill > Database' 카테고리의 다른 글

Select Insert Example  (0) 2017.12.21
[MySQL] 8.1.1 Obtaining Auto-Increment Values  (0) 2017.07.21
mac을 위핸 sql tool  (0) 2015.10.26
mysql 무료 툴 간단 벤치마킹  (0) 2015.10.26
[Mysql] Function 권한 설정  (0) 2015.10.13
MySQL 설치와 초기 설정  (1) 2015.09.23

간간히 DB 작업을 위해서 SQLGate를 사용하였다.

회사에서 사용하기위해서 작년부터 프리랜서 버전을 구입하려하였는데..

늘 시기를 놓치곤 하였다.

약 5년 정도 된것 같다.. 너무도 익숙해 져서.. 다른것을 사용하기가..

프리랜서 버전은 앞으로 안판다 하여.. 어쩔수 없이.. 이제 놓아 주려 한다..


새로운 툴을 찾아 보는 중이다..



1.  HeidiSQL

http://www.heidisql.com/download.php

장 : 가볍다. 빠른 업데이트(단점이 될수도). 무설치 버젼존재, gui로 데이터 입력,수정,삭제 가능 
단 : 쿼리 실행 단축키가 하나만 존재(F9), 다수의 실행 결과값을 클립보드로 복사가 불가능함(치명적인 단점), sql 창이 하나만 존재

2.   MySql WorkBench

http://www.mysql.com/downloads/workbench/

장 : HeidiSQL의 단점을 모두 커버함. 무설치 버젼. 쿼리외 다른 db관리 기능 지원, 깔금한 화면,
단 : 실행시 닷넷 프레임웍 4.0 요구. 약간 무거움,gui를 통한 데이터 수정 삭제 불가. 

3. Toad for MySQL

http://www.toadworld.com/DOWNLOADS/Freeware/ToadforMySQLFreeware/tabid/561/Default.aspx

장 : 기존의 오라클용 Toad와 비슷한 UX 지원. 많은 기능 탑재.
단 : 무설치버젼 X, 셋 중 가장 무거운 듯. 다소 복잡해 보이는 ui.





출처 : http://priceless.tistory.com/352











Oracle로 넘어간 후 Oracle DB와 많이 비슷해졌다 했는데..

여전히 Oracle은 못따라 가는 듯 하다.


Sequence를 만들기위해 여러 방법을 알아보다 Funtion을 통해서 만드는 법을 생각하였다.

대충 요런 느낌.. ㅋㅋ



내 글씨는 여기서 처음 공개해서.. 조금 미안하다 ㅋㅋ

메모라 막써서 오타도 있고 수정도 하고

결론적으로 아래와 같은 함수를 만들었다.


DROP FUNCTION IF EXISTS `test`.`get_seq`;

CREATE FUNCTION `test`.`get_seq`(tmp_seq_name VARCHAR(10)) RETURNS int(4)

    READS SQL DATA

BEGIN

DECLARE result_no int default 0;


SET result_no = (SELECT seq_no from test_master_seq where seq_name = tmp_seq_name);

if(result_no > 9998) then

UPDATE test_master_seq SET seq_no = 1 WHERE seq_name = tmp_seq_name;

set result_no = 1;


else

UPDATE test_master_seq SET seq_no = result_no+1 WHERE seq_name = tmp_seq_name;

set result_no = result_no+1;


end if;

 RETURN result_no;

END


테이블은 아래와 같고..


CREATE TABLE `nfv_master_seq` (

  `seq_name` varchar(10) COLLATE utf8_bin NOT NULL,

  `seq_no` int(4) NOT NULL,

  PRIMARY KEY (`seq_name`)

);


대충 9999가 넘으면 1로 초기화 하는 그런 시퀀스이다.

장점은.. 흠.. 파라메터 값에 따른 Sequence를 생성할 수 있어서 하나로 통합관리가 가능하다.

좋은 Sequence인줄은 모르겠다. 성능테스트 이런건 안했고 원하는 포멧에 맞게 가공하기 위해 만든것이기에..



일단.. 초기값 설정 : INSERT INTO master_seq VALUES ('tab01',1)

값을 불러올땐.. 요렇게.. : SELECT get_seq('tab01')



완성이 되었다. 근데.. 권한 문제 오류가 났다..

Reference : https://stackoverflow.com/questions/6434573/mysql-execute-command-denied-to-user-localhost-for-routine-error


암튼 권한 설정을 아래와 같이 해주면 끄읏!!

GRANT EXECUTE ON PROCEDURE TestMediaControl.monthavrage TO 'jeinqa'@'%';

프로시저 말고 Function이면.. 

>>> GRANT EXECUTE ON PROCEDURE `db_name`.`procedure_name` TO 'user_id'@'host' ;

or

>>> GRANT EXECUTE ON PROCEDURE `db_name`.`function_name` TO 'user_id'@'host' ;


>>> flush privileges;



이상!!







+ Recent posts