當前位置:首頁 » 數據倉庫 » mysql資料庫高級教程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql資料庫高級教程

發布時間: 2022-05-25 04:53:14

⑴ mysql基本語句詳細教程

看他們網上的,寫得都是千篇一律,同時,好多也寫得不是很好,下面是我自己總結的有關mysql的使用細節,也是我在學習過程中的一些記錄吧,希望對你有點幫助,後面有關存儲過程等相關操作還沒有總結好,下次總結好了再發給你吧,呵呵~~~~~

MySql學習筆記

MySql概述:MySql是一個種關聯資料庫管理系統,所謂關聯資料庫就是將數據保存在不同的表中,而不是將所有數據放在一個大的倉庫中。這樣就增加了速度與提高了靈活性。並且MySql軟體是一個開放源碼軟體。

注意,MySql所支持的TimeStamp的最大范圍的問題,在32位機器上,支持的取值范圍是年份最好不要超過2030年,然後如果在64位的機器上,年份可以達到2106年,而對於date、與datetime這兩種類型,則沒有關系,都可以表示到9999-12-31,所以這一點得注意下;還有,在安裝MySql的時候,我們一般都選擇Typical(典型安裝)就可以了,當然,如果還有其它用途的話,那最好選擇Complete(完全安裝);在安裝過程中,一般的還會讓你進行伺服器類型的選擇,分別有三種伺服器類型的選擇,(Developer(開發機)、Server Machine(伺服器)、Dedicated MySql Server Machine(專用MYSQL伺服器)),選擇哪種類型的伺服器,只會對配置向導對內存等有影響,不然其它方面是沒有什麼影響的;所以,我們如果是開發者,選擇開發機就可以啦;然後接下來,還會有資料庫使用情況對話框的選擇,我們只要按照默認就可以啦;

連接與斷開伺服器:
連接:在windows命令提示符下輸入類似如下命令集:mysql –h host –u user –p
例如,我在用的時候輸入的是:mysql –h localhost –u root –p
然後會提示要你輸入用戶密碼,這個時候,如果你有密碼的話,就輸入密碼敲回車,如果沒有密碼,直接敲回車,就可以進入到資料庫客戶端;連接遠程主機上的mysql,可以用下面的命令:mysql –h 159.0.45.1 –u root –p 123

斷開伺服器:在進入客戶端後,你可以直接輸入quit然後回車就可以了;

下面就資料庫相關命令進行相關說明
你可以輸入以下命令對資料庫表格或者資料庫進行相關操作,在這里就省略了,然後直接進行文字說明了;

Select version(),current_date;//從伺服器得到當前mysql的版本號與當前日期
Select user(); //得到當前資料庫的所有用戶
Use databasename; 進入到指定的資料庫當中,然後就可以操作這個資料庫當中的表格了
Show databases; //查詢目前資料庫中所有的資料庫,並且顯示出來;
Create batabase databasename;創建資料庫,例如:create database manager;
Show tables; //查看當前資料庫中的所有表格;
Create table tablename(colums);創建表,並且給表指定相關列,例如:create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);

Describe tablename;將表當中的所有信息詳細顯示出來,例如:describe pet;
可以用命令一次插入多條記錄,例如:
Insert into pet values(『Puffball』,』Diane』,』hamster』,』f』,』1993-12-3』,null),( 『Puffball』,』Diane』,』hamster』,』f』,』1993-12-3』,now());
Select * from pet; 從pet表當中查詢出所有的記錄,顯示出來;
Delete from pet where id=1;刪除ID為1的那一條記錄;
Update pet set birth=』2001-1-3』 where name=』Bowser』;更新name為Bowser的記錄當中的birth欄位的值;
Select distinct owner from pet;從pet表中選擇出owner欄位的值唯一的行,如果有多行記錄這個欄位的值相同,則只顯示最後一次出現這一值的一行記錄;

有關日期計算:

Select name,birth,curdate(),(year(curdate())-year(birth)) as age from pet;
此處,year()函數用於提取對應欄位的年份,當然類似的還有month(),day()等;

