mysql資料庫使用
這很簡單啊!
在Windows下,假如你的MySQL裝在 D:\MySQL
就可以這樣:
先切換到它的bin目錄
cd D:\MySQL\bin\
D:\MySQL\bin>mysql -u root -p
接著輸入你的root密碼
接下來你就可以創建資料庫、創建用戶、創建修改表之類的操作(常用命令如下)。
查看現有資料庫
mysql> show databases;
創建資料庫(假如資料庫名為 mydb)
mysql> create database mydb;
刪除資料庫(假如資料庫名為 mydb)
mysql> drop database accounts;
使用資料庫(假如使用資料庫 mydb)
mysql> use mydb;
執行完使用資料庫命令後,就可以對該資料庫進行創建、修改、插入、刪除表等操作,這些表的操作命令你可以到網上找找,不是很難的。一個資料庫就相當於一個 Excel 文件,而表則相當於Excel文件的單元格,數據就是存放在表中。
⑵ 怎麼使用MySQL資料庫的23個注意事項
使用MySQL,安全問題不能不注意。以下是MySQL提示的23個注意事項:
1。如果客戶端和伺服器端的連接需要跨越並通過不可信任的網路,那麼就需要使用SSH隧道來加密該連接的通信。
2。用set password語句來修改用戶的密碼,三個步驟,先「mysql -u root」登陸資料庫系統,然後「mysql> update mysql.user set password=password('newpwd')」,最後執行「flush privileges」就可以了。
3。需要提防的攻擊有,防偷聽、篡改、回放、拒絕服務等,不涉及可用性和容錯方面。對所有的連接、查詢、其他操作使用基於ACL即訪問控制列表的安全措施來完成。也有一些對SSL連接的支持。
4。除了root用戶外的其他任何用戶不允許訪問mysql主資料庫中的user表;
加密後存放在user表中的加密後的用戶密碼一旦泄露,其他人可以隨意用該用戶名/密碼相應的資料庫;
5。用grant和revoke語句來進行用戶訪問控制的工作;
6。不使用明文密碼,而是使用md5()和sha1()等單向的哈系函數來設置密碼;
7。不選用字典中的字來做密碼;
8。採用防火牆來去掉50%的外部危險,讓資料庫系統躲在防火牆後面工作,或放置在DMZ區域中;
9。從網際網路上用nmap來掃描3306埠,也可用telnet server_host 3306的方法測試,不能允許從非信任網路中訪問資料庫伺服器的3306號TCP埠,因此需要在防火牆或路由器上做設定;
10。為了防止被惡意傳入非法參數,例如where ID=234,別人卻輸入where ID=234 OR 1=1導致全部顯示,所以在web的表單中使用''或""來用字元串,在動態URL中加入%22代表雙引號、%23代表井號、%27代表單引號;傳遞未檢 查過的值給mysql資料庫是非常危險的;
11。在傳遞數據給mysql時檢查一下大小;
12。應用程序需要連接到資料庫應該使用一般的用戶帳號,只開放少數必要的許可權給該用戶;
13。在各編程介面(C C++ PHP Perl Java JDBC等)中使用特定『逃脫字元』函數;
在網際網路上使用mysql資料庫時一定少用傳輸明文的數據,而用SSL和SSH的加密方式數據來傳輸;
14。學會使用tcpmp和strings工具來查看傳輸數據的安全性,例如tcpmp -l -i eth0 -w -src or dst port 3306 | strings。以普通用戶來啟動mysql資料庫服務;
15。不使用到表的聯結符號,選用的參數 --skip-symbolic-links;
16。確信在mysql目錄中只有啟動資料庫服務的用戶才可以對文件有讀和寫的許可權;
17。不許將process或super許可權付給非管理用戶,該mysqladmin processlist可以列舉出當前執行的查詢文本;super許可權可用於切斷客戶端連接、改變伺服器運行參數狀態、控制拷貝復制資料庫的伺服器;
18.file許可權不付給管理員以外的用戶,防止出現load data '/etc/passwd'到表中再用select 顯示出來的問題;
19。如果不相信DNS服務公司的服務,可以在主機名稱允許表中只設置IP數字地址;
20。使用max_user_connections變數來使mysqld服務進程,對一個指定帳戶限定連接數;
21.grant語句也支持資源控制選項;
22。啟動mysqld服務進程的安全選項開關,--local-infile=0 或1 若是0則客戶端程序就無法使用local load data了,賦權的一個例子grant insert(user) on mysql.user to 'user_name'@'host_name';若使用--skip-grant-tables系統將對任何用戶的訪問不做任何訪問控制,但可以用 mysqladmin flush-privileges或mysqladmin reload來開啟訪問控制;默認情況是show databases語句對所有用戶開放,可以用--skip-show-databases來關閉掉。
23。碰到Error 1045(28000) Access Denied for user 'root'@'localhost' (Using password:NO)錯誤時,你需要重新設置密碼,具體方法是:先用--skip-grant-tables參數啟動mysqld,然後執行 mysql -u root mysql,mysql>update user set password=password('newpassword') where user='root';mysql>Flush privileges;,最後重新啟動mysql就可以了。
⑶ MYSQL資料庫的作用是什麼
資料庫的作用是將各種數據有序的管理起來,並對其他應用提供統一的介面和服務。
資料庫是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗餘度、與應用程序彼此獨立的數據集合,可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據進行新增、查詢、更新、刪除等操作。
資料庫是存放數據的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是資料庫並不是隨意地將數據進行存放,是有一定的規則的,否則查詢的效率會很低。
當今世界是一個充滿著數據的互聯網世界,充斥著大量的數據。即這個互聯網世界就是數據世界。數據的來源有很多,比如出行記錄、消費記錄、瀏覽的網頁、發送的消息等等。除了文本類型的數據,圖像、音樂、聲音都是數據。
(3)mysql資料庫使用擴展閱讀
發展現狀
在資料庫的發展歷史上,資料庫先後經歷了層次資料庫、網狀資料庫和關系資料庫等各個階段的發展,資料庫技術在各個方面的快速的發展。特別是關系型資料庫已經成為目前資料庫產品中最重要的一員。
80年代以來, 幾乎所有的資料庫廠商新出的資料庫產品都支持關系型資料庫,即使一些非關系資料庫產品也幾乎都有支持關系資料庫的介面。這主要是傳統的關系型資料庫可以比較好的解決管理和存儲關系型數據的問題。
隨著雲計算的發展和大數據時代的到來,關系型資料庫越來越無法滿足需要,這主要是由於越來越多的半關系型和非關系型數據需要用資料庫進行存儲管理,以此同時,分布式技術等新技術的出現也對資料庫的技術提出了新的要求,於是越來越多的非關系型資料庫就開始出現。
這類資料庫與傳統的關系型資料庫在設計和數據結構有了很大的不同, 它們更強調資料庫數據的高並發讀寫和存儲大數據,這類資料庫一般被稱為NoSQL(Not only SQL)資料庫。 而傳統的關系型資料庫在一些傳統領域依然保持了強大的生命力。
⑷ 求MYSQL資料庫 詳細使用 教程
其一:
mssql
是微軟SQL
Server,運行於windows
2000,2003等平台
mssql
的正式名字是
SQL
Server
MS公司出的。圖形操作界面好一些,性能還可以。在mssql和oracle上不能互換.支持OLEDB連接.asp﹑mssql
只能for
windows
mysql
是個開源的資料庫Server,可運行在windows平台、unix\\linux平台,其標准版是免費的,性能也可以。速度快,用於小規模.命令行界
面.
其二:
驅動程序不一樣,欄位類型不一樣,比如說,mysql裡面沒有nvarchar這些數據類型,而mssql裡面有。
其三:
mysql有完整的許可權控制,全面的tcp協議支持,能跨web存取,只要結構設計地好,mysql也是一套非常有價值和資料庫系統,但是不支持外鍵,不
支持事務,不支持存儲過程,不支持觸發器.全文搜索就更沒有了﹐除for
window版要給錢﹐其它平台都是免費,可以把它理解為有用戶控管的
access資料庫.但是它比較適用於中小型的項目,存儲大量數據還是不行。
但是mssql的容量大,穩定性好,大中型項目都可以用它來做,速度沒有mysql快。也就是以下兩句話:
MYSQL
用PHPMYADMIN管理的,一般都是本機直接調用,對伺服器資源佔用小,存儲量一般
MSSQL
用SQL2000管理的,一般都是遠程調用,對伺服器資源佔用比較大,存儲量很大
其四:
分頁區別就在SQL語句在獲取記錄總數的時候不同。
select
count(*)
from
guestbook
;
//mssql
select
name
from
note;
//mysql
其五:
最佳組合
ASP/ASPX+MSSQL
PHP/JSP+MYSQL
⑸ 如何使用別人的mysql資料庫
linux系統用終端連接別人資料庫:
1、需要安裝mysql客戶端,在終端使用yum命令即可安裝,命令如下:
# yum install mysql-lib*
2、安裝完成後,使用mysql命令就能進行連接,連接時,需要用戶名、密碼、連接主機的IP地址
# mysql -uuser -ppassword -hhostname
如
# mysql -uroot -p87651234 -h192.168.1.10
3、在連接的時候,要保證防火牆3306埠是開通的,否則 可能連接出錯
⑹ mysql資料庫用怎麼操作
1、使用show語句找出在伺服器上當前存在什麼資料庫:
mysql>
show
databases;
+----------+
|
database
|
+----------+
|
mysql
|
|
test
|
+----------+
3
rows
in
set
(0.00
sec)
2、創建一個資料庫abccs
mysql>
create
database
abccs;
注意不同操作系統對大小寫的敏感。
3、選擇你所創建的資料庫
mysql>
use
abccs
database
changed
此時你已經進入你剛才所建立的資料庫abccs.
4、
創建一個資料庫表
首先看現在你的資料庫中存在什麼表:
mysql>
show
tables;
empty
set
(0.00
sec)
說明剛才建立的資料庫中還沒有資料庫表。下面來創建一個資料庫表mytable:
我們要建立一個你公司員工的生日表,表的內容包含員工姓名、性別、出生日期、出生城市。
mysql>
create
table
mytable
(name
varchar(20),
sex
char(1),
->
birth
date,
birthaddr
varchar(20));
query
ok,
0
rows
affected
(0.00
sec)
由於name、birthadd的列值是變化的,因此選擇varchar,其長度不一定是20。可以選擇從1到255的任何長度,如果以後需要改變它的字長,可以使用alter
table語句。);性別只需一個字元就可以表示:"m"或"f",因此選用char(1);birth列則使用date數據類型。
創建了一個表後,我們可以看看剛才做的結果,用show
tables顯示資料庫中有哪些表:
mysql>
show
tables;
+---------------------+
|
tables
in
menagerie
|
+---------------------+
|
mytables
|
+---------------------+
5、顯示表的結構:
mysql>
describe
mytable;
+-------------+-------------+------+-----+---------+-------+
|
field
|
type
|
null
|
key
|
default
|
extra
|
+-------------+-------------+------+-----+---------+-------+
|
name
|
varchar(20)
|
yes
|
|
null
|
|
|
sex
|
char(1)
|
yes
|
|
null
|
|
|
birth
|
date
|
yes
|
|
null
|
|
|
deathaddr
|
varchar(20)
|
yes
|
|
null
|
|
+-------------+-------------+------+-----+---------+-------+
4
rows
in
set
(0.00
sec)
6、
往表中加入記錄
我們先用select命令來查看錶中的數據:
mysql>
select
*
from
mytable;
empty
set
(0.00
sec)
這說明剛才創建的表還沒有記錄。
加入一條新記錄:
mysql>
insert
into
mytable
->
values
(′abccs′,′f′,′1977-07-07′,′china′);
query
ok,
1
row
affected
(0.05
sec)
再用上面的select命令看看發生了什麼變化。我們可以按此方法一條一條地將所有員工的記錄加入到表中。
⑺ MYSQL資料庫怎麼用
、使用SHOW語句找出在伺服器上當前存在什麼資料庫:mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 3 rows in set (0.00 sec) 2、創建一個資料庫abccs
mysql> CREATE DATABASE abccs;
注意不同操作系統對大小寫的敏感。 3、選擇你所創建的資料庫
mysql> USE abccs
Database changed
此時你已經進入你剛才所建立的資料庫abccs. 4、 創建一個資料庫表 首先看現在你的資料庫中存在什麼表:
mysql> SHOW TABLES;
Empty set (0.00 sec)
說明剛才建立的資料庫中還沒有資料庫表。下面來創建一個資料庫表mytable:
我們要建立一個你公司員工的生日表,表的內容包含員工姓名、性別、出生日期、出生城市。mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), -> birth DATE, birthaddr VARCHAR(20)); Query OK, 0 rows affected (0.00 sec) 由於name、birthadd的列值是變化的,因此選擇VARCHAR,其長度不一定是20。可以選擇從1到255的任何長度,如果以後需要改變它的字長,可以使用ALTER TABLE語句。);性別只需一個字元就可以表示:"m"或"f",因此選用CHAR(1);birth列則使用DATE數據類型。 創建了一個表後,我們可以看看剛才做的結果,用SHOW TABLES顯示資料庫中有哪些表:mysql> SHOW TABLES; +---------------------+ | Tables in menagerie | +---------------------+ | mytables | +---------------------+ 5、顯示表的結構:mysql> DESCRIBE mytable; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | deathaddr | varchar(20) | YES | | NULL | | +-------------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec) 6、 往表中加入記錄 我們先用SELECT命令來查看錶中的數據:
mysql> select * from mytable;
Empty set (0.00 sec)
這說明剛才創建的表還沒有記錄。 加入一條新記錄:mysql> insert into mytable -> values (′abccs′,′f′,′1977-07-07′,′china′); Query OK, 1 row affected (0.05 sec) 再用上面的SELECT命令看看發生了什麼變化。我們可以按此方法一條一條地將所有員工的記錄加入到表中。 7、用文本方式將數據裝入一個資料庫表 如果一條一條地輸入,很麻煩。我們可以用文本文件的方式將所有記錄加入你的資料庫表中。創建一個文本文件「mysql.txt」,每行包含一個記錄,用定位符(tab)把值分開,並且以在CREATE TABLE語句中列出的列次序給出,例如:abccs f 1977-07-07 china mary f 1978-12-12 usa tom m 1970-09-02 usa 使用下面命令將文本文件「mytable.txt」裝載到mytable表中:mysql> LOAD DATA LOCAL INFILE "mytable.txt" INTO TABLE pet; 再使用如下命令看看是否已將數據輸入到資料庫表中:mysql> select * from mytable;
⑻ 如何用MySQL建立資料庫
1、首先在電腦端安裝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
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中就講解了如何刪除外鍵關系。