本文目錄一覽:
- 1、MySQL資料庫基礎+ 資料庫的基本操作?
- 2、掌握Python 操作 MySQL 資料庫
- 3、如何使用MySQL WorkBench操作MySQL資料庫
- 4、在Intellij IDEA中如何操作MYSQL數據表
- 5、本地如何操作伺服器的mysql,詳細教程
- 6、關於mysql資料庫操作
MySQL資料庫基礎+ 資料庫的基本操作?
需要用的資料以鏈接的形式給需要的同學。
我用的mysql版本為: Mysql-5.5.45-win64.msi 密碼是:26zw
圖形化工具 Navicat(前期不推薦用,直接手動敲): Navicat 密碼:c7fs
開始我的MySQL之旅吧 始於2016.12.04
–WH
一、資料庫的安裝
這個就不在這裡過多闡述了,因為網上實在是太多安裝mysql的教程了,有了我給的mysql,在按照這個安裝教程(MySQL安裝教程)去看,就能夠安裝完好。
安裝好mysql後,如果需要使用windows命令窗口(也就是cmd)來操作mysql,那麼就需要配置環境變數,在安裝好的mysql下找到bin,將其目錄放到環境變數path中去,就行了,檢測成功與否的方法是在cmd命令窗口中輸入mysql,就會出現一大段英文,就說明成功了,反之失敗,如果不會的話就去百度搜教程。
二、資料庫的基本操作
1、開啟mysql服務命令
net start mysql
2、進入mysql的兩種方式
明文進入:mysql -uroot -proot格式:mysql -u帳號 -p密碼
密文進入:mysql -uroot -p 按enter會提示你輸入密碼(Enter pssword:),此時你寫的密碼就會顯示為***這樣。
3、查看mysql中所有的資料庫(一般在固定的單詞命令就會是用大寫,這個要習慣,看多了敲多了就認識了)
前面四個資料庫是mysql中自帶的,也就是必須的.
SHOW DATABASES;
4、創建名為test_1的資料庫
格式:CREATE DATABASE 資料庫名
CREATE DATABASE test_1;
5、刪除名為test_1的資料庫
格式:DROP DATABASE 資料庫名
DROP DATABASE test_1;
總結:學習了對資料庫的三個操作,1、查看所有資料庫 2、創建資料庫 3、刪除資料庫
三、數據表的基本操作
數據表和資料庫還有Mysql三者的關係
mysql中保存了很多資料庫、一個資料庫中可以保存很多表。
對數據表的增(創建表)刪(刪除表)改(修改表欄位)查(查詢表結構)。 注意:這裡的操作對象是表,對錶的操作也就是表的結構,和表中的欄位的操作(欄位和記錄要分清楚)
前提:表是在資料庫下的,所以要先確實使用哪個資料庫。
USE test_1;
1、創建數據表
格式:CREATE TABLE 數據表名(
欄位名1數據類型[列級別約束條件],
欄位名2數據類型[列級別約束條件],
欄位名3數據類型[列級別約束條件]
);
注意:格式不一定需要這樣隔著寫,完全可以全部寫成一行。但是那樣寫可觀性非常差。我這樣寫只是為了可以看的更清晰。
解釋:
1、[]中括弧中的內容表示可以有可以沒有,
2、列級別這個「列」一定要搞清楚說的是什麼,一張表中有行有列,列表示豎,行表示橫
3、約束條件後面會講到
1.1、創建沒有約束的student表
CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11) );
注釋:SHOW TABLES 查詢資料庫底下的所有表。
1.2、創建有約束的student表
六大約束:主鍵約束、外鍵約束、非空約束、唯一約束、默認約束、自動增加
1.2.1:主鍵約束
PRIMARY KEY(primary key):獨一無二(唯一)和不能為空(非空),通俗的講,就是在表中增加記錄時,在該欄位下的數據不能重複,不能為空,比如以上面創建的表為例子,在表中增加兩條記錄,如果id欄位用了主鍵約束。則id不能一樣,並且不能為空。一般每張表中度有一個欄位為主鍵,唯一標識這條記錄。以後需要找到該條記錄也可以同這個主鍵來確認記錄,因為主鍵是唯一的,並且非空,一張表中每個記錄的主鍵度不一樣,所以根據主鍵也就能找到對應的記錄。而不是多條重複的記錄。如果沒有主鍵,那麼表中就會存在很多重複的記錄,那麼即浪費存儲空間,在查詢時也消耗更多資源。
一般被主鍵約束了的欄位度習慣性的稱該欄位為該表的主鍵
單欄位主鍵約束
兩種方式都可以
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12),nameVARCHAR(12),
ageINT(11) ageINT(11),
); PRIMARY KEY(id) );
多欄位主鍵約束(複合主鍵)
這個id和name都市主鍵,說明在以後增加的插入的記錄中,id和name不能同時一樣,比如說可以是這樣。一條記錄為id=1,name=yyy、另一條記錄為:id=1,name=zzz。 這樣是可以的。並不是你們所理解的兩個欄位分別度不可以相同。
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12) PRIMARY KEY, nameVARCHAR(12),
ageINT(11) ageINT(11),
);PRIMARY KEY(id,name) );
1.2.2:外鍵約束
什麼是外鍵舉個例子就清楚了,有兩張表,一張表是emp(員工)表,另一張表是dept(部門)表,一個員工屬於一個部門,那麼如何通過員工能讓我們自己他在哪個部門呢?那就只能在員工表中增加一個欄位,能代表員工所在的部門,那該欄位就只能是存儲dept中的主鍵了(因為主鍵是唯一的,才能確實是哪個部門,進而代表員工所在的部門,如果是部門名稱,有些部門的名稱可能是同名。就不能區分了。),像這樣的欄位,就符合外鍵的特點,就可以使用外鍵約束,使該欄位只能夠存儲另一張表的主鍵。如果不被外鍵約束,那麼該欄位就無法保證存儲進來的值就一定是另一張表的主鍵值。
外鍵約束的特點:
1、外鍵約束可以描述任意一個欄位(包括主鍵),可以為空,並且一個表中可以有多個外鍵。但是外鍵欄位中的值必須是另一張表中的主鍵。
2、這樣被外鍵關聯的兩種表的關係可以稱為父子表或者主從表。子表(從表)擁有外鍵欄位的表,父表(主表)被外鍵欄位所指向的表。
3、子表被外鍵約束修飾的欄位必須和父表的主鍵欄位的類型一樣。
注意:一個表中有被外鍵修飾的欄位,就稱該表有外鍵(是「有外鍵」。而不是「是外鍵」),並會給該表中的外鍵約束取一個名稱,所以我們常說的這個表有沒有外鍵,指的不是被外鍵約束修飾的欄位名,而是指這個表是否有存在外鍵約束。也就是說,不能說這個表的外鍵是xxx(該表中被外鍵約束修飾的欄位名),這種說法是錯誤的,但是大多數人已經習慣了這樣,雖然影響不大,但是在很多時候需要理解一個東西時,會造成一定的困擾。
格式:CONSTRAINT外鍵名稱FOREIGN KEY(被外鍵約束的欄位名稱)REFERENCES 主表名(主鍵欄位)
英文解釋:CONSTRAINT:約束REFERENCES:參考
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
解釋:tableB中有一個名為tableA_tableB_1的外鍵關聯了tableA和tableB兩個表,被外鍵約束修飾的欄位為tableB中的deptId,主鍵欄位為tableA中的id
1.2.3:非空約束
NOT NULL. 被該約束修飾了的欄位,就不能為空,主鍵約束中就包括了這個約束
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
1.2.4:唯一約束
UNIQUE 被唯一約束修飾了的欄位,表示該欄位中的值唯一,不能有相同的值,通俗點講,就好比插入兩條記錄,這兩條記錄中處於該欄位的值不能是一樣的。
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);
也就是說在插入的記錄中,每條記錄的name值不能是一樣的。
1.2.5:默認約束
Default 指定這一列的默認值為多少,比如,男性同學比較多,性別就可以設置為默認男,如果插入一行記錄時,性別沒有填,那麼就默認加上男
CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
1.2.6:自動增加
AUTO_INCREMENT 一個表只能一個欄位使用AUTO_INCREMENT,並且使用這個約束的欄位只能是整數類型(任意的整數類型 TINYINT,SMALLIN,INT,BIGINT),默認值是1,也就是說從1開始增加的。一般就是給主鍵使用的,自動增加,使每個主鍵的值度不一樣,並且不用我們自己管理,讓主鍵自己自動生成
CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );
2、查詢表結構
2.1、查看錶基本結構語句
格式1:DESCRIBE 表名/DESC 表名這兩個的功能是一樣的,簡寫了單詞describe
DESCRIBE student;
2.2、查看創建表的語句
格式:SHOW CREATE TABLE 表名
SHOW CREATE TABLE student;
這樣顯示的格式很不好,看不清楚,所以有了下面這個語句
格式:SHOW CREATE TABLE 表名\G
SHOW CREATE TABLE student\G;
3、修改數據表
修改數據表包括:對表中欄位的增加、刪除、修改。 在這個裡面用的關鍵字為 ALTER
3.1、修改表名
格式:ALTER TABLE舊錶名 RENAME[TO]新表名;
將student表名改為student1(改完後在改回來)
ALTER TABLE student RENAME TO student1;
3.2、修改表中的欄位名
格式:ALTER TABLE表名 CHANGE舊欄位名新欄位名新數據類型
將student表中的name欄位名改為 username
ALTER TABLE student CHANGE name username VARCHAR(30);
3.3、修改表中的數據類型
格式:ALTER TABLE表名 MODIFY欄位名數據類型
ALTER TABLE student MODIFY username VARCHAR(20);
解釋:只能修改欄位名的數據類型,但是其原理跟上面change做的事情一樣,這裡也有修改欄位名的過程,只不過修改後的欄位名和修改前的欄位名相同,但是數據類型不一樣。
3.4、修改欄位的排列位置
方式1:ALTER TABLE表名 MODIFY欄位1數據類型 FIRST|AFTER欄位2
解釋:將欄位1的位置放到第一,或者放到指定欄位2的後面
ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;
方式2:ALTER TABLE表名 CHANGE欄位1欄位2數據類型 FIRST|AFTER欄位3
解釋:其實是一樣的,將是欄位2覆蓋欄位1,然後在進行排序
ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;
總結
CHANGE和MODIFY的區別?
原理都市一樣的,MODIFY只能修改數據類型,但是CHANGE能夠修改數據類型和欄位名,也就是說MODIFY是CHANGE的更具體化的一個操作。可能覺得用CHANGE只改變一個數據類型不太爽,就增加了一個能直接改數據類型的使用關鍵字MODIFY來操作。
3.5、添加欄位
格式:ALTER TABLE表名稱 ADD新欄位名數據類型[約束條件][FIRST|AFTER已存在的表名]
解釋:在一個特定位置增加一個新的欄位,如果不指定位置,默認是最後一個。
ALTER TABLE student ADD sex VARCHAR(11);
3.6、刪除欄位
格式:ALTER TABLE表名稱 DROP欄位名;
ALTER TABLE student DROP sex;
3.7、刪除表的外鍵約束
格式:ALTER TABLE表名稱 DROP FOREIGN KEY外鍵約束名
注意:外鍵約束名 指的不是被外鍵約束修飾的欄位名,切記,而是我們在創建外鍵約束關係時取的名字。
3.8、更改表的存儲引擎
格式:ALTER TABLE表名 ENGINE=更改後的存儲引擎名
這個存儲引擎目前我自己也不太清楚,雖然知道有哪幾種引擎,但是稍微深入一點就不清楚了,所以打算留到日後在說。
4、刪除表
4.1、刪除無關聯表
格式:DROP TABLE表名;
ALTER TABLE student;
4.2、刪除被其他表關聯的主表
這個是比較重要的一點,在有外鍵關聯關係的兩張表中,如果刪除主表,那麼是刪不掉的,並且會報錯。因為有張表依賴於他。那怎麼辦呢?針對這種情況,總共有兩種方法
1、先刪除你子表,然後在刪除父表,這樣就達到了刪除父表的目的,但是子表也要被刪除
2、先解除外鍵關係,然後在刪除父表,這樣也能達到目的,並且保留了子表,只刪除我們不需要的父表。在3.7中就講解了如何刪除外鍵關係。
掌握Python 操作 MySQL 資料庫
本文Python 操作 MySQL 資料庫需要是使用到 PyMySQL 驅動
Python 操作 MySQL 前提是要安裝好 MySQL 資料庫並能正常連接使用,安裝步驟詳見下文。
注意: 安裝過程我們需要通過開啟管理員許可權來安裝,否則會由於許可權不足導致無法安裝。
首先需要先下載 MySQL 安裝包, 官網下載地址 下載對應版本即可,或直接在網上拉取並安裝:
許可權設置:
初始化 MySQL:
啟動 MySQL:
查看 MySQL 運行狀態:
Mysql安裝成功後,默認的root用戶密碼為空,你可以使用以下命令來創建root用戶的密碼:
登陸:
創建資料庫:
查看資料庫:
PyMySQL 模塊使用 pip命令進行安裝:
假如系統不支持 pip 命令,可以使用以下方式安裝:
pymysql .connect 函數:連接上資料庫
輸出結果顯示如下:表面資料庫連接成功
使用 pymysql 的 connect() 方法連接資料庫,connect 參數解釋如下:
conn.cursor():獲取游標
如果要操作資料庫,光連接數據是不夠的,咱們必須拿到操作資料庫的游標,才能進行後續的操作,游標的主要作用是用來接收資料庫操作後的返回結果,比如讀取數據、添加數據。通過獲取到的資料庫連接實例 conn 下的 cursor() 方法來創建游標,實例如下:
輸出結果為:
cursor 返回一個游標實例對象,其中包含了很多操作數據的方法,如執行sql語句,sql 執行命令: execute() 和 executemany()
execute(query,args=None):
executemany(query,args=None):
其他游標對象如下表:
完整資料庫連接操作實例如下:
以上結果輸出為:
創建表代碼如下:
如下所示資料庫表創建成功:
插入數據實現代碼:
插入數據結果:
Python查詢Mysql使用 fetchone() 方法獲取單條數據, 使用fetchall() 方法獲取多條數據。
查詢數據代碼如下:
輸出結果:
DB API中定義了一些資料庫操作的錯誤及異常,下表列出了這些錯誤和異常:
本文給大家介紹 Python 如何連接 Mysql 進行數據的增刪改查操作,文章通過簡潔的代碼方式進行示例演示,給使用 Python 操作 Mysql 的工程師提供支撐。
如何使用MySQL WorkBench操作MySQL資料庫
打開MySQL Workbench,並連接資料庫。圖中顯示連接資料庫對話框
成功連接後,點擊如圖所示紅色按鈕,「create new Schema」,填寫資料庫名稱如「new_schema」,點擊「應用」,如圖
在彈出的的確認對話框中點擊「應用」,如圖
OK,成功創建,如圖
如圖操作,我們開始創建表
需要填寫表名(new_table),列名」id、date「和選擇列的類型,以及列屬性(主鍵),點擊」應用「
如圖所示,成功創建表,點擊右鍵,選擇「select rows」可以編輯表內容
在Intellij IDEA中如何操作MYSQL數據表
我們平時都是通過資料庫管理工具操作MYSQL數據表,那麼如何在Intellij IDEA中操作MYSQL數據表呢?下面我給大家分享一下。
工具/材料
Intellij IDEA
首先點擊右側的Data Source,選擇下拉菜單中的MySQL選項,如下圖所示
接下來在彈出的Data Sources and Drivers界面中輸入Mysql的用戶名和密碼進行資料庫連接,如下圖所示
連接成功MYSQL資料庫以後,資料庫中的表都會顯示出來了,如下圖所示,我們雙擊要操作的數據表
然後在右側就會顯示此數據表的所有數據,在這裡可以對數據表的數據進行相應的增刪改查,如下圖所示
接下來點擊此數據表頂部的加號按鈕進行數據行的增加,如下圖所示
編輯完新的數據以後需要右鍵單擊數據行,然後選擇Submit New Row選項,如下圖所示
接下來我們還可以在輸入欄中通過列表進行數據的過濾,如下圖所示
最後,如果你不習慣操作界面,那麼可以打開右側的SQL窗口按鈕,如下圖所示
然後在工作區就會展現出SQL編輯區,我們就可以在裡面輸入SQL語句進行數據表的操作,如下圖所示
本地如何操作伺服器的mysql,詳細教程
前置條件:
1、在阿里雲伺服器de系統是win service 2012。
2、伺服器里自己安裝了my sql 5.7
3、本地也安裝了my sql 5.7
需求:想通過本地的mysql連接上遠程的伺服器的mysql,這樣自己在本地操作資料庫比在伺服器里資料庫要好。
步驟:
一、增加允許遠程連接 MySQL 用戶 並授權。
在你安裝路徑下的bin文件夾里進行命令行的設置。
1、首先以 root 帳戶登陸 MySQL
在伺服器中打開命令行(shift+右鍵)
打開資料庫管理員許可權
mysql -uroot -p 123
我去,對應的是123是對應到資料庫名。
果斷改為
mysql -uroot -p
輸入mysql的密碼。
2、查看用戶的許可權
mysql select host,user from user; (查看用戶的許可權情況)
3、創建遠程登錄用戶並授權
進入到伺服器的命令行里
輸入
use mysql
在輸入
grant all PRIVILEGES on discuz.* to ted@’123.123.123.123′ identified by ‘123456’;
上面的語句表示將 discuz 資料庫的所有許可權授權給 ted 這個用戶,允許 ted 用戶在 123.123.123.123 這個 IP 進行遠程登陸,並設置 ted 用戶的密碼為 123456 。
注意:
(1)all PRIVILEGES 表示賦予所有的許可權給指定用戶,這裡也可以替換為賦予某一具體的許可權,例如:select,insert,update,delete,create,drop 等,具體許可權間用「,」半形逗號分隔。
(2)discuz.* 表示上面的許可權是針對於哪個表的,discuz 指的是資料庫,後面的 * 表示對於所有的表,由此可以推理出:對於全部資料庫的全部表授權為「*.*」,對於某一資料庫的全部表授權為「資料庫名.*」,對於某一資料庫的某一表授 權為「資料庫名.表名」。
(3)ted 表示你要給哪個用戶授權,這個用戶可以是存在的用戶,也可以是不存在的用戶。
(4)123.123.123.123 表示允許遠程連接的 IP 地址,如果想不限制鏈接的 IP 則設置為「%」即可。
(5)123456 為用戶的密碼。
我最終使用的是把整個資料庫的許可權都ok,全部資料庫的全部表,給root用戶授權。沒有設定遠程連接IP地址。
4、執行更新許可權(刷新許可權)
flush privileges;
5、再一次查看資料庫用戶許可權
mysql select host,user from user; (再次查看用戶的許可權情況)
二、打開伺服器上的防火牆阻止 3306 埠,可以公網訪問。
MySQL 默認的埠是 3306 ,需要確定防火牆沒有阻止 3306 埠,否則遠程是無法通過 3306 埠連接到 MySQL 的。
如果您在安裝 MySQL 時指定了其他埠,請在防火牆中開啟您指定的 MySQL 使用的埠號。
找到防火牆的允許的應用,打開資料庫的公用和專用。
三、在本地建立伺服器資料庫連接
1、點擊這個
2、數據里填上連接的名字,伺服器IP,以及連接資料庫的名字和密碼
3、點擊configure server mangement
如果報這個錯誤,說明是伺服器的3306埠與沒有打開。
下面圖連接成功
選擇SSH login。。。。
輸入伺服器的公網IP和埠(我也不知道是啥埠我寫的是本地跑的項目的本地介面)
一路next就ok。
關於mysql資料庫操作
1.
create
database
school;//創建資料庫
2.
show
databases;
//查看資料庫
3.
use
school;
//使用創建的資料庫
4.
create
table
students
(
s_no
int
,name
varchar(20),gender
varchar(10),birthday
datetime,image
blob
,address
varchar(50),
c_no
int,primary
key
(s_no,c_no)
);
//建students表
5.
create
table
classes(c_no
int,name
varchar(20)
,
class_adviser
varchar(20)
,foreign
key(c_no)
REFERENCES
students(c_no));
//建classes表
6.
insert
into
students(s_no,name,gender,birthday,image,address,c_no)
values(1,’Sally’,’FM’,’1987-1-2′,null,’aaaaa’,1);
7.
insert
into
students(s_no,name,gender,birthday,image,address,c_no)
values(2,’Nicholas’,’M’,’1985-8-8′,Null,’bbbbb’,1);
8.
insert
into
students(s_no,name,gender,birthday,image,address,c_no)
values(3,’Jason’,’M’,’1988-5-19′,Null,’ccccc’,2);
9.
insert
into
students(s_no,name,gender,birthday,image,address,c_no)
values(4,’Jamile’,’M’,’1979-2-5′,Null,’ddddd’,2);
10.
insert
into
classes
(c_no,name,class_adviser)
values
(1,’Class1′,’Mike’);
11.
insert
into
classes
(c_no,name,class_adviser)
values
(2,’Class2′,’Andy’);
12.
select
a.*
from
students
a,
classes
b
where
a.c_no
in
(select
b.c_no
from
classes
b
where
b.class_adviser
=
‘Mike’)
and
a.c_no
=
b.c_no;
//查數據
或者
select
students.s_no,
students.name,
students.gender,
students.birthday,
students.image,
students.address,
students.c_no
from
students,
classes
where
students.c_no
in
(select
c_no
from
classes
where
class_adviser
=
‘Mike’)
and
students.c_no
=
classes.c_no;
盧旭
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/303784.html