在mysql當中,sql語句可以使用like查詢,可以用」_」配任何單個字元,用」%」配任意數目字元,並且SQL模式默認是忽略大小寫,例如:select * from pet where name like 『%fy』;
當然也可以用正則表達式模式進行配。

同時在sql當中,也要注意分組函數、排序函數、統計函數等相關用法,在這里只列舉一二;
Select species,count(*) from pet group by speceis;
Select * from pet order by birth desc;

查詢最大值的相關操作:
Select max(age) from pet;
取前多少項記錄,這個主要用於分頁查詢操作當中,
Select * from pet order by birth desc limit 3;取前三條記錄,
Select * from pet order by birth desc limit 0,3;這個可以用於分頁查詢,limit後面的第一個參數,是起始位置,第二個參數是取記錄條數;

有關創建表格自增長欄位的寫法:
Create table person(id int(4) not null auto_increment,name char(20) not null,primary key (id));

修改表操作:
向表中增加欄位:注意,在這個地方,如果是增加多個欄位的時候,就要用括弧括起來,不然會有問題,如果是單個欄位的話,不用括弧也沒事;
Alter table test add(address varchar(50) not null default 『xm』,email varchar(20) not null);

將表中某個欄位的名字修改或者修改其對應的相關屬性的時候,要用change對其進行操作;
Alter table test change email email varchar(20) not null default 『zz』;//不修改欄位名

Alter table test change email Email varchar(30) not null;//修改欄位名稱

刪除表中欄位:
Alter table test drop email;//刪除單個欄位
Alter table test drop address,drop email;//刪除多列

可以用Drop來取消主鍵與外鍵等,例如:
Alter table test drop foreign key fk_symbol;
刪除索引:
Drop index index_name on table_name;
例如:drop index t on test;
向表中插入記錄:注意,當插入表中的記錄並不是所有的欄位的時候,應該要在前面列出欄位名稱才行,不然會報錯;
Insert into test(name) values(『ltx』);
Insert into test values(1,』ltx』);
也可以向表中同時插入多列值,如:
Insert into test(name) values(『ltx』),(『hhy』),(『xf』);
刪除表中記錄:
Delete from test;//刪除表中所有記錄;
Delete from test where id=1;//刪除表中特定條件下的記錄;

當要從一個表或者多個表當中查詢出一些欄位然後把這些欄位又要插入到另一個表當中的時候,可以用insert …..select語法;
Insert into testt(name) (select name from test where id=4);

從文件中讀取行插入數據表中,可以用Load data infile語句;
Load data infile 『test.txt』 into table test;

可以用Describe語法進行獲取有關列的信息;
Describe test;//可以查看test表的所有信息,包括對應列欄位的數據類型等;

MySql事務處理相關語法;

開始一項新的事務:start transaction或者begin transaction
提交事務:commit
事務回滾:rollback
set autocommit true|false 語句可以禁用或啟用默認的autocommit模式,只可用於當前連接;
例子:

Start transaction;

Update person set name=』LJB』 where id=1;

Commit | rollback;

資料庫管理語句
修改用戶密碼:以root用戶為例,則可以寫成下面的;mysql –u root –p 舊密碼 –password 新密碼

Mysql –u root –password 123;//將root用戶的密碼修改成123,由於root用戶開始的時候,是沒有密碼的,所以-p舊密碼就省略了;
例如修改一個有密碼的用戶密碼:mysql –u ltx –p 123 –password 456;

增加一個用戶test1,密碼為abc,讓他可以在任何時候主機上登陸,並對所有資料庫有查詢、插入、修改、刪除的許可權。
Grant select,insert,update,delete on *.* to test1@」%」 identified by 『abc』;
增加一個test2用戶,密碼為abc,讓他只可以在localhost上登陸,並且可以對資料庫進行查詢、插入、修改、刪除操作;
Grant select,insert,update,delete on mydb.* to test2@localhost identified by 『abc』;
如果不想讓用戶test2有密碼,可以再輸入以下命令消掉密碼:
Grant select,insert,update,delete on mydb.* to test2@localhost identified by 「」;

