ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

SQL - transaction

mysql / mariadb 1 2 3 4 5 START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT; (ROLLBACK;) postgres 1 2 3 4 BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; COMMIT; (ROLLBACK;) sqlserver 1 2 3 4 5 BEGIN TRANSACTION UPDATE Customers SET Country = 'UKA' WHERE Country = 'UK' COMMIT; (ROLLBACK;)

SQL - シェルでDB

MariaDBのサービス起動チェック 504_nariDBcheck.sh 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #!/bin/sh ## ------------------------------------------------------------------------- ## Script Name : 504_nariDBcheck.sh ## Created by : T.Naritomi ## on : 2009.11.26 ## Updated by : ## on : ## Parameters : ## Return Code : 0=Normal End ## Comments : ## ------------------------------------------------------------------------- ## ---detail---------------------------------------------------------------- CHECK_HOST=localhost RESLOG=/tmp/$$.txt TMP_FILE=/tmp/$$TMP.txt MAIL_TO=hogehoge@gavann-it.com MAIL_TITLE="auto)mysql response error nariDB on "${CHECK_HOST} ##------Check by mysql --------------------------------------- /usr/bin/mysql -h ${CHECK_HOST} -u nari -pXXX >> ${RESLOG} << _EOF show databases ; exit _EOF cat ${RESLOG} RES=`cat ${RESLOG} | grep nariDB_1st | wc -l` echo response=${RES} if [ $RES -ne 0 ] ; then echo ok else echo mysql response error echo "down node = nariDB " ${CHECK_HOST} >> ${TMP_FILE} /bin/mail -s "$MAIL_TITLE" $MAIL_TO < ${TMP_FILE} fi ##------ rm execute -------------------------------------- rm -f ${RESLOG} rm -f ${TMP_FILE} exit $? crontab登録内容 1 2 3 4 #Timely procdure 00,10,20,30,40,50 * * * * sync 08,18,28,38,48,58 6-21 * * * /bin/sh /gvis/script/504_nariDBcheck.sh > /dev/null

 ⭐️

mysql カラムやテーブルの操作

テーブルタイプの変更 1 2 3 4 5 mysql> ALTER TABLE CMN_TenpoMST ENGINE InnoDB; ⭐️トランザクション利用の場合は必須 mysql> ALTER TABLE tbl2 ENGINE MyISAM; ⭐️トランザクション利用せず性能優先する場合 カラムの追加-基本 1 2 ALTER TABLE <テーブル名> ADD <カラム名> <型情報> AFTER <カラム名>; ALTER TABLE <テーブル名> ADD <カラム名> <型情報> FIRST; カラムの追加例 1 2 3 4 5 use nariDB_1st ; alter table pro_sale_03_TojitsuNyukinJoho ; add foo varchar(200) after Uchikin ; カラムの変更 1 ALTER TABLE <テーブル名> CHANGE <古いカラム名> <新しいカラム名> <型情報>; カラムの変更例 1 2 3 4 5 6 7 8 9 use nariDB_1st ; alter table pro_sale_03_TojitsuNyukinJoho change foo bar int ; alter table CMN_pro_sale_AreaName2 modify column Chohyo_TenpoHyoki nvarchar(20) NULL comment '帳票_店舗表記名' ; カラムの削除 1 ALTER TABLE <テーブル名> DROP <カラム名>; カラムの削除例 1 2 3 4 use nariDB_1st ; alter table pro_sale_03_TojitsuNyukinJoho drop bar ; 主キーの設定/削除 1 alter table テーブル名 add primary key( フィールド名, ... ) 主キーの設定/削除例 1 2 use takaraDB_Honban ; alter table pro_sale_PR_TenpoMST drop primary key インデックスの設定/削除 1 alter table テーブル名 add index [インデックス名] ( フィールド名, ... ) インデックスの設定/削除例 1 2 use nariDB_1st ; alter table pro_sale_PR_TenpoMST drop pro_sale_PR_TenpoMST_idx

mysql 受信許可パケットサイズ

クライアントからサーバへ送ることができるパケットサイズを広げる。 確認すると最初は1MB程度。 1 2 3 4 5 6 mysql > show variables like 'max_allowed_packet' ; +--------------------+---------+ | Variable_name | Value | +--------------------+---------+ | max _ allowed _ packet | 1048576 | +--------------------+---------+ /etc/my.cnfに記述を入れてDBを再起動 1 2 [ mysqld] max _ allowed _ packet =16MB 広がったか確認。 1 2 3 4 5 6 mysql > show variables like 'max_allowed_packet' ; +--------------------+---------+ | Variable_name | Value | +--------------------+---------+ | max _ allowed _ packet | 16777216 | +--------------------+---------+ これでpdfをbase64でエンコードしてblob列にも入れやすくなるか。

日付insert

mysql例 castで文字列型を日付型にしてしまう 1 2 3 insert into board values( null,'testuser', 'testmail','testcomment', cast('2009-08-03 23:58:01' as datetime))