前言
這次的作業需要我建立一個小的數據庫。
這次作業我使用了mysql,進行了建庫、建表、查詢、插入等操作。
本文是對本次作業相關的mysql操作過程及過程中出現的問題的記錄。
另一篇文章(詳情請點擊)介紹了如何使用pymysql連接該數據庫並使用Flask搭建后端接口,響應前端的GET和POST請求。
正文
作業中對數據庫的要求是:
- 建立一個用戶信息表,其包括用戶名、密碼、手機號、郵箱和手機號等屬性,並向其中插入幾條測試數據。
登錄數據庫
因為挺久沒用數據庫,就先測試下自己之前裝的mysql還能不能用,於是打開CMD運行如下指令:
mysql
出現如下錯誤:
ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
看起來是因為沒輸密碼
所以輸入密碼,運行如下指令:
mysql -u root -p
-u
參數是指username、user之類的,即用戶名,我的用戶名是root
;-p
參數是指password,運行下面這條指令后,會要求輸入密碼,輸入正確密碼即成功登錄。
我的mysql環境還可以,直接登錄成功。
建庫
執行如下指令,創建名為shopdata的數據庫,會得到Query OK, 1 row affected (x.xx sec)
。
create database shopdata;
進入/選擇數據庫
執行如下指令后,會看到Database changed
的信息。
use shopdata;
建表
執行如下指令,創建名為userinfo的表。
我這里對userinfo的定義是:
-
主鍵是用戶名userid
-
password是非NULL的
-
phone和email是unique的
-
這5個屬性的類型都是varchar(15)
最長15,對於email來說不太夠用
create table userinfo (
'userid' varchar(15) primary key,
'password' varchar(15) not null,
'company' varchar(15),
'phone' varchar(15) unique,
'email' varchar(15) unique
);
執行上邊這條命令后,得到了一個錯誤:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''userid' varchar(15) primary key,
'password' varchar(15) not null,
'comp' at line 2
經查詢,發現屬性名應該用反引號`而不是單引號',所以將單引號改成反引號,執行如下命令:
create table userinfo (
`userid` varchar(15) primary key,
`password` varchar(15) not null,
`company` varchar(15),
`phone` varchar(15) unique,
`email` varchar(15) unique
);
這條命令執行成功,得到Query OK, 0 rows affected (x.xx sec)
。
查看userinfo表
執行如下命令,查看userinfo表的結構。
describe userinfo;
執行后,得到如下結果:
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| userid | varchar(15) | NO | PRI | NULL | |
| password | varchar(15) | NO | | NULL | |
| company | varchar(15) | YES | | NULL | |
| phone | varchar(15) | YES | UNI | NULL | |
| email | varchar(15) | YES | UNI | NULL | |
+----------+-------------+------+-----+---------+-------+
5 rows in set (0.57 sec)
插入3條數據
執行如下命令,插入3條數據。
insert into userinfo values
('user1','0000','zstu','13777860000','7746@qq.com'),
('user2','0000','zstu','13777860001','7747@qq.com'),
('user3','0000','zstu','13777860002','7748@qq.com');
執行后,得到如下信息:
Query OK, 3 rows affected (0.11 sec)
Records: 3 Duplicates: 0 Warnings: 0
查詢數據
執行如下語句,查詢所有元組。
select * from userinfo;
執行后,得到如下結果(在我做好作業后、寫這篇博客前,我已經插入了一些其他的數據,所以有9條記錄):
+------------+----------+---------+-------------+--------------+
| userid | password | company | phone | email |
+------------+----------+---------+-------------+--------------+
| 111 | 111 | 111 | 111 | 111 |
| 112 | 000 | 111 | 000 | 000 |
| aa | 111 | 11 | 11 | 11 |
| test_1 | 00 | NULL | NULL | NULL |
| user_test2 | 0000 | NULL | NULL | NULL |
| user1 | 0000 | zstu | 13777860000 | 7746@qq.com |
| user2 | 0000 | zstu | 13777860001 | 7747@qq.com |
| user3 | 0000 | zstu | 13777860002 | 7748@qq.com |
| 232222 | 0000 | 城站 | 12306 | 12306@qq.com |
+------------+----------+---------+-------------+--------------+
9 rows in set (0.00 sec)
作者:@臭咸魚
轉載請注明出處:https://www.cnblogs.com/chouxianyu/
歡迎討論和交流!