備份資料庫常用命令:mysqlmp –h host –u username –p dbname>保存路徑與文件名
然後回車後,會讓你輸入用戶密碼,輸入密碼後,再回車就OK啦;
Mysqlmp –hlocalhost –uroot –p test >E:\db\test.sql

這一命令具體解釋下:
這個命令就是備份test資料庫,並且將備份的內容存儲為test.sql文件,並且保存在E:\db下面;
命令當中-p 前面的test是資料庫名,然後在資料庫名後面要跟上一個」>」,然後接下來,就是寫要保存的位置與保存文件的文件名;

將備份好的資料庫導入到資料庫當中去:也就是運行.sql文件將資料庫導入資料庫當中去->
首先你得創建資料庫,然後運行如下命令:mysql –hlocalhost –uroot –p linux<E:\db\test.sql然後回車,再輸入密碼就可以啦;
解釋下上面的命令:linux是就要導入的資料庫名字,然後後面要緊跟著「<」符號,然後後面就是要導入的資料庫文件;

將資料庫導出保存成XML文件、從XML文件導入數據到資料庫:

導出表中數據:mysql –X –h hostName –u userName –p Pwd –e 「use DatabaseName;sql;」 >xml文件名
或者用另外一種方式也行:mysqlmp –xml –h hostName –u userName –p pwd dbName tableName //這一種只用於顯示在當前的mysql客戶端,不保存到文件當中;
相關說明:-X代表的是文件的格式是XML,然後-e一寫不能掉,還有就是要用雙引號將要操作的語句括起來;單引號不行;
例如:mysql –X –hlocalhost –uroot –p –e 「use test;select * from pet;」>E:\db\out.xml
從XML文件導入數據到資料庫:
Insert into tableName values(1,load_file(『filepath』));
例如:insert into pet values(1,load_file(「E:\db\out.xml」));

查看資料庫狀態與查詢進程:

Show status;//查看狀態
Show processlist;//查看進程

更改用戶名,用以下命令:
Update set user=」新名字」 where user=」舊用戶名」;

給資料庫用戶設置管理員許可權:
Mysqladmin –h host –u username –p pwd;
以root用戶為例;
Mysqladmin –h localhost –u root –p 123;

存儲過程與函數

存儲程序和函數分別是用create procere和create function語句,一個程序要麼是一個程序要麼是一個函數,使用call語句來調用程序,並且程序只能用輸出變數傳回值;
要想在MySql5.1中創建子程序,必須具有create routine許可權,並且alter routine和execute許可權被自動授予它的創建者;

創建存儲過程:
首先聲明分隔符,所謂分隔符是指你通知mysql客戶端你已經輸入一個sql語句的字元或字元串符號,在這里我們就以「//」為分隔符;

Delimiter 分隔符\
如:delimiter //
再創建存儲過程:
Create procere 存儲過程名 ( )
聲明存儲過程開始:
begin
然後開始寫存儲過程體:
Select * from pet;
結束存儲過程:
End;//
剛剛的例子全部寫出來,完整的代碼就是:
Delimiter //
Create procere spt () //注意,這個地方,存儲過程名與括弧之間要有個空格
Begin
Select * from pet;
End;//到這里,整個存儲過程就算寫完啦

執行存儲過程:
Call 存儲過程名 ();//
如,我們執行剛剛創建的存儲過程,就是:
Call spt ();//

需要說明的是存儲過程名後面一定要加個空格,而後面那個括弧,則是用於傳送參數的參數列表;另外,我們創建存儲過程完成後,也只是創建了,但是只有調用call 存儲過程名 ();//後才算執行完畢,才能看到存儲過程的結果;

⑵ MySQL有什麼推薦的學習書籍

1、《MySQL技術內幕:InnoDB存儲引擎》

《MySQL技術內幕:InnoDB存儲引擎》的作者是姜承堯。本書從源代碼的角度深度解析了InnoDB

的體系結構、實現原理、工作機制,並給出了大量最佳實踐。

