問題 MySQLでは、文字列の比較で、空白の有無って無視されるの? 答え MySQLでは、比較演算子 = を使ったとき、後続の空白は無視される仕様。 いずれかの標準演算子(= や <> など。LIKE は含まない)を使用してケース非依存文字列を比較する場合、後続の空白(スペース、タブ、改行復帰)は無視されます。(4.1のマニュアルより) ‘aスペーススペース’ = ‘a’ は true になる。 mysql> select 'a ' = 'a', ' a ' = ' a ', ' a ' = ' a ', 'a ' like 'a', ' a ' like ' a ', ' a ' like ' a ' \G *************************** 1. row *************************** 'a ' = 'a': 1 ' a ' = ' a ':
はじめに データに改行が入っていて、それを取り除きたいということがありました。 データベースに取り込む前に、不要な改行を除去するプログラム書くのも一つの手ではありますが、 SQLを使った方が簡単にできるかと思います。 実行環境 Windows8.1 MySQL5.7 PostgreSQL 9.6 サンプルデータ作成 次のようなテーブルとデータを用意しました。 devdbというスキーマ(db)はすでに作成されているものとします。 改行3種類(LF, CR, CRLF)と改行なしの4パターンです。 commentカラムに入っている改行を除去することを想定します。 CREATE CREATE TABLE devdb.profile(name varchar (16), comment varchar (100)); INSERT PostgreSQL版 INSERT INTO devdb.pro
Info Nacky - Snowland.net - blogを移転しました A k i - B u g 2011-09-18(Sun) 22:00-05:00 @ Bagus(秋葉原) Waaaaan!! 2011-09-22(Thu) @ Module(渋谷) blip festival TOKYO 2011 2011-10-22(Sat)+23(Sun) @ KOENJI HIGH(高円寺) Google CalendarにEvent Schedule (Issei Ishii/Nacky) を公開中>feed IRC(wide系) #snowland DJブッキングはいつでも受付中! nacky(at)snowland.net までメールください. nacky - MyMiniCity 「このカラム内,2~3~1の順番でソートして欲しいんですけど!」 2,3,1でそれぞれSELE
Incompatible Change: The caching_sha2_password and sha256_password authentication plugins provide more secure password encryption than the mysql_native_password plugin, and caching_sha2_password provides better performance than sha256_password. Due to these superior security and performance characteristics of caching_sha2_password, it is now the preferred authentication plugin, and is also the def
オプションファイルの使用 my.cnfに設定できる値 設定値にはセクション(グループ?)と言われる、 オプションを設定するプログラムまたはグループの名前以下に設定する。 ([mysqld]のように書かれているところのこと) [client] # clientセクション: mysqlクライアントツールへの設定 port=3306 socket=/tmp/mysql.sock [mysqld] # mysqldセクション: mysqlサーバーへの設定 port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M [mysqldump] # mysqldumpセクション: バックアップコマンドへの設定 quick [mysqld_safe] # mysqld_safeセクション: 起動ファイル設定 log-e
mysqlコマンドを用いてMySQLサーバーへ接続し、「select version()」を実行しMySQLサーバーのバージョンを確認します。 username と passwordには、MySQLサーバーへアクセス可能なユーザの名前とパスワードを設定してください。 # mysql -u username -p'password' -D mysql -e "SELECT version()"もしlocalhostではなく、外部サーバーに接続する場合は、「-h hostname」を指定してあげます。 # mysql -h hogehoge.com -u username -p'password' -D mysql -e "SELECT version()"なお、”SELECT version();” の代わりに “SHOW VARIABLES LIKE ‘version%'” でもOKです。
ファイル内容:insert.sqlINSERT INTO tbl_Customer (UserID,FirstName,LastName,Sex,Age) VALUES ('U001','花子','鈴木','f',21); INSERT INTO tbl_Customer (UserID,FirstName,LastName,Sex,Age) VALUES ('U002','太郎','田中','m',30); INSERT INTO tbl_Customer (UserID,FirstName,LastName,Sex,Age) VALUES ('U003','一郎','鈴木','m',45); INSERT INTO tbl_Customer (UserID,FirstName,LastName,Sex,Age) VALUES ('U004','萌子','山口','f',18); INS
MySQLにはOracleなんかと違ってROW_NUMBER関数がないので、ユーザ変数を使って振ってやる必要がある。 便利なのでメモ。 普通にSELECTした結果。 mysql> SELECT TABLE_NAME FROM information_schema.TABLES LIMIT 10; +---------------------------------------+ | TABLE_NAME | +---------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES | | ENGINES | | EVENTS | | FILES | | GLOBAL_
はじめに MySQLに対してロードの検証を行うためにダミーデータを用意する必要が あったので、ダミーデータの取得からMySQLへの挿入までの流れをメモしておく。 バージョンは5系。 ダミーデータはここで手に入れた。 (日本語のデータ(〜5000件)) 疑似個人情報データ生成サービス (英語のデータ) generatedata.com 今回は疑似個人情報データ生成サービスからcsv形式でダウンロードし、 それをMySQLへ挿入することにした。 ダミーデータの作成 使い方は簡単ではじめに下記のような条件が選べるので、必要なものを選び 生成開始を押すだけ。 次にこのような画面が出てくるので、CSV形式でダウンロード。 とりあえずhogehoge.csvとしておく。 MySQLへ挿入 mysqlクライアントを開いて、下記のスクリプトでテスト用テーブルを作成。 mysql> CREATE TABLE
MySQL標準のダンプツールmysqldumpについて、基礎的な使い方からよく使われるオプション、特徴までを含む25個の問答集。 1) mysqldumpはテキストバックアップツール?それともバイナリバックアップツール? テキストバックアップツールだ。バックアップファイルを開けば、データベースとその中のオブジェクトを作り直すための全文が見られる。テーブルにデータを詰め込むためのinsert文ももちろん含まれている。 2) mysqldumpのコマンドラインオプションは? $ mysqldump -u [uname] -p[pass] –databases [dbname] [dbname2] > [backupfile.sql] 3) 全データベースのバックアップはどうしたらいい? $ mysqldump -u root -p –all-databases > backupfile.sql
MySQLに限った話ではないが、データベース管理システムに大量のデータを投入するのは時間が掛かり大変苦痛を伴う作業である。劇的に効能があるわけではないが、MySQLを利用しているとき、特にInnoDBを使っている場合にはデータの投入を高速化するためにいくつかテクニックがあるので紹介しよう。皆さんの作業時間が短縮され、少しでも早く帰路に着いたりサービスインさせたりという形でお役に立てれば幸いである。ちなみに、タイトルはネタであるのだが、もし本当に3秒で以下の全ての設定を行えた人が居たら教えて頂きたい! ログファイルサイズの調整データ投入時に限った話ではないが、ログファイルサイズを調整するのは更新性能にとって非常に重要なファクターである。バッファプールのサイズが重要なことに代わりはないが、同じぐらいログファイルのサイズも重要である。InnoDBはログファイルを使い切ってしまうと、バッファプール
いつも「MySQLを使うときはこうするべき」という観点から記事を書いているが、今日は逆に犯してはいけない過ちをリストアップしようと思う。 1. 全てのカラムにインデックスをつけるデータベース初心者がもっともやってしまいがちな間違いはコレではないだろうか。インデックスはいい。検索がとても速くなるから。しかし、それと引き替えにインデックスは更新するときにコストがかかるし、その分多くのディスクスペースを消費する。特に更新にかかるコストは時に甚大で、該当するインデックスのページがキャッシュ上にない場合はディスクからいったんそのページを読み込まなければいけない。ディスクアクセスは動作にとても時間がかかるので、インデックスが多数、例えば全てのカラムに付いていたりすると「あれ?固まったか?」というような状態になってしまうことがあるだろう。インデックスは必要なカラムにだけつけるようにテーブルを設計しよう。
以前、MySQLの重さの原因はDNS逆引きだった という記事を書いたのですが、それを読んでmy.cnfにskip-name-resolveを設定したという後輩から「DBに接続できなくなった」という問い合わせを受けました。 話を聞いたところ、MySQLにローカル接続用のユーザを追加するとき、MySQL 権限テーブルに「localhost」と書いたとのこと。 こんな感じ grant all privileges on DB.* to userid@’localhost‘ identified by ‘hogehoge’; 記事にも書きましたが、skip-name-resolveを使うとホスト名の解決を行わなくなりますから当然、ローカル接続も接続元が「localhost」ではなく 127.0.0.1 として扱われます。 なので、MySQLをインストールしたての時など@127.0.0.1なユーザが
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く