1. 如何在創建資料庫的時候指定資料庫的存儲引擎我指的是sql語句。
建資料庫的時候是指定字元集。
你所說的存儲引擎沒太理解,一般建表的時候設置的內容
create table if not exists 表名 (
)ENGINE = InnoDB CHARACTER SET gbk COLLATE gbk_chinese_ci; -- 這部分內容是建表的時候設置的。
2. 用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命令看看發生了什麼變化。我們可以按此方法一條一條地將所有員工的記錄加入到表中。
3. mysql中的存儲引擎如何設置如果是將INNODB改成MYISAM怎樣改還有DOS中的MYSQL,怎樣保存資料庫,表等對象
1,mysql中的存儲引擎如何設置?------------默認是myisam,建表的時候也指定,例如: create table test(id int)engine=innodb;
2,如果是將INNODB改成MYISAM怎樣改?--------------------alter table test engine=myisam;
3,還有DOS中的MYSQL,怎樣保存資料庫,表等對象?-----------------在dos中執行 create database databasename; create table test(id int);這樣就生成了庫和表;對應的系統文件在mysql的安裝目錄的data下,資料庫名對應一個文件夾。比如 create database testdb,那麼就能在data目錄下找到testdb目錄;表等對象的文件要看具體的引擎,如果是myisam引擎,那麼就會有三個文件,test.frm,test.myi,test.myd三個,innodb的話只有一個test.frm結構文件,數據和索引文件都在 ibdata1表空間里。
4,PHP如何和MYSQL連接?是否非要輸入代碼?有沒有別的簡單方法如UI式設置-------------------需要你寫連接信息,網上給你找了個php連接mysql的例子,你參考下
<?php
$mysql_server_name='localhost'; //改成自己的mysql資料庫伺服器
$mysql_username='root'; //改成自己的mysql資料庫用戶名
$mysql_password='198791'; //改成自己的mysql資料庫密碼
$mysql_database='mydb'; //改成自己的mysql資料庫名
$conn=mysql_connect ($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); //從這句開始向下解釋
$sql='insert into book (name,pwd) values ("ggg","ggg");';
//這是一個SQL語句: 向book表中插入一條記錄
mysql_query($sql);
//執行SQL語句
mysql_select_db($mysql_database,$conn); //選擇上面表所在的資料庫(這一句應該在上面一句的前面執行)
$result=mysql_query($sql); //這一句完全是多餘的,和上面的那一個是一樣的!
mysql_close($conn); //關閉資料庫連接
echo "Hello!操作成功!"; //顯示提示信息
?>
4. 如何修改mysql表的存儲引擎
1、修改表引擎方法
alter table table_name engine=innodb;
2、查看系統支持的存儲引擎
show engines;
3、查看錶使用的存儲引擎
兩種方法:
a、show table status from db_name where name='table_name';
b、show create table table_name;
如果顯示的格式不好看,可以用\g代替行尾分號
有人說用第二種方法不準確
我試了下,關閉掉原先默認的Innodb引擎後根本無法執行show create table table_name指令,因為之前建的是Innodb表,關掉後默認用MyISAM引擎,導致Innodb表數據無法被正確讀取。
4 關閉Innodb引擎方法
關閉mysql服務: net stop mysql
找到mysql安裝目錄下的my.ini文件:
找到default-storage-engine=INNODB 改為default-storage-engine=MYISAM
找到#skip-innodb 改為skip-innodb
啟動mysql服務:net start mysql
5. 如何設置或修改表的存儲引擎
今天要修改單個表的存儲引擎,我就郁悶了,怎麼能快速的修改單個表的存儲引擎。
後來就找到了一些書籍,原來是這么的簡單,一句話就搞定,比喻有一張表名是user的表,
你可以這樣養寫:alter
table
user
engine=
myisam;執行一下這個sql命令即可
6. Mysql建立資料庫如和在一個指定的位置建立資料庫,如何指定資料庫默認的存儲位置
存儲引擎是什麼?
MySQL中的數據用各種不同的技術存儲在文件(或者內存)中。這些技術中的每一種技術都使用不同的存儲機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。
例如,如果你在研究大量的臨時數據,你也許需要使用內存存儲引擎。內存存儲引擎能夠在內存中存儲所有的表格數據。又或者,你也許需要一個支持事務處理的資料庫(以確保事務處理不成功時數據的回退能力)。
這些不同的技術以及配套的相關功能在MySQL中被稱作存儲引擎(也稱作表類型)。MySQL默認配置了許多不同的存儲引擎,可以預先設置或者在MySQL伺服器中啟用。你可以選擇適用於伺服器、資料庫和表格的存儲引擎,以便在選擇如何存儲你的信息、如何檢索這些信息以及你需要你的數據結合什麼性能和功能的時候為你提供最大的靈活性。
選擇如何存儲和檢索你的數據的這種靈活性是MySQL為什麼如此受歡迎的主要原因。其它資料庫系統(包括大多數商業選擇)僅支持一種類型的數據存儲。遺憾的是,其它類型的資料庫解決方案採取的「一個尺碼滿足一切需求」的方式意味著你要麼就犧牲一些性能,要麼你就用幾個小時甚至幾天的時間詳細調整你的資料庫。使用MySQL,我們僅需要修改我們使用的存儲引擎就可以了。
在這篇文章中,我們不準備集中討論不同的存儲引擎的技術方面的問題(盡管我們不可避免地要研究這些因素的某些方面),相反,我們將集中介紹這些不同的引擎分別最適應哪種需求和如何啟用不同的存儲引擎。為了實現這個目的,在介紹每一個存儲引擎的具體情況之前,我們必須要了解一些基本的問題。
如何確定有哪些存儲引擎可用
你可以在MySQL(假設是MySQL伺服器4.1.2以上版本)中使用顯示引擎的命令得到一個可用引擎的列表。
mysql> show engines;
+------------+---------+----------------------------------------------------+
| Engine | Support | Comment |
+------------+---------+-----------------------------------------------------+
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance |
| HEAP | YES | Alias for MEMORY |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables |
| MERGE | YES | Collection of identical MyISAM tables |
| MRG_MYISAM | YES | Alias for MERGE |
| ISAM | NO | Obsolete storage engine, now replaced by MyISAM |
| MRG_ISAM | NO | Obsolete storage engine, now replaced by MERGE |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys |
| INNOBASE | YES | Alias for INNODB |
| BDB | NO | Supports transactions and page-level locking |
| BERKELEYDB | NO | Alias for BDB |
| NDBCLUSTER | NO | Clustered, fault-tolerant, memory-based tables |
| NDB | NO | Alias for NDBCLUSTER |
| EXAMPLE | NO | Example storage engine |
| ARCHIVE | NO | Archive storage engine |
| CSV | NO | CSV storage engine |
+------------+---------+-------------------------------------------------------+
16 rows in set (0.01 sec) 這個表格顯示了可用的資料庫引擎的全部名單以及在當前的資料庫伺服器中是否支持這些引擎。
對於MySQL 4.1.2以前版本,可以使用mysql> show variables like "have_%"(顯示類似「have_%」的變數):
mysql> show variables like "have_%";
+------------------+----------+
| Variable_name | Value |
+------------------+----------+
| have_bdb | YES |
| have_crypt | YES |
| have_innodb | DISABLED |
| have_isam | YES |
| have_raid | YES |
| have_symlink | YES |
| have_openssl | YES |
| have_query_cache | YES |
+------------------+----------+
8 rows in set (0.01 sec)
你可以通過修改設置腳本中的選項來設置在MySQL安裝軟體中可用的引擎。如果你在使用一個預先包裝好的MySQL二進制發布版軟體,那麼,這個軟體就包含了常用的引擎。然而,需要指出的是,如果你要使用某些不常用的引擎,特別是CSV、RCHIVE(存檔)和BLACKHOLE(黑洞)引擎,你就需要手工重新編譯MySQL源碼 。
使用一個指定的存儲引擎
你可以使用很多方法指定一個要使用的存儲引擎。最簡單的方法是,如果你喜歡一種能滿足你的大多數資料庫需求的存儲引擎,你可以在MySQL設置文件中設置一個默認的引擎類型(使用storage_engine 選項)或者在啟動資料庫伺服器時在命令行後面加上--default-storage-engine或--default-table-type選項 。
更靈活的方式是在隨MySQL伺服器發布同時提供的MySQL客戶端時指定使用的存儲引擎。最直接的方式是在創建表時指定存儲引擎的類型,向下面這樣:
CREATE TABLE mytable (id int, title char(20)) ENGINE = INNODB
你還可以改變現有的表使用的存儲引擎,用以下語句:
ALTER TABLE mytable ENGINE = MyISAM
然而,你在以這種方式修改表格類型的時候需要非常仔細,因為對不支持同樣的索引、欄位類型或者表大小的一個類型進行修改可能使你丟失數據。如果你指定一個在你的當前的資料庫中不存在的一個存儲引擎,那麼就會創建一個MyISAM(默認的)類型的表。
各存儲引擎之間的區別
為了做出選擇哪一個存儲引擎的決定,我們首先需要考慮每一個存儲引擎提供了哪些不同的核心功能。這種功能使我們能夠把不同的存儲引擎區別開來。我們一般把這些核心功能分為四類:支持的欄位和數據類型、鎖定類型、索引和處理。一些引擎具有能過促使你做出決定的獨特的功能,我們一會兒再仔細研究這些具體問題。
欄位和數據類型
雖然所有這些引擎都支持通用的數據類型,例如整型、實型和字元型等,但是,並不是所有的引擎都支持其它的欄位類型,特別是BLOG(二進制大對象)或者TEXT文本類型。其它引擎也許僅支持有限的字元寬度和數據大小。
這些局限性可能直接影響到你可以存儲的數據,同時也可能會對你實施的搜索的類型或者你對那些信息創建的索引產生間接的影響。這些區別能夠影響你的應用程序的性能和功能,因為你必須要根據你要存儲的數據類型選擇對需要的存儲引擎的功能做出決策。
鎖定
資料庫引擎中的鎖定功能決定了如何管理信息的訪問和更新。當資料庫中的一個對象為信息更新鎖定了,在更新完成之前,其它處理不能修改這個數據(在某些情況下還不允許讀這種數據)。
鎖定不僅影響許多不同的應用程序如何更新資料庫中的信息,而且還影響對那個數據的查詢。這是因為查詢可能要訪問正在被修改或者更新的數據。總的來說,這種延遲是很小的。大多數鎖定機制主要是為了防止多個處理更新同一個數據。由於向數據中插入信息和更新信息這兩種情況都需要鎖定,你可以想像,多個應用程序使用同一個資料庫可能會有很大的影響。
不同的存儲引擎在不同的對象級別支持鎖定,而且這些級別將影響可以同時訪問的信息。得到支持的級別有三種:表鎖定、塊鎖定和行鎖定。支持最多的是表鎖定,這種鎖定是在MyISAM中提供的。在數據更新時,它鎖定了整個表。這就防止了許多應用程序同時更新一個具體的表。這對應用很多的多用戶資料庫有很大的影響,因為它延遲了更新的過程。
頁級鎖定使用Berkeley DB引擎,並且根據上載的信息頁(8KB)鎖定數據。當在資料庫的很多地方進行更新的時候,這種鎖定不會出現什麼問題。但是,由於增加幾行信息就要鎖定數據結構的最後8KB,當需要增加大量的行,也別是大量的小型數據,就會帶來問題。
行級鎖定提供了最佳的並行訪問功能,一個表中只有一行數據被鎖定。這就意味著很多應用程序能夠更新同一個表中的不同行的數據,而不會引起鎖定的問題。只有InnoDB存儲引擎支持行級鎖定。
建立索引
建立索引在搜索和恢復資料庫中的數據的時候能夠顯著提高性能。不同的存儲引擎提供不同的製作索引的技術。有些技術也許會更適合你存儲的數據類型。
有些存儲引擎根本就不支持索引,其原因可能是它們使用基本表索引(如MERGE引擎)或者是因為數據存儲的方式不允許索引(例如FEDERATED或者BLACKHOLE引擎)。
事務處理
事務處理功能通過提供在向表中更新和插入信息期間的可靠性。這種可靠性是通過如下方法實現的,它允許你更新表中的數據,但僅當應用的應用程序的所有相關操作完全完成後才接受你對表的更改。例如,在會計處理中每一筆會計分錄處理將包括對借方科目和貸方科目數據的更改,你需要要使用事務處理功能保證對借方科目和貸方科目的數據更改都順利完成,才接受所做的修改。如果任一項操作失敗了,你都可以取消這個事務處理,這些修改就不存在了。如果這個事務處理過程完成了,我們可以通過允許這個修改來確認這個操作。
7. 如何為mysql資料庫添加新的存儲引擎
mysql 5.5以前默認的引擎是myisam,5.5以後是innodb,引擎可以在創建表的時候指定,如下:
Ceate table test
(id int,name varchar(10))
engine innodb;
修改:
alter table test type=innodb;
如果想設置預設引擎可以在配置文件的mysqld添加一行:
default-storage-engine=INNODB;
8. navicat for mysql 8.0 怎麼把l默認表類型設成InnoDB
1
這個貌似在navicat
中沒有設置選項。
2
navicat
9,10版本,如果資料庫的配置選項有
default_storage_engine=InnoDB
,則在navicat
中創建表時不指定存儲引擎則會是innodb(即使用default_storage_engine選項指定的引擎)。
查看資料庫的默認引擎:mysql>
show
variables
like
'default_storage_engine';
可以在navicat
8下試下,實踐是最後的結論。
9. MySQL修改數據表存儲引擎的3種方法介紹
MySQL作為最常用的資料庫,經常遇到各種各樣的問題。今天要說的就是表存儲引擎的修改。有三種方式,列表如下。
1.真接修改。在數據多的時候比較慢,而且在修改時會影響讀取性能。my_table是操作的表,innoDB是新的存儲引擎。
復制代碼
代碼如下:ALTER
TABLE
my_table
ENGINE=InnoDB
2.導出,導入。這個比較容易操作,直接把導出來的sql文件給改了,然後再導回去。用mysqlmp
,楓哥常用的是navicate那樣更容易上手。友情提醒風險較大。
3.創建,插入。這個比第一種速度快,
安全性比第二種高,推薦。分2步操作
a.創建表,先創建一個和要操作表一樣的表,然後更改存儲引擎為目標引擎。
復制代碼
代碼如下:
CREATE
TABLE
my_tmp_table
LIKE
my_table;
ALTER
TABLE
my_tmp_table
ENGINE=InnoDB;
b.插入。為了安全和速度,最好加上事務,並限制id(主鍵)范圍。
復制代碼
代碼如下:
INSERT
INTO
my_tmp_table
SELECT
*
FROM
my_table;
就到這里,希望對需要的同學有幫助。
10. 如何選擇MySQL存儲引擎
MySQL有多種存儲引擎,每種存儲引擎有各自的優缺點,可以擇優選擇使用:
MyISAM、InnoDB、merge、memory(heap)、BDB(BerkeleyDB)、example、FEDERATED、archive、csv、BLACKHOLE。
MySQL支持數個存儲引擎作為對不同表的類型的處理器。MySQL存儲引擎包括處理事務安全表的引擎和處理非事務安全表的引擎:
· MyISAM管理非事務表。它提供高速存儲和檢索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默認的存儲引擎,除非你配置MySQL默認使用另外一個引擎。
· memory存儲引擎提供「內存中」表。merge存儲引擎允許集合將被處理同樣的MyISAM表作為一個單獨的表。就像MyISAM一樣,memory和merge存儲引擎處理非事務表,這兩個引擎也都被默認包含在MySQL中。
注釋:memory存儲引擎正式地被確定為heap引擎。
· InnoDB和BDB存儲引擎提供事務安全表。BDB被包含在為支持它的操作系統發布的MySQL-Max二進制分發版里。InnoDB也默認被包括在所 有MySQL 5.1二進制分發版里,你可以按照喜好通過配置MySQL來允許或禁止任一引擎。
· example存儲引擎是一個「存根」引擎,它不做什麼。你可以用這個引擎創建表,但沒有數據被存儲於其中或從其中檢索。這個引擎的目的是服務,在 MySQL源代碼中的一個例子,它演示說明如何開始編寫新存儲引擎。同樣,它的主要興趣是對開發者。
· ndb Cluster是被MySQL Cluster用來實現分割到多台計算機上的表的存儲引擎。它在MySQL-Max 5.1二進制分發版里提供。這個存儲引擎當前只被Linux, Solaris, 和Mac OS X 支持。在未來的MySQL分發版中,我們想要添加其它平台對這個引擎的支持,包括Windows。
· archive存儲引擎被用來無索引地,非常小地覆蓋存儲的大量數據。
· csv存儲引擎把數據以逗號分隔的格式存儲在文本文件中。
· BLACKHOLE存儲引擎接受但不存儲數據,並且檢索總是返回一個空集。
· FEDERATED存儲引擎把數據存在遠程資料庫中。在MySQL 5.1中,它只和MySQL一起工作,使用MySQL C client api。在未來的分發版中,我們想要讓它使用其它驅動器或客戶端連接方法連接到另外的數據源。
比較常用的是MyISAM和InnoBD