2、《MySQL完全手冊》

《MySQL完全手冊》詳細介紹了如何使用可定製的MySQL資料庫管理系統支持健壯的、可靠的、任

務關鍵的應用程序。

3、《深入淺出mysql》

《深入淺出mysql》從資料庫的基礎、開發、優化、管理維護4個方面對MySQL進行了詳細的介紹,

其中每一部分都獨立成篇。

基礎篇主要適合於MySQL的初學者,內容包括MySQL的安裝與配置、SQL基礎、MySQL支持的數

據類型、MySQL中的運算符、常用函數、圖形化工具的使用等。

4、《 資料庫索引設計與優化》

本文以MySQL資料庫為研究對象,討論與資料庫索引相關的一些話題。特別需要說明的是,MySQL

支持諸多存儲引擎,而各種存儲引擎對索引的支持也各不相同。

5、《高性能MySQL》

《高性能MySQL》是分享MySQL實用經驗的圖書。它不但可以幫助MySQL初學者提高使用技巧,

更為有經驗的MySQL DBA指出了開發高性能MySQL應用的途徑。

(2)mysql資料庫高級教程擴展閱讀:

《MySQL技術內幕:InnoDB存儲引擎》是國內目前唯一的一本關於InnoDB的著作,由資深MySQL

專家親自執筆,中外資料庫專家聯袂推薦,權威性毋庸置疑。

它能為讀者設計和管理高性能、高可用的資料庫系統提供絕佳的指導。注重實戰,全書輔有大量的

案例,可操作性極強。全書首先全景式地介紹了MySQL獨有的插件式存儲引擎,分析了MySQL的各

種存儲引擎的優勢和應用環境。

參考資料:網路——MySQL技術內幕:InnoDB存儲引擎

⑶ 如何免費獲取MySQL教程

你好,MySQL可以說是當下熱門的語言之一,這不僅因為它的范圍廣,更是因為它帶來的高薪,很多人看到了這一行情紛紛轉行學習MySQL,那如何免費獲得MySQL教程成為大家都關心的話題。

千鋒教育推出的MySQL教程從初學者的角度出發,通過通俗的語言、豐富的實例詳細講解了MySQL開發應該掌握的各項技術。《MySQL資料庫從入門到精通》全書共分13章,內容囊括MySQL資料庫的基礎知識和高級進階,最後一章安排了綜合案例,有助於讀者鞏固所學知識。書中所有知識點都結合具體實例進行講解,對涉及的程序代碼給出了詳細解釋,可以使讀者輕松領會MySQL的精髓,快速掌握開發技能。本書既可作為高等院校本、專科計算機相關專業的MySQL資料庫入門教材,也適合廣大編程愛好者自學參考。

為了方便廣大編程愛好者的學習,千鋒教育特推出試讀活動,《MySQL資料庫從入門到精通》電子書免費送,免費獲取MySQL教程就是如此簡單。

⑷ mysql入門教程PPT

MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle

旗下產品。MySQL 最流行的關系型資料庫管理系統,在 WEB 應用方面MySQL是最好的

RDBMS (Relational Database Management System,關系資料庫管理系統) 應用軟體

之一。

MySQL教程—學完這個MySQL就精通了

⑸ OS X 系統上如何升級 Mysql 資料庫

Safari 7.0 Mac OS X 10.9
如果你之前在OS X 10.8 時期安裝了資料庫可能是 5.4版本的。 到了 10.9 或許你需要升級資料庫到5.5 或者 5.6 。 如下就是升級的方法。 針對於 OS X Mysql 資料庫的 高級應用的用戶教程。
首先停止 Mysql 服務
sudo /usr/local/mysql/support-files/mysql.server stop


然後下載你需要的 Mysql 安裝包。

如果你之前有啟動項 與 偏好設置安裝了 。 那隻需要安裝第一個資料庫的安裝包即可。

安裝好以後你文件會存儲在。
/usr/local/mysql-5.6.10-osx10.7-x86_64


