DB

pivot句によるクロス集計

DB

MySQL (8.0.31) pivot句は使用できないため、case句で代用 Oracle (19c) https://style.potepan.com/articles/25072.htmlhttps://oraclesqlpuzzle.ninja-web.net/oracle-sql-image/oracle-sql-image08.html -- 1. テストテーブル作成 drop table tab1 purge;…

values句内でサブクエリ

DB

MySQL (8.0.31) drop table tab1;drop table tab2; create table tab1(col1 varchar(10), col2 int);create table tab2(col1 varchar(10), col2 int); insert into tab1 values('a',1);insert into tab2 values('a',1); insert into tab2 values('b',(select…

インデックススキャンでnot nullカラムをcountする場合のテーブルルックアップ有無

DB

MySQL (8.0.31)https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#jointype_index drop table tab1;create table tab1(col1 int primary key ,col2 int ,col3 int not null ); create index ind1 on tab1(col1,col2); explainselect /*+ INDEX(t…

ユーザ名最大長

DB

MySQL 32文字Oracle 128文字PostgreSQL 63文字SQL Server 128文字 MySQL (8.0.31) https://dev.mysql.com/doc/refman/8.0/ja/user-names.html MySQL ユーザー名の長さは最大 32 文字です。 オペレーティングシステムのユーザー名の最大長が異なる場合があり…

パスワード最大長

DB

MySQL 256文字Oracle 30文字PostgreSQL 制限なしSQL Server 128文字 MySQL (8.0.31) マニュアル記載なし実機確認したところ、最大長は256文字 create user 'user1'@'%' identified by 'user1';alter user 'user1'@'%' identified by '1234567890'; alter use…

SQL文コメントのクライアント依存性

DB

調べた範囲では、mysql clientだけデフォルトでコメント削除する MySQL (8.0.31) select /* test20221221 */ sleep(10000); show processlist\G [1]mysql clientの場合デフォルトではSQLのコメントは除去されるため、表示されない★ ※ cオプション付与でコメ…

3テーブル結合ヒント句指定方法

DB

MySQL (8.0.31) -- データ準備drop table tab1;drop table tab2;drop table tab3; create table tab1(col1 int,col2 int);create table tab2(col1 int,col2 int);create table tab3(col1 int,col2 int); drop procedure proc1; delimiter //create procedure…

Node.jsでDB接続

DB

MySQL (8.0.31) https://programming-engineer.com/nodejs-database-connection/https://ictdiary.hatenadiary.jp/entry/2018/12/03/221312 OS: CentOS 7 yum -y install epel-releaseyum -y install nodejsyum -y install npm node -vnpm -v mkdir test;cd …

CでDB接続

DB

MySQL (8.0.31)https://qiita.com/Ki4mTaria/items/778ff9186bb4958bb667 OS: CentOS 7 yum -y install gcc mysql-devel vim a.c--------------------- #include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql/mysql.h> int main(void){ MYSQL *conn = NULL; MYSQL_RES *res = NULL; M</mysql/mysql.h></string.h></stdlib.h></stdio.h>…

PowerShellでDB接続

DB

MySQL (8.0.31)https://ameblo.jp/ho1man/entry-11190167744.html?frm=theme https://buralog.jp/powershell-mysql-select-execute/ 接続元OS: Windows Server 2022接続先OS: CentOS 7 前提: 「 Connector/NET 8.0.31 」インストール済リモート接続許可済 no…

PHPでDB接続

DB

MySQL (8.0.31) https://weblabo.oscasierra.net/centos7-php74-install/https://devsakaso.com/php-connect-mysql/ OS: CentOS7 -- 1. phpインストール yum -y install epel-releaseyum -y install http://rpms.famillecollet.com/enterprise/remi-release-…

依存関係確認ビュー

DB

MySQL (8.0.31) https://marock.tokyo/2021/06/23/mysql-view%E4%BE%9D%E5%AD%98%E9%96%A2%E4%BF%82%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/ https://www.dbrnd.com/2015/08/find-table-dependency-in-constraint-view-stored-pro…

macにDBインストール

DB

タームからOS再起動した場合、一度コンソールにログインしないとDockerが起動しないbrew services restart コマンドがエラーとなる → 下記対策により問題解消①システム環境設定 → ユーザとグループ → ログインオプション → 自動ログインでユーザを設定する②D…

ビューでのorder by句の使用

DB

MySQL、Oracle、PostgreSQL -> 使用可能 SQL Server -> 使用不可。ただしTOP句がある場合を除く MySQL (8.0.31) https://dev.mysql.com/doc/refman/8.0/en/create-view.html ORDER BY is permitted in a view definition, but it is ignored if you select f…

テーブル毎エクスポートシインポートシェル(CSV)

DB

MySQL (8.0.31) vim expcsv.conftab1tab2 vim expcsv.sh #!/bin/bash OUTFILE="expcsv_tables.sh"PASS="'password'"USER="root"DB="test" DIR=$(pwd) : > "${OUTFILE}"echo "#!/bin/bash" >> "${OUTFILE}"for TAB in $(cat expcsv.conf) ; do echo "rm -rf $…

テーブル毎エクスポートインポートシェル(ダンプ)

DB

MySQL (8.0.31) vim expdp.conftab1tab2 vim expdp.sh #!/bin/bash OUTFILE="expdp_tables.sh"PASS="'password'"USER="root"DB="test" : > "${OUTFILE}"for TAB in $(cat expdp.conf) ; do echo "MYSQL_PWD=${PASS} mysqldump -u ${USER} ${DB} ${TAB} > ${T…

パーティションキー取得

DB

MySQL (8.0.31) select distinct partition_expressionfrom information_schema.partitionswhere table_schema = 'test'and table_name in ('tab1'); Oracle (19c) select * from user_part_key_columns where name = 'TAB1'; PostgreSQL (15)http://kenpg.s…

パーティションメンテプロシージャ

DB

引数1=処理年月 例 202202 内部パラメータ:未来件数 = 何か月先まで作成するか? デフォルト 2過去件数 = 何か月前まで保持するか? デフォルト 2 仕様:格納対象年月 をパーティション名とし、パーティション作成、削除の判定は格納対象年月を使用する古…

テーブル名の大文字小文字区別

DB

https://hito4-t.hatenablog.com/entry/2015/08/25/184107s MySQL(Linux)→lower_case_table_namesに依存する。デフォルトではテーブル名の大文字小文字は区別される。 MySQL(Windows)→大文字小文字は区別されない。 Oracle(Linux)(Windows)→テーブル名の大文…

リレーションシップ設定ツール

DB

MySQL (8.0.29) drop procedure proc_makeER;delimiter //create procedure proc_makeER()begin -- ワーク変数declare wk1 numeric;declare wk2 numeric;declare wk3 numeric;declare wk4 numeric;declare wk5 numeric;declare wk6 numeric; declare va1 var…

連番更新

DB

MySQL (8.0.29)drop table tab1;create table tab1(col1 bigint,col2 bigint); set @i:=0; insert into tab1(col1) select row_number() over(order by table_catalog) from information_schema.columns limit 10;select * from tab1; set @i:=0; update tab…

CLOB最大サイズ

DB

MySQL (8.0.29)OSメモリ = 2GBディスク = 60GB select @@max_allowed_packet; vi /etc/my.cnf max_allowed_packet = 1073741824 longtext最大サイズ = 4GB drop table tab1 ;create table tab1(col1 longtext, col2 longtext); insert into tab1 values('A',…

改行を含むデータの移送

DB

MySQL (8.0.29) tab1 -> 移行元(改行置換前)tab2 -> 移行元(改行置換後)tab3 -> 移行先(改行置換後)tab4 -> 移行先(改行置換前) drop table tab1 ;create table tab1(col1 int primary key ,col2 datetime(0) ,col3 datetime(6) ,col4 varchar(100) ); drop …

varchar最大長

DB

MySQL : 16383文字Oracle : 4000バイト or 32767バイトPosgreSQL : 10485760文字SQL Server : 8000バイト MySQL (8.0.29) VARCHARはバイトでの上限が65535バイト。文字セットがutf8mb4の場合は、上限が16383文字となる。 VARCHAR カラム内の値は可変長の文字…

二重ループのexit

DB

MySQL (8.0.29) [1]ラベルによる方法 drop procedure proc1; delimiter //create procedure proc1()begin declare i int; declare j int; set i = 1; LOOP1: while i <= 3 do set j = 1; while j <= 5 do select i,j; if i = 2 and j = 2 then leave LOOP1; …

空間インデックス

DB

MySQL (8.0.29) https://dev.mysql.com/doc/refman/8.0/ja/creating-spatial-indexes.htmlhttps://dev.mysql.com/doc/refman/8.0/ja/spatial-function-reference.html drop table tab1;create table tab1 ( col1 int primary key, col2 varchar(255), col3 g…

count文の実行計画

DB

MySQL、Oracle、SQL Server ->インデックスがあればフルスキャンされるPostgreSQL -> 常にテーブルのフルスキャン MySQL (8.0.29) drop table tab1 ;create table tab1(col1 int not null,col2 int, col3 int); drop procedure proc1; delimiter //create pr…

セミジョイン/アンチジョイン

DB

作業概要:「in」「exists」「not in」「not exists」それぞれについて結合キーカラムが nullable の場合とnot nullの場合の実行計画を確認した 結果:「in」「exists」「not exists」については、結合キーカラムのnull属性に関係なくサブクエリのテーブルで…

ヒント句を複数指定した場合の挙動

DB

MySQL,Oracle,PostgreSQLともに最初に指定したヒント句が有効 MySQL (8.0.29) パーサーは、SELECT, UPDATE, INSERT, REPLACE ステートメントおよび DELETE ステートメントの最初のキーワードの後にオプティマイザヒントコメントを認識します。 drop table ta…

select句別名をgroup byやorder byで使用できるか確認

DB

OracleとSQL Serverはgroup byで別名を使用できない MySQL (8.0.29) drop table tab1 ;create table tab1(col1 int,col2 int);insert into tab1 values(1,1);insert into tab1 values(1,2);insert into tab1 values(2,1);select * from tab1; select col1,co…