<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yukun&#039;s Blog &#187; CREATE</title>
	<atom:link href="http://www.yukun.info/blog/tag/create/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yukun.info</link>
	<description>難しいことは分かりやすく、簡単なことは面白く紹介</description>
	<lastBuildDate>Thu, 26 Jan 2012 03:33:59 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MySQL: 新規テーブルを作成・削除、構造の確認 &#8211; CREATE TABLE、DROP TABLE、DESCRIBE文</title>
		<link>http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html</link>
		<comments>http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html#comments</comments>
		<pubDate>Sat, 01 Nov 2008 13:30:53 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[CREATE]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1214</guid>
		<description><![CDATA[前回までにCREATE USERとGRANTコマンドでbookshelfデータベースを作成し、それを扱う全権限を持つユーザyukunを追加しました。 今回はCREATE TABLEコマンドでデータベースに新しいテーブルを &#8230; <a href="http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html">MySQL: 新規テーブルを作成・削除、構造の確認 &#8211; CREATE TABLE、DROP TABLE、DESCRIBE文</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yukun.info/blog/2008/10/create-user-grant-password.html" title="MySQL: ユーザの追加とパスワード、権限の付加 - GRANT文 - Yukun's Blog">前回</a>までにCREATE USERとGRANTコマンドでbookshelfデータベースを作成し、それを扱う全権限を持つユーザyukunを追加しました。<br />
今回はCREATE TABLEコマンドでデータベースに新しいテーブルを作成し、それをDESCRIBEコマンドで確認してみます。また、それらに関連する他のコマンドも取り上げてみます。</p>
<h2>新規テーブルの作成 &#8211; CREATE TABLE コマンド</h2>
<p>以下のコマンドを打つと、</p>
<pre>
mysql> CREATE TABLE book
    -> (
    -> id INT(11),
    -> category_id INT(11),
    -> title VARCHAR(64),
    -> author_name VARCHAR(32),
    -> detail TEXT,
    -> price INT(11),
    -> image VARCHAR(64)
    -> );
Query OK, 0 rows affected (0.09 sec)

mysql>
</pre>
<p>次のようなテーブルを作成します。</p>
<table cellspacing="0" cellpadding="2" width="400" border="1">
<tbody>
<tr>
<td valign="top" width="57">id</td>
<td valign="top" width="57">category_id</td>
<td valign="top" width="57">title </td>
<td valign="top" width="57">author_name</td>
<td valign="top" width="57">detail</td>
<td valign="top" width="57">price</td>
<td valign="top" width="57">image</td>
</tr>
</tbody>
</table>
<p>このコマンドを一般化すると、</p>
<blockquote><p><code>CREATE TABLE ＜テーブル名＞<br />
( ＜列名1＞ ＜データ型＞,  ＜列名2＞ ＜データ型＞, ... );</code></p></blockquote>
<p>です。<br />
ちなみに、ここでのidやtitleは列名といいテーブルの<strong>縦1列</strong>の属性名で、この<strong>列はフィールド、カラム(column)</strong>とも言います。また、テーブルの<strong>横1列</strong>は<strong>行</strong>と言い、この<strong>行はレコード、ロウ(row)</strong>とも言います。<br />
＜テーブル名＞の前に<strong>IF NOT EXISTS</strong>を付けると、DB中に＜テーブル名＞が<strong>ない場合</strong>にのみ作成します。</p>
<h3>主キーを設定してテーブルを作成する</h3>
<pre>
mysql> CREATE TABLE book2
    -> (
    -> id INT(11) NOT NULL AUTO_INCREMENT,
    -> title VARCHAR(64),
    -> author_name VARCHAR(32),
    -> detail TEXT,
    -> image VARCHAR(64),
    -> PRIMARY KEY (id)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql>
</pre>
<p>NOT NULLを指定することによってそのレコードを挿入する際にidフィールドが空であることを防止し、AUTO_INCREMENTを指定することによってレコードが追加されると（その際idフィールに代入指定が無い場合）idフィールドに1を代入し、その後もレコード追加の度に<strong>前挿入レコードのidに+1した値</strong>を代入していきます。余談ですが、SQLiteではINTEGER型のフィールドを主キーとするとデフォルトでauto incrementされます。</p>
<p>ちなみに、データベース内で既に作成されているテーブルと同じ名前のテーブルを再度作成しようとすると以下のようなエラーを返します。</p>
<pre>
mysql> CREATE TABLE book
...＜中略＞
ERROR 1050 (42S01): Table 'book' already exists
mysql>
</pre>
<h2>テーブルの情報を出力するコマンド</h2>
<h3>データベース内のテーブルを表示 &#8211; SHOW TABLES コマンド</h3>
<p>さて、上で作成したテーブルが本当に出来ているのかSHOW TABLES コマンドで確認してみましょう。</p>
<pre>
mysql> SHOW TABLES;
+---------------------+
| Tables_in_bookshelf |
+---------------------+
| book                |
| book2               |
+---------------------+
2 rows in set (0.00 sec)

mysql>
</pre>
<p>しっかり出来ていますね。</p>
<h3>テーブルの構造を表示 &#8211; DESCRIBE（DESC）コマンド</h3>
<p>それでは、テーブル内の構造はどうでしょうか。book2はオプションで色々設定しましたので、DESCRIBE（DESC）コマンドで確認してみましょう。</p>
<pre>
mysql> DESC book2;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| title       | varchar(64) | YES  |     | NULL    |                |
| author_name | varchar(32) | YES  |     | NULL    |                |
| detail      | text        | YES  |     | NULL    |                |
| image       | varchar(64) | YES  |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)

mysql>
</pre>
<p>DESCでも同じ結果が返ってきます。</p>
<h3>既存テーブルを再作成できるCREATE TABLE文を出力 &#8211; SHOW CREATE TABLE コマンド</h3>
<p>別の環境でもう一度作成したい場合等に使えます。</p>
<pre>
mysql> SHOW CREATE TABLE book2;
CREATE TABLE `book2` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(64) default NULL,
  `author_name` varchar(32) default NULL,
  `detail` text,
  `image` varchar(64) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
</pre>
<p>上述のCREATE TABLE文では省いていたオプションが明示されていますが、確かにこの文でbook2を作成できます。</p>
<h2>既存テーブルの削除 &#8211; DROP TABLE コマンド</h2>
<p>最後に、テーブルの削除を試してみます。</p>
<pre>
mysql> DROP TABLE book;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW TABLES;
+---------------------+
| Tables_in_bookshelf |
+---------------------+
| book2               |
+---------------------+
1 row in set (0.00 sec)

mysql>
</pre>
<p>一般化すると、</p>
<blockquote><p><code>DROP TABLE ＜テーブル名＞;</code></p></blockquote>
<p>ですね。<br />
SHOW TABLESで削除されていることが確認できています。削除したテーブルは復元できませんので、このコマンドは気をつけて打ちましょう。</p>
<h2>リファレンス</h2>
<ul>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/create-table.html" title="MySQL :: MySQL 5.1 Reference Manual :: 12.1.13 CREATE TABLE Syntax" target="_blank">MySQL :: MySQL 5.1 Reference Manual :: 12.1.13 CREATE TABLE Syntax</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.1/en/show-create-table.html" title="MySQL :: MySQL 5.1 Reference Manual :: 12.5.6.11 SHOW CREATE TABLE Syntax" target="_blank">MySQL :: MySQL 5.1 Reference Manual :: 12.5.6.11 SHOW CREATE TABLE Syntax</a></li>
</ul>
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html" rel="bookmark" title="2008年10月9日">MySQL: ログインと新規データベースの作成・削除 &#8211; CREATE DATABASE、DROP DATABASE文</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/alter-table-add-drop-change-modify.html" rel="bookmark" title="2008年11月7日">MySQL: 既存テーブルの構造の変更 &#8211; ALTER TABLE文、CHANGE COLUMN句</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/create-user-grant-password.html" rel="bookmark" title="2008年10月10日">MySQL: ユーザの追加とパスワード、権限の付加 &#8211; GRANT文</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-insert-into-table-values.html" rel="bookmark" title="2008年11月11日">MySQL: データをテーブルに追加 &#8211; INSERT文、INTO、VALUES句</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-sort-record-order-by-asc-desc.html" rel="bookmark" title="2008年11月19日">MySQL: レコードを昇順・降順にソートして出力 &#8211; ORDER BY句</a></li>
</ul>
<p><!-- Similar Posts took 9.030 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html">MySQL: 新規テーブルを作成・削除、構造の確認 &#8211; CREATE TABLE、DROP TABLE、DESCRIBE文</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL: ユーザの追加とパスワード、権限の付加 &#8211; GRANT文</title>
		<link>http://www.yukun.info/blog/2008/10/create-user-grant-password.html</link>
		<comments>http://www.yukun.info/blog/2008/10/create-user-grant-password.html#comments</comments>
		<pubDate>Fri, 10 Oct 2008 14:50:50 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[CREATE]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1213</guid>
		<description><![CDATA[前回はCREATE DATABASEコマンドでbookshelfという名前のDBを作成し、SHOW DATABASESコマンドでそれを確認しました。 一連の操作はroot権限で行いましたがこれはセキュリティ上よろしくない &#8230; <a href="http://www.yukun.info/blog/2008/10/create-user-grant-password.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/10/create-user-grant-password.html">MySQL: ユーザの追加とパスワード、権限の付加 &#8211; GRANT文</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html" title="MySQL: ログインと新規データベースの作成 - Yukun's Blog">前回</a>はCREATE DATABASEコマンドでbookshelfという名前のDBを作成し、SHOW DATABASESコマンドでそれを確認しました。</p>
<p>一連の操作はroot権限で行いましたがこれはセキュリティ上よろしくないので、今回はrootユーザへのパスワードの設定と、新しくユーザ（ここでは安直に&#8221;yukun&#8221;）を作成しbookshelfを操作する権限を付加してみます。</p>
<h2>rootユーザのパスワードの設定</h2>
<p>普通のコマンドプロンプト(Win)かターミナル(Mac)で以下のコマンドを用いてパスワードを設定します。</p>
<blockquote><p><code>$ mysqladmin -u root password ＜パスワード＞</code></p></blockquote>
<h2>新規ユーザの追加 &#8211; CREATE USER文</h2>
<p>root権限で以下のコマンドを打ちます。</p>
<pre>
mysql> CREATE USER yukun IDENTIFIED BY 'ticktack';
Query OK, 0 rows affected (0.00 sec)

mysql>
</pre>
<p>一般式</p>
<blockquote><p><code>CREATE USER ＜ユーザ名＞ IDENTIFIED BY '＜パスワード＞';</code></p></blockquote>
<p>ユーザの追加はCREATE USERコマンドを使用します。上の例では、&#8221;yukun&#8221;という名前のユーザを作成し、&#8221;ticktack&#8221;というパスワードを設定しました。パスワードは本来もっと複雑なものにする必要がありますが今回はローカルでの開発用、と限定した環境での仕様を念頭においていますので、安直な単語にしました。</p>
<p>それでは一回MySQLをログアウトして、再度ユーザyukunとしてログインし、bookshelを使ってみましょう。</p>
<pre>
mysql> quit
Bye

C:\Users\yukun>mysql -u yukun -pticktack
mysql> USE bookshelf；
ERROR 1044 (42000): Access denied for user 'yukun'@'%' to database 'bookshelf'
mysql>
</pre>
<p>USEコマンドでbookshelfを使用しようと試みていますが、ユーザyukunは操作権限が無いためエラーが出ていますね。それでは、このユーザyukunにデータベースbookshelfに対する全操作の権限を付加してみましょう。</p>
<h2>ユーザにDBを操作する権限を付加 &#8211; GRANT文</h2>
<p>もう一度rootユーザでMySQLにログインし以下のコマンドを打ちます。</p>
<pre>
mysql> GRANT ALL PRIVILEGES ON bookshelf.* TO yukun@localhost IDENTIFIED BY 'ticktack';
Query OK, 0 rows affected (0.00 sec)

mysql>
</pre>
<p>一般式</p>
<blockquote><p><code>GRANT ＜操作名＞ ON ＜データベース名＞.＜テーブル名＞<br />
TO ＜ユーザ名＞@＜ホスト名＞ IDENTIFIED BY '＜パスワード＞';</code></p></blockquote>
<p>さぁ、今度こそbookshelfを操作できるはずですので、もう一度先ほどのUSEコマンドを打ってみましょう。</p>
<pre>
C:\Users\yukun>mysql -u yukun -pticktack
mysql> USE bookshelf;
Database changed
mysql>
</pre>
<p>おぉ、USEコマンドで使用するDBを選択できるようになっていますね(^-^)b<br />
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html" rel="bookmark" title="2008年10月9日">MySQL: ログインと新規データベースの作成・削除 &#8211; CREATE DATABASE、DROP DATABASE文</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html" rel="bookmark" title="2008年11月1日">MySQL: 新規テーブルを作成・削除、構造の確認 &#8211; CREATE TABLE、DROP TABLE、DESCRIBE文</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-query-select-where-in-like-between.html" rel="bookmark" title="2008年11月13日">MySQL: データ検索クエリの基本 &#8211; SELECT文、WHERE句、LIKE、IN、BETWEENキーワード</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-insert-into-table-values.html" rel="bookmark" title="2008年11月11日">MySQL: データをテーブルに追加 &#8211; INSERT文、INTO、VALUES句</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-update-delete-record.html" rel="bookmark" title="2008年11月16日">MySQL: レコードの更新と削除 &#8211; UPDATE、DELETE文</a></li>
</ul>
<p><!-- Similar Posts took 11.359 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/10/create-user-grant-password.html">MySQL: ユーザの追加とパスワード、権限の付加 &#8211; GRANT文</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/10/create-user-grant-password.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL: ログインと新規データベースの作成・削除 &#8211; CREATE DATABASE、DROP DATABASE文</title>
		<link>http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html</link>
		<comments>http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html#comments</comments>
		<pubDate>Thu, 09 Oct 2008 14:50:49 +0000</pubDate>
		<dc:creator>yukun</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[CREATE]]></category>

		<guid isPermaLink="false">http://www.yukun.info/?p=1211</guid>
		<description><![CDATA[Windowsに開発用のMySQLを新規にインストールとパス設定した環境で進めていきます。まず、プロンプト上で以下のコマンドを一行打ちMySQLに接続してみます。 rootユーザでログイン C:\Users\yukun> &#8230; <a href="http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html">Continue reading <span class="meta-nav">&#8594;</span></a><p><a href="http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html">MySQL: ログインと新規データベースの作成・削除 &#8211; CREATE DATABASE、DROP DATABASE文</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Windowsに開発用のMySQLを新規にインストールとパス設定した環境で進めていきます。まず、プロンプト上で以下のコマンドを一行打ちMySQLに接続してみます。</p>
<h2>rootユーザでログイン</h2>
<pre>
C:\Users\yukun>mysql -u root
mysql>
</pre>
<p>まだrootユーザにパスワードを設定してないので、<br />
<code>>mysql -u root</code><br />
でログインできます。仮にパスワードが設定されていると次行のプロンプトでパスの入力を求められます。</p>
<h2>新規データベース(DB)の作成 &#8211; CREATE DATABASEコマンド</h2>
<p>さて、MySQLに接続したことでプロンプトが>からmysql>に変わっています。次に以下のコマンドで新しいデータベースを作成してみましょう。</p>
<pre>
mysql> CREATE DATABASE bookshelf;
mysql>
</pre>
<p>CREATE DATABASEコマンドでbookshelfという名前のDBを作成しています。コマンドは大文字で打っていますが、別に小文字でも構いません。これは「コマンドである」ことを分かりやすくするための措置です。<br />
また、ここで文字コードを指定する場合は以下のように打ちます。</p>
<pre>
mysql> CREATE DATABASE bookshelf DEFAULT CHARACTER SET utf8;
</pre>
<p>実際にデータベースが作成されているか、SHOW DATABASESコマンドで確認してみましょう。</p>
<pre>
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bookshelf          |
| cdcol              |
| mysql              |
| phpmyadmin         |
| test               |
| webauth            |
+--------------------+
mysql>
</pre>
<p>おぉ、確かにbookshelfが作成されています。</p>
<h2>ログアウトはquitコマンドを打てばOK</h2>
<pre>
mysql> quit
Bye
C:\Users\yukun>
</pre>
<h2>データベースの削除 &#8211; DROP DATABASE文</h2>
<p>データベースの削除の文は、</p>
<blockquote><p><code>DROP DATABASE ＜データベース名＞;</code></p></blockquote>
<p>です。<br />
<h4>関連すると思われる記事：</h4>
<ul class="similar-posts">
<li><a href="http://www.yukun.info/blog/2008/11/mysql-create-table-drop-describe.html" rel="bookmark" title="2008年11月1日">MySQL: 新規テーブルを作成・削除、構造の確認 &#8211; CREATE TABLE、DROP TABLE、DESCRIBE文</a></li>
<li><a href="http://www.yukun.info/blog/2008/10/create-user-grant-password.html" rel="bookmark" title="2008年10月10日">MySQL: ユーザの追加とパスワード、権限の付加 &#8211; GRANT文</a></li>
<li><a href="http://www.yukun.info/blog/2008/12/air-actionscript-sqlite-statement.html" rel="bookmark" title="2008年12月22日">AIR: SQLiteでデータの挿入と検索 &#8211; SQLConnection、SQLStatementクラス</a></li>
<li><a href="http://www.yukun.info/blog/2008/07/python-sqlite-insert.html" rel="bookmark" title="2008年7月14日">Python: SQLiteにデータを格納、検索、出力 &#8211; pysqlite</a></li>
<li><a href="http://www.yukun.info/blog/2008/11/mysql-insert-into-table-values.html" rel="bookmark" title="2008年11月11日">MySQL: データをテーブルに追加 &#8211; INSERT文、INTO、VALUES句</a></li>
</ul>
<p><!-- Similar Posts took 10.341 ms --></p>
<p><a href="http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html">MySQL: ログインと新規データベースの作成・削除 &#8211; CREATE DATABASE、DROP DATABASE文</a> is a post from: <a href="http://www.yukun.info">Yukun&#039;s Blog</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yukun.info/blog/2008/10/mysql-login-user-create-database.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