並且 mysql 的鏈接會指向同樣的位置
/usr/local/mysql

而你之前的資料庫應在在同樣的位置

/usr/local/mysql-5.5.13-osx10.6-x86_64


現在我們要做的就是替換資料庫文件 data 文件夾。 首先將新資料庫文件夾改名
sudo mv /usr/local/mysql-5.6.10-osx10.7-x86_64/data /usr/local/mysql-5.6.10-osx10.7-x86_64/dataold


然後將老的資料庫目錄的資料庫文件復制過去

sudo cp -rf /usr/local/mysql-5.5.13-osx10.6-x86_64/data /usr/local/mysql-5.6.10-osx10.7-x86_64/


然後設置正確的許可權
sudo chown -R _mysql /usr/local/mysql-5.6.10-osx10.7-x86_64/data


啟動Mysql 然後修復資料庫
sudo /usr/local/mysql/support-files/mysql.server start


運行升級程序
/usr/local/mysql/bin/mysql_upgrade

如果出現錯誤就再運行一次

隨後重啟 Mysql 服務
sudo /usr/local/mysql/support-files/mysql.server restart


查看新的版本號
/usr/local/mysql/bin/mysql


重新設定root 密碼
/usr/local/mysql/bin/mysqladmin -u root password 'yourpasswordhere'
.

⑹ mySQL裝好需不需要在環境變數里配置,如何配置

mySQL裝好後配置環境變數的步驟如下:

我們需要准備的材料分別是:電腦、Mysql。

1、首先,查找到mysql安裝目錄,例如:D:xamppmysql。

⑺ 如何配置mysql資料庫

方法/步驟

MySQL安裝文件分為兩種,一種是msi格式的,一種是zip格式的。如果是msi格式的可以直接點擊安裝,按照它給出的安裝提示進行安裝(相信大家的英文可以看懂英文提示),一般MySQL將會安裝在C:\Program Files\MySQL\MySQL Server 5.6 該目錄中;zip格式是自己解壓,解壓縮之後其實MySQL就可以使用了,但是要進行配置。
解壓之後可以將該文件夾改名,放到合適的位置,個人建議把文件夾改名為MySQL Server 5.6,放到C:\Program Files\MySQL路徑中。當然你也可以放到自己想放的任意位置。

完成上述步驟之後,很多用戶開始使用MySQL,但會出現圖示的錯誤。這是因為沒有配置環境變數所致。配置環境變數很簡單:
我的電腦->屬性->高級->環境變數
選擇PATH,在其後面添加: 你的mysql bin文件夾的路徑 (如:C:\Program Files\MySQL\MySQL Server 5.6\bin )
PATH=.......;C:\Program Files\MySQL\MySQL Server 5.6\bin (注意是追加,不是覆蓋)

配置完環境變數之後先別忙著啟動mysql,我們還需要修改一下配置文件(如果沒有配置,之後啟動的時候就會出現圖中的錯誤哦!:錯誤2 系統找不到文件),mysql-5.6.1X默認的配置文件是在C:\Program Files\MySQL\MySQL Server 5.6\my-default.ini,或者自己建立一個my.ini文件,
在其中修改或添加配置(如圖):
[mysqld]
basedir=C:\Program Files\MySQL\MySQL Server 5.6(mysql所在目錄)
datadir=C:\Program Files\MySQL\MySQL Server 5.6\data (mysql所在目錄\data)

以管理員身份運行cmd(一定要用管理員身份運行,不然許可權不夠),
輸入:cd C:\Program Files\MySQL\MySQL Server 5.6\bin 進入mysql的bin文件夾(不管有沒有配置過環境變數,也要進入bin文件夾,否則之後啟動服務仍然會報錯誤2)
輸入mysqld -install(如果不用管理員身份運行,將會因為許可權不夠而出現錯誤:Install/Remove of the Service Denied!)
安裝成功

