初始信息
mysql默認的端口號碼是3306,服務器是本地localhost
查看mysql版本
SELECT VERSION();
+------------+
| VERSION() |
+------------+
| 5.7.17-log |
+------------+
1 row in set (0.01 sec)
常用規(guī)范
關(guān)鍵字函數(shù)名一律使用大寫(但使用小寫不會報錯)
數(shù)據(jù)庫名兼贡,變量名使用小寫
末尾要加分號
數(shù)據(jù)庫
數(shù)據(jù)庫廣義上說應該是一個框架屡拨,我們針對這個框架創(chuàng)造它所包含的數(shù)據(jù)庫文件只酥。
創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE [IF NOT EXSITS] database_name
[CHARACTER SET character_set]
其中留意[]里面的內(nèi)容,這部分的內(nèi)容為可選項呀狼。如果使用了中括號的關(guān)鍵字裂允,表示如果創(chuàng)建的數(shù)據(jù)庫和之前的數(shù)據(jù)庫同名,那么不會報錯哥艇,數(shù)據(jù)庫會將這個錯誤歸類到warnings中绝编,比如我創(chuàng)建一個已經(jīng)存在的數(shù)據(jù)books
root@localhost (none)CREATE DATABASE BOOKS;
Query OK, 1 row affected (0.01 sec)
root@localhost (none)CREATE DATABASE IF NOT EXISTS books;
Query OK, 1 row affected, 1 warning (0.00 sec)
root@localhost (none)SHOW WARNINGS ;
+-------+------+------------------------------------------------+
| Level | Code | Message |
+-------+------+------------------------------------------------+
| Note | 1007 | Can't create database 'books'; database exists |
+-------+------+------------------------------------------------+
數(shù)據(jù)庫編碼
數(shù)據(jù)庫的編碼可以在創(chuàng)建時,通過第二個方括號中的內(nèi)容來指定貌踏,同時也有對應的命令可以檢測已經(jīng)創(chuàng)建好的數(shù)據(jù)庫的編碼
root@localhost (none)CREATE DATABASE t2 CHARACTER SET gbk;
Query OK, 1 row affected (0.01 sec)
root@localhost (none)SHOW CREATE DATABASE t2;
+----------+------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------+
| t2 | CREATE DATABASE `t2` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+------------------------------------------------------------+
1 row in set (0.00 sec)
如果需要修改已經(jīng)創(chuàng)建好的數(shù)據(jù)庫的編碼十饥,可以使用ALTER命令,這個命令的語法結(jié)構(gòu)與CREATE DATABASE非常相似祖乳。
root@localhost (none)ALTER DATABASE t2 CHARACTER SET = utf8
-> ;
Query OK, 1 row affected (0.00 sec)
修改之后繼續(xù)查看結(jié)果
root@localhost (none)SHOW CREATE DATABASE t2;
+----------+-------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------+
| t2 | CREATE DATABASE `t2` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------+
1 row in set (0.00 sec)
查看已有數(shù)據(jù)庫
使用下面的命令逗堵,會顯示出目前所有的數(shù)據(jù)庫
root@localhost (none)SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| books |
| performance_schema |
| sys |
+--------------------+
數(shù)據(jù)表
一個數(shù)據(jù)庫中可以有多個數(shù)據(jù)表,數(shù)據(jù)表經(jīng)撤沧剩可以使用query等等字串來進行查詢砸捏。
創(chuàng)建數(shù)據(jù)表
我想在數(shù)據(jù)庫test下面創(chuàng)建了一張數(shù)據(jù)表,首先需要打開一個數(shù)據(jù)庫隙赁,使用USE命令垦藏,之后使用函數(shù)查看當前在使用的數(shù)據(jù)庫,確認無誤伞访。
mysql> USE test;
Database changed
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| test |
+------------+
1 row in set (0.00 sec)
現(xiàn)在開始創(chuàng)建一張數(shù)據(jù)表掂骏,創(chuàng)建數(shù)據(jù)庫使用的是 CREATE DATABASE,相應的創(chuàng)建數(shù)據(jù)表使用相似的語法
CREATE TABLE table_name(
)
括號中填寫的內(nèi)容為需要存儲的鍵值對厚掷,以及控制信息弟灼,現(xiàn)在是例子
mysql> CREATE TABLE tb1(
-> username VARCHAR(20),
-> age TINYINT UNSIGNED,
-> salary FLOAT(8,2) UNSIGNED
-> );
Query OK, 0 rows affected (0.07 sec)
這里在數(shù)據(jù)表tb1中創(chuàng)建變長的字符串類型變量username级解,創(chuàng)建TINYINT 無符號類型的變量age,之后創(chuàng)建無符號浮點類型的變量salary田绑。這里的TINYINT 指1個byte(8bit)足夠存儲年齡了勤哗,F(xiàn)LOAT(8,2) UNSIGNED 指一個小數(shù),它的小數(shù)點左側(cè)為8位掩驱,有個兩位芒划。
創(chuàng)建成功之后,查看一下數(shù)據(jù)表欧穴,這個函數(shù)和SHOW DATABASE函數(shù)類似:
mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| tb1 |
+----------------+
1 row in set (0.00 sec)
如果想要再確認一下數(shù)據(jù)表的結(jié)構(gòu)民逼,可以使用下面的操作:
mysql> SHOW COLUMNS FROM tb1;
+----------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------------+------+-----+---------+-------+
| username | varchar(20) | YES | | NULL | |
| age | tinyint(3) unsigned | YES | | NULL | |
| salary | float(8,2) unsigned | YES | | NULL | |
+----------+---------------------+------+-----+---------+-------+
3 rows in set (0.02 sec)