ロック

行ロック

設定方法

SELECT … FOR UPDATE SELECT … LOCK IN SHARE MODE の2種類がある。

SELECT … FOR UPDATE

ほかのセッションがロックしている場合、使用可能な最新の状態になってから実行する。(待つ)

前提

InoDBであること トランザクションを開始していること、オートコミットが無効であること

SELECT … LOCK IN SHARE MODE

ほかのセッションから読み取り可能。 変更は不可。  

解放

トランザクションがコミットまたは、ロールバックすると解放  

テーブルロック

 

oracle – エラー「文字列リテラルが長すぎます」

ORA-01704: 文字列リテラルが長すぎます

文字列リテラルは、データベースに格納可能な VARCHAR2 の上限サイズ4000 バイトが上限になっている。 本当か?->本当。 以下、マニュアル参考URL http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05765-03/datatype.htm#16175 https://docs.oracle.com/cd/E49329_01/server.121/b71278/sql_elements001.htm#i45694

mySQL よく使うコマンド

データベース作成

キャラクタセットを指定してデータベースを作成

CREATE DATABASE データベース名 CHARACTER SET utf8;

ユーザ権限

グローバル権限

GRANT all ON *.* TO user1@localhost IDENTIFIED BY 'password';

ON *.* とすると、すべてのデータベースに対して権限を付与できます。

データベース権限

GRANT all ON database1.* TO user1@localhost IDENTIFIED BY 'password';

ON データベース名.* とすることで、特定のデータベースに対して権限を付与できます。

ユーザーの設定について

・アカウント名の構文は 'user_name'@'host_name' です。
・ユーザー名のみで構成されるアカウント名は、'user_name'@'%' と同等です。たとえば、'me''me'@'%' と同等です。

公式mySQLのマニュアルから抜粋

メモ:mySQLのセキュリティは、ユーザ名、ホスト名、パスワードで管理

テーブル作成

CREATE TABLE users (

id int(11) unsigned NOT NULL auto_increment,

username varchar(100)  NOT NULL,

password varchar(100)  NOT NULL,

name varchar(100) default NULL,

email varchar(100) default NULL,

PRIMARY KEY (id)

)DEFAULT CHARSET=utf8;

MySQLサーバに接続 (1)

$ mysql -uユーザ名 -p データベース名

Enter password: [パスワード]

MySQLサーバに接続 (2)

$ mysql --user=ユーザ名 --password=パスワード データベース名

 

日付型
date年月日(時刻なし)
datetime年月日時刻
datetimestamp特別な理由がない限り使わない
リストア

gz圧縮されたファイルを、リストア

zcat mysql_backup.sql.gz | mysql -uUserName -pPassword DatabaseName

デーモンの停止

service mysql stop

タイムゾーンの確認

show variables like '%time_zone%';

タイムゾーンの設定

set global time_zone='+00:00'

カラムの追加

ALTER TABLE testTableName ADD colA tinyint AFTER endDate;