安裝成功後就要啟動服務了,繼續在cmd中輸入:net start mysql(如圖),服務啟動成功!
此時很多人會出現錯誤,請看注意:
注意:這個時候經常會出現錯誤2和錯誤1067。
如果出現「錯誤2 系統找不到文件」,檢查一下是否修改過配置文件或者是否進入在bin目錄下操作,如果配置文件修改正確並且進入了bin文件夾,需要先刪除mysql(輸入 mysqld -remove)再重新安裝(輸入 mysqld -install);
如果出現錯誤1067,那就是配置文件修改錯誤,確認一下配置文件是否正確。

服務啟動成功之後,就可以登錄了,如圖,輸入mysql -u root -p(第一次登錄沒有密碼,直接按回車過),登錄成功!

⑻ 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

DESCRIBEstudent;

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中就講解了如何刪除外鍵關系。

⑼ windows10怎麼用命令進入mysql資料庫

1、windows打開命令行,在左下角開始,運行,cmd,mysql。2、開2、始,運行,cmd [ ,cd mysql安裝目錄/bin ], mysql -u userName -p Password先用CD命令進到mysql的BIN目錄。
3、然後 mysql -u root –p。
4、輸入ROOT的密碼。

⑽ 怎麼往mysql表裡添加數據

方法如下:

1、首先打開Mysql命令行編輯器,連接Mysql資料庫;

(10)mysql資料庫高級教程擴展閱讀

MySQL是一個關系型資料庫管理系統,由瑞典MySQL AB 公司開發,目前屬於Oracle旗下產品。MySQL 是最流行的關系型資料庫管理系統之一,在 WEB 應用方面,MySQL是最好的RDBMS(Relational Database Management System,關系資料庫管理系統) 應用軟體。

MySQL是一種關系資料庫管理系統,關系資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。

MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標准化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。

由於其社區版的性能卓越,搭配PHP和Apache可組成良好的開發環境。

與其他的大型資料庫,例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,但是這絲毫也沒有減少它受歡迎的程度。對於一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有餘,而且由於 MySQL是開放源碼軟體,因此可以大大降低總體擁有成本。

Linux作為操作系統,Apache或Nginx作為Web伺服器,MySQL 作為資料庫,PHP/Perl/Python作為伺服器端腳本解釋器。由於這四個軟體都是免費或開放源碼軟體(FLOSS),因此使用這種方式不用花一分錢(除開人工成本)就可以建立起一個穩定、免費的網站系統,被業界稱為「LAMP「或「LNMP」組合。

MyISAMMySQL 5.0 之前的默認資料庫引擎,最為常用。擁有較高的插入,查詢速度,但不支持事務

InnoDB事務型資料庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5 起成為默認資料庫引擎

BDB源 自 Berkeley DB,事務型資料庫的另一種選擇,支持Commit 和Rollback 等其他事務特性

Memory所有數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會佔用和數據量成正比的內存空間。並且其內容會在 MySQL 重新啟動時丟失

Merge將一定數量的 MyISAM 表聯合而成一個整體,在超大規模數據存儲時很有用

Archive非常適合存儲大量的獨立的,作為歷史記錄的數據。因為它們不經常被讀取。Archive 擁有高效的插入速度,但其對查詢的支持相對較差

Federated將不同的 MySQL 伺服器聯合起來,邏輯上組成一個完整的資料庫。非常適合分布式應用

Cluster/NDB高冗餘的存儲引擎,用多台數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用

CSV: 邏輯上由逗號分割數據的存儲引擎。它會在資料庫子目錄里為每個數據表創建一個 .csv 文件。這是一種普通文本文件,每個數據行佔用一個文本行。CSV 存儲引擎不支持索引。

BlackHole:黑洞引擎,寫入的任何數據都會消失,一般用於記錄 binlog 做復制的中繼

EXAMPLE 存儲引擎是一個不做任何事情的存根引擎。它的目的是作為 MySQL源代碼中的一個例子,用來演示如何開始編寫一個新存儲引擎。同樣,它的主要興趣是對開發者。EXAMPLE 存儲引擎不支持編索引。

另外,MySQL 的存儲引擎介面定義良好。有興趣的開發者可以通過閱讀文檔編寫自己的存儲引擎。