What will happen if try to put in excess data type on mysql

mysql> create table news(
    -> id int auto_increment PRIMARY KEY,
    -> content varchar(10)
    -> );
Query OK, 0 rows affected (0.25 sec)

mysql> insert into news(news) values('テスト');
ERROR 1054 (42S22): Unknown column 'news' in 'field list'
mysql> insert into news(content) values('テスト');
Query OK, 1 row affected (0.04 sec)

mysql> select * from news;
+----+-----------+
| id | content   |
+----+-----------+
|  1 | テスト    |
+----+-----------+
1 row in set (0.00 sec)

mysql> insert into news(content) values('10byte以上を入れてみたいと思う.さてどうなるでしょうか?');
Query OK, 1 row affected, 1 warning (0.10 sec)

mysql> select * from news;
+----+--------------------+
| id | content            |
+----+--------------------+
|  1 | テスト             |
|  2 | 10byte以上を入     |
+----+--------------------+
2 rows in set (0.00 sec)

If I enter an amount that exceeds data type, only the acceptable number of bytes will be in the record.

TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT

TINYTEXT
character type large object column, maximum length is 255(2^8 -1) characters.

TEXT
Character type large object column, maximum length is 65,535(2^16 – 1) characters.

MEDIUMTEXT
Character type large object column, maximum length is 16,777,215(2^24 – 1) characters.

LONGTEXT
Character large object column, maximum length is 4,294,967,295(2^32 – 1) characters.

Let’s get started.

mysql> create table news(
    -> id int,
    -> news mediumtext
    -> );
Query OK, 0 rows affected (0.54 sec)

mysql> describe news;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int(11)    | YES  |     | NULL    |       |
| news  | mediumtext | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.03 sec)

すげー、なるほど^^

create ER diagram with MySQL Workbench

create ER diagram without using actual db table linking.

Edit -> preference

Modeling -> Appearance

Change font to Japanease

How to start the mode to write ER diagram

[Add Diagram]
Create a new diagram with the ER diagram mode.

あーこれこれ^^ いいねーテンション上がってきました。

What is workbench

1. MySQL Workbench
MySQL Workbench is a free tool which realizes databases design, development and management distributed with MySQL Server on the official MySQL site. It corresponds to visual operation(GUI) instead of command line, it is recommended for those who are not good at command operation.

2. Functions of MySQL Workbench
In terms of database design, it is possible to create new ER diagrams, and it is also possible to generate ER diagrams in reverse from existing databases.

In terms of database development, it supports not only query creation and execution of SQL but also visual display that can perform optimization with intuitive operation. In addition to the color highlight display and automatic completion function, the SQL editor also supports SQL execution history display, SQL statement reuse, and object browser, making it a very excellent development tool as a SQL editor.

Download MySQL Workbench 8.0.15

MWB file, WorkBench

What is the .mwb file, which is found at entity-relation.
It seems that there are many cases to make using SQL development tool / ER diagram tool such as “MySQL Workbench” or “A5ER” when using database ER diagram.

MySQLのログの場所は?

MySQLのログの場所はどこにあるのか??

Mysql:Server version: 5.6.41

MySQLのログファイルの種類は4種類
1. errorログ:サーバから出力されるエラーメッセージを記録
2. SlowQueryログ:処理に時間のかかったクエリを記録
3. 詳細ログ:詳細な情報を記録、全ての操作が記録
4. バイナリログ:更新SQL文のみをバイナリ形式で記録

保存場所は、/etc/my.cnfの中にある。

my.cnfの中身を見てみましょう。
ログファイルの保存場所は、2行目のdatadirで定義されている。
datadir=/var/lib/mysql

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

character_set_server=utf8
default-storage-engine=InnoDB
innodb_file_per_table

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql

# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so

# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1

# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;performance_schema

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

中を見てみる。あれ? 見れてない??

Mysql “ENCLOSED BY”

mysqlのENCLOSED BYって何?

mysql5.6のリファレンスマニュアルを覗いてみます。
LOAD DATE INFILE構文
optionallyでENCLOSED BY ‘char’と記載があります。

LOAD DATA INFILEは、高速にテキストファイルからテーブルに行を読み取る。
TSVやCSVからMySQLにロードする方法なのね。

サンプルのコマンドを見てみましょう。

mysql> SET character_set_server= utf8mb4;
mysql> SET NAMES utf8mb4;
mysql> use databasename
mysql>  LOAD DATA INFILE 'hoge.CSV' INTO TABLE foo
    ->  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    ->  ( @dummy, @dummy, @dummy, @dummy, @dummy, @dummy)
    ->  SET created_at = CURRENT_TIMESTAMP;

