ラベル mysql の投稿を表示しています。 すべての投稿を表示
ラベル mysql の投稿を表示しています。 すべての投稿を表示

2020年10月22日木曜日

mysqlでカラムのデータにある末尾の「。」を取りたいが、特定のキーワードがあるデータはそのままにしたい

shozokuカラムの文末にある「。」を全て取り除きたいが、「モーニング娘。」が含まれるものは除外したい。

 UPDATE yumeijin SET shozoku = TRIM(TRAILING '。' FROM shozoku) WHERE `shozoku` not LIKE '%モーニング娘%' ;  


2019年11月29日金曜日

DB(sqlファイル)を新しいサーバーに移動する場合

DB(sqlファイル)を新しいサーバーに移動する場合

FTPでアップした階層まで移動後

mysql -u root -p データベース名 < sqlファイル名



mysql -u root -p meibo < meibo.sql


2015年12月3日木曜日

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in

' などのエスケープが問題の場合が多い。

$str = mysql_escape_string(
str_replace(
array('\\',   '%',  '_'),
array('\\\\', '\%', '\_'),
$str
)
);


参考サイト:http://d.hatena.ne.jp/sutara_lumpur/20120716/1342433052

2014年12月9日火曜日

MySQL:条件式に文字数を指定する方法


SELECT * FROM テーブル名 WHERE CHAR_LENGTH(カラム名) > 3;

SELECT * FROM テーブル名 WHERE CHAR_LENGTH(カラム名) = 3;


マイヤーの開発ブログ

2013年12月8日日曜日

mysqlで打ち間違いから抜ける方法

\c で抜けれる。
exitもquitもダメ。

mysql> \c

2012年12月4日火曜日

Mysqlでテーブルのコピー

test1テーブルの属性(AUTO_INCREMENTやインデックスなど)をtest2にコピー
CREATE TABLE test2 LIKE test1;


test1テーブルのデータをtest2にコピー

INSERT INTO test2 SELECT * FROM test1;

 
-------------------------------


カラム名の違うテーブルにデータをコピーする

コピーしようと思ったらカラム名が微妙に違う!なんていうのも無くはない。

その時はちょっとめんどくさいけどカラム名を指定してあげることでコピーできる。

INSERT INTO new_table (id, name, division) SELECT serial, name, section FROM original_table

ということは、コピー元にはないカラムも値を指定してあげれば、いける。

INSERT INTO new_table (id, name, division, sex) SELECT serial, name, section, 'male' FROM original_table


2012年6月7日木曜日

slow queryログの設定

my.cnfに設定
vi /etc/my.cnf

[mysqld]に追加
log-slow-queries=/var/log/mysqld-slow.log
ログファイルを書き出す場所。

long-query-time=3
3秒以上かかったQueryを記録。
log-queries-not-using-indexes
インデックスを使わないQueryを記録。

MYSQL再起動
#/etc/init.d/mysqld restart


logrotate追加
vi /etc/logrotate.d/mysqld-slow.log

/var/log/mysqld-slow.log {
weekly
nocompress
missingok
}

ログをクリアする場合
# :> /var/log/mysql-slow.log

2011年7月13日水曜日

ある条件に合致したデータのフィールドデータを削除

条件:mailフィールドにdocomoを含むidが10以下

上記条件に合致したデータのmailフィールドデータを削除する(null挿入)

update meibo set mail=null where mail like '%docomo%' and id <= 10;

nullじゃなくてただの空データのとき

update meibo set mail='' where mail like '%docomo%' and id <= 10;


テーブル→meibo
フィールド→mail

2010年10月26日火曜日

MYSQLで使うとダメな項目⇒group

MYSQLで使うとダメな項目⇒group

2010年9月1日水曜日

MySQL Error : Too many connections

Too many connectionsの対処


・max_connections
最大同時接続数。
Apacheの最大同時接続数分(MaxClients)は確保できたほうがいいそう。
(max_connections以上のhttpリクエストが来た場合
DB処理ができないプロセスが発生するため)
ただ、接続数が増える分負荷がかかるので注意。

・thread_cache_size
スレッドキャッシュの数。
通常、MySQLのスレッドはクライアント接続ごとに生成・破棄されるのだが、
このパラメータを設定すると、設定した値の数だけスレッドが破棄されず、
他のクライアント接続で再利用することができ、
CPUへの負荷を減らすことができるそう。

・wait_timeout
DBへのコネクションのタイムアウト時間。
DB接続→スレッド生成→待機状態になってから
X秒経過したら接続を切るという数値とのこと。
デフォルト値は8時間だが、
これだとコネクションが溜まっていく一方で上記のエラーの原因になる。
長時間の持続的なDBへのアクセスが行われない限り、
数十秒単位で設定して問題ないと考えられる。


設定方法は以下の通り。
・/etc/my.cnfの修正 以下の記述を追記
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
・・・
max_connections=200 ← 追加
thread_cache=100 ← 追加
wait_timeout=60 ← 追加

設定後のパラメータ変更確認は
show global variables;
で確認できる。

接続数の確認は以下のコマンド

mysqladmin -u root -p extended-status egrep '(MaxThreads_)'

Max_used_connections 54→これまでに記録された同時接続数の最大値
Threads_cached 48 →キャッシュされているスレッド数
Threads_connected 6 →現在開いている接続の数
Threads_created 57→接続を処理するために生成されたスレッド数
Threads_running 1 →スリープ状態になっていないスレッド数
引用元 : のほほんラボ
一部変更



参考サイト:MySQLのチューニング?

2010年7月25日日曜日

mysqlで列の結合を追加

列fisrtnameと列nameを結合した値を新しく追加したfullnameにinsertする場合

UPDATE `meibo` SET fullname = concat(firstname, name )

2010年2月16日火曜日

MySQLである条件に合致したデータのフィールドデータを置換

url指定で日付を丸ごと変更する場合
select * from zaiko where url like '%asdf.com%';
44件 ←件数を確認
update zaiko set hiduke= '2021-01-02 18:12:25' where url like '%asdf.com%';

2009年5月2日土曜日

MySQLにインデックス作成

create index インデックス名 on テーブル名 (フィールド名);

MySQLにrootでログイン

mysql -u root -p
パス入力
use データベース名;

2009年3月10日火曜日

データベースにアクセスできるユーザーを作成

全てのデータベースに全てのアクセス権限を持った新規ユーザー(ユーザ:satoru パスワード:12345)を作成

mysql> grant all privileges on *.* to satoru@localhost identified by '12345';


特定のデータベース(testdb)にのみアクセス権限を持った新規ユーザー(ユーザー:satoru パスワード:12345)を作成

mysql> grant all privileges on testdb.* to satoru@localhost identified by '12345';

2009年3月5日木曜日

MySQLで重複レコードを抽出

SELECT 列1, 列2, count(*) FROM 表 GROUP BY 列1,列2 HAVING count(*)> 1;

SELECT * FROM 表 GROUP BY 列1,列2 HAVING count(*)> 1;

参考:重複レコードを取得する

特定のカラムで文字列の一括変更

update table set title=replace(title,'高等学校','高校');

table = テーブル名
title = カラム名