huchi's mysql識字ノート


mysql入門から諦めるまで
ダウンロード:http://dev.mysql.com/downloads/mysql/5.1.html#downloads
設定
  • はダウンロードしたmysql-noinstall-51.69-win 32.zipをインストールが必要な位置に解凍します。
  • インストールフォルダの下でmy-smal.iniプロファイルを見つけ、それをmy.iniと名前を変えて編集します。[client]と[mysqld]の下で一行を追加します。default-character-set=gbk
  • Windows環境変数設定を開き、変数名MYSQL_を新規作成します。ホーム、変数値はMySQLのディレクトリパスです。ここはC:\Program Files\mysql-51.69-win 32
  • です。
  • 環境変数のPath変数に追加します。%MYSQL_HOME%\ bin;
  • MySQLサービスをインストールし、Windowsコマンドのプロンプトを開いて、命令を実行します。mysqld–install MySQL–defaults-file="my.ini"ヒント"Service succefully installd."は成功を表します。
  • 参照
    起動net start MySQL停止net stop MySQL;アンインストールsc delete MySQL基本構成
    保存時のスクリプトファイルの拡張子の名前は.sqlです。コンソールの下で、MySQLクライアントは、.sqlファイルに保存せずに文を単一の文で実行することもできる。
  • 識別子
  • キーワード
  • 関数
  • MySQLのデータタイプ
  • デジタルタイプ
  • 整数:inyint、smalint、mediumint、int、bigint。
  • 浮動小数点数:float、double、real、decimal
  • 日付と時間date/time/datetime/timestamp/year
  • 文字列タイプ
  • 文字列:char/varhar
  • テキスト:inytext/text/mediumtext/longtext
  • バイナリ:tinylob/blob/mediumblob/longblub
  • 参照
    MySQLデータベースを使う
  • 登録MySQL
  • cmd→mysql -h -u - p-h:このコマンドは、クライアントが登録するMySQLホスト名を指定し、現在のマシンに登録するためのパラメータを省略することができます。
    -u:ログインするユーザ名
    -p:サーバにパスワードを使ってログインします。ログインするユーザ名のパスワードが空であれば、このオプションを無視できます。
    これを入力します
    mysql -u root -p
    Enter password:を得る
    パスワードがあれば入力してください。デフォルトのrootアカウントはパスワードなしです。
    その後、Welecome to the MySQL monitor...が見られます。
    exitまたはquitでログイン(またはctrl+C)を終了することができます。
  • データベースを作成する
  • フォーマット:create database [ ]私たちは入力します。
    create database huchi character set gbk;
    応答を得るQuery OK, 1 row affected (0.16 sec)MySQL文は、ステートメントの終了として、ステートメントにセミコロンを追加しない場合、命令はずっと入力を続けるように指示します。show databases;を使用して作成したデータベースを確認します。
  • 操作するデータベース
  • を選択します。
    データベースを操作するには、まずデータベースを選択しなければなりません。ERROR 1046(3D000):No database selected二つの方法でデータベースを使用する選択
    一.データベース登録時に指定する:mysql -D huchi -u root -p二.ログイン後にuse文で指定し、コマンドuse ;use huchiはhuchiデータベースに切り替わります。
  • データベーステーブル
  • を作成します。
    使用するcreate table ( )コードを貼るより面白いことがありますか?
    MySQL [huchi]> create table students
        -> (
        -> id int unsigned not null auto_increment primary key,
        -> name char(8) not null,
        -> sex char(4) not null,
        -> age tinyint unsigned not null,
        -> tel char(13) null default "-"
        -> );
    Query OK, 0 rows affected (2.10 sec)
    直接入力すると間違えやすいので、面倒くさいです。
    create table students2
    (
    id int unsigned not null auto_increment primary key,
    name char(8) not null,
    sex char(4) not null,
    age tinyint unsigned not null,
    tel char(13) null default "-"
    );
    「id int unsigned not null aut prive key」行で紹介します。
  • 「id」は列の名称です。
  • 「int」は列のタイプをint(値取り範囲は-8388608から8388607)として指定し、その後に「unsigned」を使って修正し、このタイプは符号なしタイプであると表しています。この場合、列の取値範囲は0から16777215です。
  • 「not null」はこの列の値が空ではないと説明しています。必ず記入しなければなりません。この属性を指定しないと、デフォルトは空になります。
  • 「atomuincrement」は整数列で使用される必要があり、その役割はデータを挿入する際にNULLとすると、MySQLは現存値よりも大きな一意の識別子値を自動的に生成することである。このような値は各テーブルに一つしかありません。位置列は索引の列でなければなりません。
  • 「primary key」はこの列が表の主キーであることを表しています。この列の値は唯一でなければなりません。MySQLはこの列を自動的にインデックスします。
  • 以下のchar(8)は、格納されている文字の長さが8であることを示し、tinyintの取得範囲は−127〜128であり、default属性は、列の値が空の場合のデフォルト値を指定する。createtable.sqlファイルに保存します(おすすめはsublime)
    またcmd:mysql -D huchi -u root -p < createtable.sql//(ヒント:1.リモートホストに接続する場合は-hコマンドを追加してください。2.createtable.sqlファイルが現在の作業ディレクトリでない場合はファイルのフルパスを指定してください。)
    //表の名前と表の詳細を確認する
    show tables;
    describe students2;
    
    MySQL [huchi]> describe students2
        -> ;
    +-------+---------------------+------+-----+---------+----------------+
    | Field | Type                | Null | Key | Default | Extra          |
    +-------+---------------------+------+-----+---------+----------------+
    | id    | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | name  | char(8)             | NO   |     | NULL    |                |
    | sex   | char(4)             | NO   |     | NULL    |                |
    | age   | tinyint(3) unsigned | NO   |     | NULL    |                |
    | tel   | char(13)            | YES  |     | -       |                |
    +-------+---------------------+------+-----+---------+----------------+
    5 rows in set (0.36 sec)
    操作MySQLデータベース
  • テーブルにデータを挿入する
  • insert文は挿入に用いることができます。insert [into] [( 1, ...)] values ( 1, ... )
  • 例えば、
    MySQL [huchi]> insert students values(NULL, "huchi", "boy", 18, "110");
    Query OK, 1 row affected (0.07 sec)
    MySQL [huchi]> insert into students (name,sex,age) values("lmh", "boy" , 19);
    Query OK, 1 row affected (0.01 sec)
  • クエリテーブルのデータ
  • select文:select from [ ];
    MySQL [huchi]> select name,age from students;
    +-------+-----+
    | name  | age |
    +-------+-----+
    | huchi |  18 |
    | lmh   |  19 |
    | lhd   |  19 |
    | lxa   |  19 |
    +-------+-----+
    4 rows in set (0.00 sec)
    
    MySQL [huchi]> select * from students;
    +----+-------+------+-----+-------------+
    | id | name  | sex  | age | tel         |
    +----+-------+------+-----+-------------+
    |  1 | huchi | boy  |  18 | 110         |
    |  2 | lmh   | boy  |  19 | -           |
    |  3 | lhd   | girl |  19 | -           |
    |  4 | lxa   | girl |  19 | -           |
    +----+-------+------+-----+-------------+
    4 rows in set (0.00 sec)
  • 特定の条件で照会する:
  • whereキーワード指定クエリ条件:select from where
  • MySQL [huchi]> select * from students where sex = "boy";
    +----+-------+-----+-----+-------------+
    | id | name  | sex | age | tel         |
    +----+-------+-----+-----+-------------+
    |  1 | huchi | boy |  18 | 110         |
    |  2 | lmh   | boy |  19 | -           |
    +----+-------+-----+-----+-------------+
    2 rows in set (0.04 sec)
    whereはサポートだけでなく、<=などおよびis[not]null、in、like、or、andなども使えます。
    MySQL [huchi]> select * from students where name like "hu%";
    +----+-------+-----+-----+-------------+
    | id | name  | sex | age | tel         |
    +----+-------+-----+-----+-------------+
    |  1 | huchi | boy |  18 | 110         |
    +----+-------+-----+-----+-------------+
    1 row in set (0.01 sec)
  • テーブルのデータを更新する。
  • udate:update set = [where ];
  • MySQL [huchi]> update students set tel="119"  where id = 1;
    Query OK, 1 row affected (0.01 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
    
    MySQL [huchi]> update students set age = age + 1;
    Query OK, 4 rows affected (0.02 sec)
    Rows matched: 4  Changed: 4  Warnings: 0
  • テーブルのデータを削除する
  • delete文は、テーブル内のデータを削除するために使用されます。delete from where ;
  • MySQL [huchi]> delete from students;
    Query OK, 4 rows affected (0.00 sec)
    
    MySQL [huchi]> select * from students;
    Empty set (0.00 sec)
    
    MySQL [huchi]> insert students (name , sex ,age) values ("huchi", "boy", 19);
    Query OK, 1 row affected (0.00 sec)
    
    MySQL [huchi]> insert students (name , sex ,age) values ("lmh", "boy", 20);
    Query OK, 1 row affected (0.00 sec)
    /本当に悲しい物語です。。後の表の変更を作成します。
    alter table文は作成後の表の修正に使います。
  • 追加列:alter table add [after ];
  • MySQL [huchi]> alter table students add address char(60);
    Query OK, 0 rows affected (0.42 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    MySQL [huchi]> alter table students add birthday date after age;
    Query OK, 0 rows affected (0.06 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    MySQL [huchi]> describe students;
    +----------+---------------------+------+-----+---------+----------------+
    | Field    | Type                | Null | Key | Default | Extra          |
    +----------+---------------------+------+-----+---------+----------------+
    | id       | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | name     | char(8)             | NO   |     | NULL    |                |
    | sex      | char(4)             | NO   |     | NULL    |                |
    | age      | tinyint(3) unsigned | NO   |     | NULL    |                |
    | birthday | date                | YES  |     | NULL    |                |
    | tel      | char(13)            | YES  |     | -       |                |
    | address  | char(60)            | YES  |     | NULL    |                |
    +----------+---------------------+------+-----+---------+----------------+
    7 rows in set (0.04 sec)
  • 列を修正する:alter table change ;
  • MySQL [huchi]> alter table students change address ad char(60) default "-";
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    MySQL [huchi]> alter table students change name name char(16) not null;
    Query OK, 4 rows affected (0.07 sec)
    Records: 4  Duplicates: 0  Warnings: 0
    
    MySQL [huchi]> describe students;
    +----------+---------------------+------+-----+---------+----------------+
    | Field    | Type                | Null | Key | Default | Extra          |
    +----------+---------------------+------+-----+---------+----------------+
    | id       | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | name     | char(16)            | NO   |     | NULL    |                |
    | sex      | char(4)             | NO   |     | NULL    |                |
    | age      | tinyint(3) unsigned | NO   |     | NULL    |                |
    | birthday | date                | YES  |     | NULL    |                |
    | tel      | char(13)            | YES  |     | -       |                |
    | ad       | char(60)            | YES  |     | -       |                |
    +----------+---------------------+------+-----+---------+----------------+
    7 rows in set (0.08 sec)
  • 列を削除する:alter table drop
  • MySQL [huchi]> alter table students drop birthday;
    Query OK, 0 rows affected (0.08 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    MySQL [huchi]> describe students;
    +-------+---------------------+------+-----+---------+----------------+
    | Field | Type                | Null | Key | Default | Extra          |
    +-------+---------------------+------+-----+---------+----------------+
    | id    | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | name  | char(16)            | NO   |     | NULL    |                |
    | sex   | char(4)             | NO   |     | NULL    |                |
    | age   | tinyint(3) unsigned | NO   |     | NULL    |                |
    | tel   | char(13)            | YES  |     | -       |                |
    | ad    | char(60)            | YES  |     | -       |                |
    +-------+---------------------+------+-----+---------+----------------+
    6 rows in set (0.01 sec)
  • 名前変更テーブルalter table rename ;
  • MySQL [huchi]> alter table students rename friends;
    Query OK, 0 rows affected (0.01 sec)
    
    MySQL [huchi]> show tables;
    +-----------------+
    | Tables_in_huchi |
    +-----------------+
    | friends         |
    | stu12           |
    | students2       |
    +-----------------+
    3 rows in set (0.00 sec)
  • 削除テーブル:drop table ;
  • MySQL [huchi]> drop table stu12;
    Query OK, 0 rows affected (0.06 sec)
    
    MySQL [huchi]> show tables;
    +-----------------+
    | Tables_in_huchi |
    +-----------------+
    | friends         |
    | students2       |
    +-----------------+
    2 rows in set (0.00 sec)
  • データベースを削除します。。。。drop database ;
  • Extra
  • rootユーザパスワードを変更する
  • cmd→mysqladmin -u root -p password
  • 可視化管理ツール
  • MySQL Workbench
    紹介する
    ダウンロード