LOAD DATA INFILE でファイルを読み込んで、INTO TABLEで指定したデータベースに値を入れてますね。

まずデータを用意します。配当利回りトップのデータにしておきましょう。dividen.csvで保存します。

/home/vagrantにdividen.csvを保存します。
/home/vagrant/dividen.csvの状態

続いて、databaseを作ります。
mysql> create database equity;

mysql> use equity;
Database changed

mysql> create table dividen(
-> code int,
-> name varchar(30),
-> yeild float
-> );
Query OK, 0 rows affected (0.29 sec)

コードはこれでいいのかな?

LOAD DATA INFILE '/home/vagrant/dividen.csv' INTO TABLE dividen
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''
(code, name, yeild)

では行きましょう。

mysql> LOAD DATA INFILE '/home/vagrant/dividen.csv' INTO TABLE dividen
    -> FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ''
    -> (code, name, yeild);
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

なにいいいいいいいいいいいいいいいいいい

だが、使い方は解った^^

windowsでのSequel Proの使い方

Sequel ProとはMySQLの管理ツール
phpMyAdminのようなものだと思ってよいでしょう。

まず、公式サイトに行ってみましょう。
Sequel Pro

なんかホットケーキみたいになってますね。
4つ特徴の記載があります。
full mysql support
flexible connectivity
perfect web development companion
easy installation

あれ、Downloadが osx 10.6 or higherとなっていて、macのみですな。Windowsはどうすればいいのでしょう?

sequel pro windowsで探してみます。
Sequel Pro Windows – Is it available yet?
The answer is no. There’s no Sequel Pro on Windows.
なにいいいいいいいいいいいいいいいい

これは。。。
まあ、macはunix系なので納得と言えば納得ですが。。ひどいですね。

Mysqlのテーブルの文字コードを変更する

まずmysql のtableの文字コードを確認します。
show create table table_name
mysql> show create table items;
+——-+———————————————————————————————————————————————————————————–+
| Table | Create Table |
+——-+———————————————————————————————————————————————————————————–+
| items | CREATE TABLE `items` (
`item_id` int(11) NOT NULL AUTO_INCREMENT,
`name` text,
`price` int(11) DEFAULT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+——-+———————————————————————————————————————————————————————————–+
1 row in set (0.06 sec)


utf-8なのがわかります。

[vagrant@localhost ~]$ cd /usr/share/mysql/charsets/
[vagrant@localhost charsets]$ ls
Index.xml cp1251.xml cp866.xml hp8.xml latin2.xml swe7.xml
README cp1256.xml dec8.xml keybcs2.xml latin5.xml
armscii8.xml cp1257.xml geostd8.xml koi8r.xml latin7.xml
ascii.xml cp850.xml greek.xml koi8u.xml macce.xml
cp1250.xml cp852.xml hebrew.xml latin1.xml macroman.xml
ん? なんだこれは?

とりあえず、テーブルの文字コードを変更します。
alter table table_name default character set utf8mb4;
mysql> alter table items default character set utf8mb4;
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0

utf8mb4に変更されているのがわかります。
mysql> show create table items;
+——-+———————————————————————————————————————————————————————————————————+
| Table | Create Table |
+——-+———————————————————————————————————————————————————————————————————+
| items | CREATE TABLE `items` (
`item_id` int(11) NOT NULL AUTO_INCREMENT,
`name` text CHARACTER SET utf8,
`price` int(11) DEFAULT NULL,
PRIMARY KEY (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+——-+———————————————————————————————————————————————————————————————————+
1 row in set (0.00 sec)

こちらは変更ありません。
mysql> show variables like “chara%”;
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
8 rows in set (0.00 sec)

mysql> describe items;
+———+———+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———+———+——+—–+———+—————-+
| item_id | int(11) | NO | PRI | NULL | auto_increment |
| name | text | YES | | NULL | |
| price | int(11) | YES | | NULL | |
+———+———+——+—–+———+—————-+
3 rows in set (0.09 sec)

mysql> select * from items;
Empty set (0.07 sec)

mysql> insert into items (name) values (‘\U+1F363’);
Query OK, 1 row affected (0.06 sec)

mysql> select * from items;
+———+———+——-+
| item_id | name | price |
+———+———+——-+
| 1 | U+1F363 | NULL |
+———+———+——-+
1 row in set (0.00 sec)

あれ、なんか違くねー???