第一篇:遠(yuǎn)程客戶端連接MysqL數(shù)據(jù)庫(kù)太慢解決方案
遠(yuǎn)程客戶端連接MysqL數(shù)據(jù)庫(kù)太慢解決方案
遠(yuǎn)程客戶端連接MysqL數(shù)據(jù)庫(kù)太慢解決方案
局域網(wǎng)客戶端訪問(wèn)mysql 連接慢問(wèn)題解決。
cd /etc/mysql
vi my.conf
[mysqld]
skip-name-resolve
此選項(xiàng)禁用了DNS解析,連接速度會(huì)快很多。
不過(guò),這樣的話就不能在MySQL的授權(quán)表中使用
主機(jī)名了而只能用ip格式。
第二篇:MySQL數(shù)據(jù)庫(kù)連接超時(shí)(Wait_timeout)問(wèn)題總結(jié)
當(dāng)應(yīng)用程序和數(shù)據(jù)庫(kù)建立連接時(shí),如果超過(guò)了8個(gè)小時(shí),應(yīng)用程序不去訪問(wèn)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)就會(huì)出現(xiàn)斷掉連接的現(xiàn)象。這時(shí)再次訪問(wèn)就會(huì)拋出異常.一般的解決方法大多是在數(shù)據(jù)庫(kù)連接字符串中增加“autoReconnect=true ”選項(xiàng)。但是這只對(duì)mysql4以前的版本有效。在最新的mysql中是無(wú)效的。其實(shí)要解決這個(gè)問(wèn)題也有一個(gè)簡(jiǎn)單的方法,就是修改mysql的啟動(dòng)參數(shù)。缺省情況下mysql的timeout時(shí)間是28800秒,正好是8小時(shí),增加一個(gè)0就可以了。決定從根源入手,設(shè)置mysql的wait_timeout為31536000(一年),再來(lái)試試。set-variable=wait_timeout=31536000 set-variable=interactive_timeout=31536000 問(wèn)題得到了解決 想了深入解一下mysql的工作原理
百度了一下Google發(fā)現(xiàn)很多人都出現(xiàn)過(guò)這種問(wèn)題,大多是配置hibernate時(shí)候出的問(wèn)題,可惜我的項(xiàng)目中沒(méi)有使用到hibernate只是簡(jiǎn)單的自己配了一個(gè)連接池,所以綜合了問(wèn)題的關(guān)鍵所在改了一下數(shù)據(jù)庫(kù)配置,在這里暫且記錄一下,以后備用。
Mysql服務(wù)器默認(rèn)的“wait_timeout”是8小時(shí),也就是說(shuō)一個(gè)connection空閑超過(guò)8個(gè)小時(shí),Mysql將自動(dòng)斷開(kāi)該 connection。這就是問(wèn)題的所在。
最近碰到了這個(gè)問(wèn)題,檢查后發(fā)現(xiàn)數(shù)據(jù)庫(kù)連接池中保存的連接超時(shí)后失效了,下面是官方的解釋 mysql gone-away
從Mysql 5.x的某個(gè)版本之后,MySQL的自動(dòng)關(guān)閉空閑連接的特性被修改了,假如一個(gè)連接空閑到超時(shí)時(shí)間(默認(rèn)28000秒8小時(shí)),再次發(fā)起的Reconnect重新連接請(qǐng)求不會(huì)被接受,需要重新建立新連接,這就導(dǎo)致了SER的重連機(jī)制不能正常工作:SER只會(huì)在需要操作數(shù)據(jù)庫(kù)時(shí)去使用同一個(gè)連接接口,斷開(kāi)了則發(fā)起重新連接請(qǐng)求,而且這個(gè)問(wèn)題短期內(nèi)SER也不能夠解決。
下文中將具體講述處理的方法:
1.使用Mysql 4.0或4.1版本,如果沒(méi)有用到Mysql 5的一些新特性比如存儲(chǔ)過(guò)程觸發(fā)器之類。
2.定時(shí)重啟Mysql服務(wù)器或Ser(由于本問(wèn)題可能同樣會(huì)影響到其它一些需要Mysql支持的服務(wù)器程序,所以重啟Mysql服務(wù)器為好,但需要檢測(cè)Mysql服務(wù)器不被使用的一個(gè)時(shí)間重啟比較難確定)
3.設(shè)置my.cnf,有mysqld字段內(nèi)增加參數(shù):
[mysqld]port = 3306socket = /tmp/mysql.sockwait_timeout= 500000interactive_timeout = 500000(500000秒約五六天的超時(shí)時(shí)間,可根據(jù)實(shí)際需要選擇一個(gè)數(shù)據(jù)庫(kù)可能空閑的最長(zhǎng)時(shí)間稍大的時(shí)間值。)重啟Mysqld應(yīng)用即可,也可以在執(zhí)行mysqld時(shí)加-o wait_timeout=500000參數(shù)同樣效果。
在MySQL客戶端show variable時(shí)應(yīng)該可以看到最后一條從默認(rèn)的wait_time=28000變成500000了。
(假如重啟Mysqld不生效,可以重啟機(jī)子)
第三篇:Mysql數(shù)據(jù)庫(kù)學(xué)習(xí)心得
Mysql數(shù)據(jù)庫(kù)學(xué)習(xí)心得(1)
由于工作中需要使用mysql,筆者通過(guò)網(wǎng)上學(xué)習(xí),動(dòng)手實(shí)踐,終于從一個(gè)“數(shù)據(jù)庫(kù)菜鳥(niǎo)”變成了能熟練操作mysql的“準(zhǔn)大蝦”了,:)。現(xiàn)將學(xué)習(xí)心得整理如下。
MySQL是完全網(wǎng)絡(luò)化的跨平臺(tái)關(guān)系型數(shù)據(jù)庫(kù)系統(tǒng),一個(gè)真正的多用戶、多線程SQL數(shù)據(jù)庫(kù)服務(wù)器,同時(shí)是具有客戶機(jī)/服務(wù)器體系結(jié)構(gòu)的分布式數(shù)據(jù)庫(kù)管理系統(tǒng)。它具有功能強(qiáng)、使
用簡(jiǎn)便、管理方便、運(yùn)行速度快、安全可靠性強(qiáng)等優(yōu)點(diǎn),用戶可利用許多語(yǔ)言編寫訪問(wèn)MySQL數(shù)據(jù)庫(kù)的程序,對(duì)于中、小型應(yīng)用系統(tǒng)是非常理想的。除了支持標(biāo)準(zhǔn)的ANSI SQL語(yǔ)句,更重要的是,它還支持多種平臺(tái),而在Unix系統(tǒng)上該軟件支持多線程運(yùn)行方式,從而能獲得相當(dāng)好的性能。對(duì)于不使用Unix的用戶,它可以在Windows NT系統(tǒng)上以系統(tǒng)服務(wù)方式運(yùn)行,或者在Windows 95/98系統(tǒng)上以普通進(jìn)程方式運(yùn)行。而在Unix/Linux系統(tǒng)上,MySQL支持多線程運(yùn)行方式,從而能獲得相當(dāng)好的性能,而且它是屬于開(kāi)放源代碼軟。
MySQL是以一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的實(shí)現(xiàn),它由一個(gè)服務(wù)器守護(hù)程序mysqld和很多不同的客戶程序和庫(kù)組成,MySQL的執(zhí)行性能非常高,運(yùn)行速度非???,并非常容易使用,是一個(gè)非常棒的數(shù)據(jù)庫(kù)。MySQL的官方發(fā)音是“My Ess Que Ell”(不是MY-SEQUEL)。
一.獲得MySQL
首先必須下載MySQL。Mysql的官方網(wǎng)站是:004km.cnf copy為c:my.cnf,并把c:mysqlibgwinb19.dll copy到winntsystem32。
3。啟動(dòng)mysql的方法是:
c:mysqlinmysqld-shareware--install
net start mysql
這么簡(jiǎn)單,就可以啟動(dòng)了。
4。更改超級(jí)用戶(root)的密碼:
C:mysqlinmysql mysql
mysql> UPDATE user SET password=PASSWORD('your password')swheresuser='root';
mysql> QUIT
C:mysqlinmysqladmin reload
使用命令C:mysqlinmysqlshow去看看檢測(cè)一下。在這里應(yīng)該顯示:
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+
看到這些信息這一步就證明沒(méi)問(wèn)題了
再來(lái):
C:mysqlinmysqlshow--user=root--password=your password mysql
在這里應(yīng)該顯示:
Database: mysql
+--------------+
| Tables |
+--------------+
| columns_priv |
| db |
| host |
| tables_priv |
| user |
+--------------+
一切搞定!
5。C:mysqlinmysqladmin version status proc
應(yīng)該可以看到這些版本信息的:
mysqladmin Ver 8.0 Distrib 3.22.32, for Win95/Win98 on i586
TCX Datakonsult AB, by Monty
Server version 3.22.32-shareware-debug
Protocol version 10
Connection localhost via TCP/IP
TCP port 3306
Uptime: 1 hour 29 min 30 sec
Threads: 1 Questions: 72 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 0 Memory in use: 16423K Max memory
used: 16490K
Uptime: 5370 Threads: 1 Questions: 72 Slow queries: 0 Opens: 16 Flush tables: 1 Open tables: 0 Memory in use: 16423K
Max memory used: 16490K
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 35 | ODBC | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
接著,用show databases命令可以將安裝的數(shù)據(jù)庫(kù)列出來(lái):
mysql> show databases;
你就可以看到:
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+ rows in set(0.00 sec)
如果一切正常的話,那說(shuō)明MySQL可以完全工作了!如果要退出程序,輸入:exit
mysql> exit;
Bye
Mysql數(shù)據(jù)庫(kù)學(xué)習(xí)心得(3)------------------
三.Mysql常識(shí)
(一)字段類型
1.INT[(M)]
正常大小整數(shù)類型
2.DOUBLE[(M,D)] [ZEROFILL]
正常大小(雙精密)浮點(diǎn)數(shù)字類型
3.DATE
日期類型。支持的范圍是'1000-01-01'到'9999-12-31'。MySQL以'YYYY-MM-DD'格式來(lái)顯示DATE值,但是允許你使用字符串或數(shù)字把值賦給
DATE列
4.CHAR(M)
定長(zhǎng)字符串類型,當(dāng)存儲(chǔ)時(shí),總是是用空格填滿右邊到指定的長(zhǎng)度
5.BLOB TEXT
BLOB或TEXT類型,最大長(zhǎng)度為65535(2^16-1)個(gè)字符。
6.VARCHAR
變長(zhǎng)字符串類型,最常用的類型。
(二)基本操作
1:顯示數(shù)據(jù)庫(kù)
mysql>SHOW DATABASES;
2:當(dāng)前選擇的數(shù)據(jù)庫(kù),mysql> SELECT DATABASE();
+------------+
| DATABASE()|
+------------+
| test |
+------------+
3.當(dāng)前數(shù)據(jù)庫(kù)包含的表信息:
mysql> SHOW TABLES;
+---------------------+
| Tables in test |
+---------------------+
| mytable1 |
| mytable2 |
+---------------------+
4.獲取表結(jié)構(gòu)
mysql> desc mytable1;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| s1 | varchar(20)| YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
5.創(chuàng)建表
表是數(shù)據(jù)庫(kù)的最基本元素之一,表與表之間可以相互獨(dú)立,也可以相互關(guān)聯(lián)。創(chuàng)建表的基本語(yǔ)法如下:
create table table_name
(column_name datatype {identity |null|not null},…)
其中參數(shù)table_name和column_name必須滿足用戶數(shù)據(jù)庫(kù)中的識(shí)別器(identifier)的要求,參數(shù)datatype是一個(gè)標(biāo)準(zhǔn)的SQL類型或由用戶數(shù)
據(jù)庫(kù)提供的類型。用戶要使用non-null從句為各字段輸入數(shù)據(jù)。
create table還有一些其他選項(xiàng),如創(chuàng)建臨時(shí)表和使用select子句從其他的表中讀取某些字段組成新表等。還有,在創(chuàng)建表是可用PRIMARY
KEY、KEY、INDEX等標(biāo)識(shí)符設(shè)定某些字段為主鍵或索引等。書(shū)寫上要注意:在一對(duì)圓括號(hào)里的列出完整的字段清單。字段名間用逗號(hào)隔開(kāi)
。字段名間的逗號(hào)后要加一個(gè)空格。最后一個(gè)字段名后不用逗號(hào)。所有的SQL陳述都以分號(hào)“;”結(jié)束。
例:
mysql>CREATE TABLE guest(name varchar(10),sex varchar(2),age int(3),career varchar(10));
6.創(chuàng)建索引
索引用于對(duì)數(shù)據(jù)庫(kù)的查詢。一般數(shù)據(jù)庫(kù)建有多種索引方案,每種方案都精于某一特定的查詢類。索引可以加速對(duì)數(shù)據(jù)庫(kù)的查詢過(guò)程。創(chuàng)建
索引的基本語(yǔ)法如下:
create index index_name
on table_name(col_name[(length)],...)
例:
mysql> CREATE INDEX number ON guest(number(10));
7.執(zhí)行查詢
查詢是使用最多的SQL命令。查詢數(shù)據(jù)庫(kù)需要憑借結(jié)構(gòu)、索引和字段類型等因素。大多數(shù)數(shù)據(jù)庫(kù)含有一個(gè)優(yōu)化器(optimizer),把用戶的查
詢語(yǔ)句轉(zhuǎn)換成可選的形式,以提高查詢效率。
值得注意的是MySQL不支持SQL92標(biāo)準(zhǔn)的嵌套的where子句,即它只支持一個(gè)where子句。其基本語(yǔ)法如下:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY col_name,...]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name] ]
其中where從句是定義選擇標(biāo)準(zhǔn)的地方,where_definition可以有不同的格式,但都遵循下面的形式:
字段名操作表達(dá)式
字段名操作字段名
在第一種形式下,標(biāo)準(zhǔn)把字段的值與表達(dá)式進(jìn)行比較;在第二種形式下,把兩個(gè)字段的值進(jìn)行比較。根據(jù)所比較的數(shù)據(jù)類型,search_condition中的操作可能選以下幾種:
=檢查是否相等
!=檢查是否不等
>(或>=)檢查左邊值是否大于(或大于等于)右邊值
<(或<=)檢查左邊值是否小于(或小于等于)右邊值
[not] between檢查左邊值是否在某個(gè)范圍內(nèi)
[not] in檢查左邊是否某個(gè)特定集的成員
[not] like檢查左邊是否為右邊的子串
is [not] null檢查左邊是否為空值
在這里,可以用通配符_代表任何一個(gè)字符,%代表任何字符串。使用關(guān)鍵字、和可以生成復(fù)雜的詞,它們運(yùn)行檢查時(shí)使用
布爾表達(dá)式的多重標(biāo)準(zhǔn)集。
例:
mysql> select t1.name, t2.salary from employee AS t1, info AS t2swherest1.name = t2.name;
mysql> select college, region, seed from tournament
ORDER BY region, seed;
mysql> select col_name from tbl_nameswherescol_name > 0;
8.改變表結(jié)構(gòu)
在數(shù)據(jù)庫(kù)的使用過(guò)程中,有時(shí)需要改變它的表結(jié)構(gòu),包括改變字段名,甚至改變不同數(shù)據(jù)庫(kù)字段間的關(guān)系??梢詫?shí)現(xiàn)上述改變的命令是
alter,其基本語(yǔ)法如下:
alter table table_name alter_spec [, alter_spec...]
例:
mysql> alter table dbname add column userid int(11)not null primary key auto_increment;
這樣,就在表dbname中添加了一個(gè)字段userid,類型為int(11)。
9.修改表中數(shù)據(jù)
在使用數(shù)據(jù)庫(kù)過(guò)程中,往往要修改其表中的數(shù)據(jù),比如往表中添加新數(shù)據(jù),刪除表中原有數(shù)據(jù),或?qū)Ρ碇性袛?shù)據(jù)進(jìn)行更改。它們的基本
語(yǔ)法如下:
數(shù)據(jù)添加:
insert [into] table_name [(column(s))]
values(expression(s))
例:
mysql>insertsintosmydatabase values('php','mysql','asp','sqlserver','jsp','oracle');Mysql數(shù)據(jù)庫(kù)學(xué)習(xí)心得(4)------------------
10.表的數(shù)據(jù)更新
(1)一次修改一個(gè)字段,再次注意語(yǔ)法。文本需要加引號(hào)但數(shù)字不要。
mysql>update table01 set field03='new info'swheresfield01=1;
Query OK, 1 row affected(0.00 sec)
(2)一次改變多個(gè)字段,記住在每一個(gè)更新的字段間用逗號(hào)隔開(kāi)。
mysql>update table01 set field04=19991022, field05=062218swheresfield01=1;
Query OK, 1 row affected(0.00 sec)
(3)一次更新多個(gè)數(shù)據(jù)
mysql>update table01 set field05=152901swheresfield04>19990101;
Query OK, 3 rows affected(0.00 sec)
11.刪除數(shù)據(jù)
mysql>delete from table01swheresfield01=3;
Query OK, 1 row affected(0.00 sec)
12.導(dǎo)入數(shù)據(jù)庫(kù)表
(1)創(chuàng)建.sql文件
(2)先產(chǎn)生一個(gè)庫(kù)如auction.c:mysqlin>mysqladmin-u root-p creat auction,會(huì)提示輸入密碼,然后成功創(chuàng)建。
(3)導(dǎo)入auction.sql文件
c:mysqlin>mysql-u root-p auction < auction.sql。
通過(guò)以上操作,就可以創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)auction以及其中的一個(gè)表auction。
13.mysql數(shù)據(jù)庫(kù)的授權(quán)
mysql>grant select,insert,delete,create,drop
on *.*(或test.*/user.*/..)
to用戶名@localhost
identified by '密碼';
如:新建一個(gè)用戶帳號(hào)以便可以訪問(wèn)數(shù)據(jù)庫(kù),需要進(jìn)行如下操作:
mysql> grant usage
-> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected(0.15 sec)
此后就創(chuàng)建了一個(gè)新用戶叫:testuser,這個(gè)用戶只能從localhost連接到數(shù)據(jù)庫(kù)并可以連接到test數(shù)據(jù)庫(kù)。下一步,我們必須指定
testuser這個(gè)用戶可以執(zhí)行哪些操作:
mysql> GRANT select, insert, delete,update
-> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected(0.00 sec)
此操作使testuser能夠在每一個(gè)test數(shù)據(jù)庫(kù)中的表執(zhí)行SELECT,INSERT和DELETE以及UPDATE查詢操作。現(xiàn)在我們結(jié)束操作并退出MySQL客戶
程序:
mysql> exit
Bye
14.授權(quán)MySQL用戶密碼
MySQL數(shù)據(jù)庫(kù)的默認(rèn)用戶名為“root”(MS SQL Server的sa相似),密碼默認(rèn)為空。在DOS提示符(注 意,不是mysql提示符)下輸入
c:mysqlin>“mysqladmin-u root-p password newpassword
回車后會(huì)提示你輸入原來(lái)的密碼,由于原來(lái)密碼為空,直接回車,root用戶的密碼便改為”newpassword“了。
Mysql數(shù)據(jù)庫(kù)學(xué)習(xí)心得(5)------------------
四.安裝phpMyAdmin
MySQL圖形界面管理器phpMyAdmin是一套以php3寫成,針對(duì)MySQL數(shù)據(jù)庫(kù)系統(tǒng)的Web管理界面。它可以很方便地以圖形化界面,來(lái)對(duì)MySQL數(shù)據(jù)庫(kù)里的字段、數(shù)據(jù)進(jìn)行增加、刪除等的動(dòng)作,更可以做數(shù)據(jù)庫(kù)本身的增刪管理;phpMyAdmin可以管理整個(gè)MySQL服務(wù)器(需要超級(jí)用戶),也可以管理單個(gè)數(shù)據(jù)庫(kù)。另外,您也可以通過(guò)使用這個(gè)圖形化界面來(lái)學(xué)習(xí)SQL正確的語(yǔ)法,直至熟練掌握。那要等到你看過(guò)MySQL手冊(cè)中相關(guān)的部分。你可以到http://www.phpwizard.net/phpMyAdmin/去下載最新的版本。
首先,將phpMyAdmin軟件包解到一個(gè)目錄下。
1.修改文檔config.inc.php3。
將原來(lái)的設(shè)定:
§cfgServers[1]['host'] = '';// MySQL hostname
§cfgServers[1]['port'] = '';// MySQL port-leave blank fordefault port
§cfgServers[1]['adv_auth'] = false;// Use advanced authentication?
§cfgServers[1]['stduser'] = '';// MySQL standard user(only needed with advanced auth)
§cfgServers[1]['stdpass'] = '';// MySQL standard password(only needed with advanced auth)
§cfgServers[1]['user'] = '';// MySQL user(only needed withbasic auth)
§cfgServers[1]['password'] = '';// MySQL password(only needed with basic auth)
§cfgServers[1]['only_db'] = '';// If set to a db-name, only this db is accessible
§cfgServers[1]['verbose'] = '';// Verbose name for this host-leave blank to show the hostname
:
:
require(”english.inc.php3“);
修改成:
§cfgServers[1]['host'] = 'MySQL Server的hostname';//填入您的MySQL Server的主機(jī)名稱
§cfgServers[1]['port'] = '';//填入連結(jié)MySQL的port,不填則以預(yù)設(shè)的port進(jìn)行連結(jié)
§cfgServers[1]['adv_auth'] = true;//改成true則進(jìn)入phpMyAdmin必須先身份認(rèn)證
§cfgServers[1]['stduser'] = 'root';// MySQL使用者的帳號(hào)
§cfgServers[1]['stdpass'] = '密碼';// MySQL使用者的密碼
§cfgServers[1]['user'] = 'root';// MySQL管理帳號(hào)
§cfgServers[1]['password'] = '密碼';// MySQL管理密碼
§cfgServers[1]['only_db'] = '';//指定管理的資庫(kù)名稱,不填則可以管理整個(gè)Server
§cfgServers[1]['verbose'] = '';//指定MySQL的名稱,不填則使用系統(tǒng)本身的hostname
:
:
require(”chinese_gb.inc.php3");//將語(yǔ)言改成中文
說(shuō)明:
(1)因本管理接口,可以以一個(gè)接口,管理多個(gè)MySQL Server,所以可以在config.inc.php3中找到
§cfgServers[1]...§cfgServers[1]...§cfgServers[1]...:
§cfgServers[2]...§cfgServers[2]...§cfgServers[2]...其中[1]代表第一個(gè)MySQL Server,[2]代表第二個(gè)MySQL Server,您要管理的MySQL Server超過(guò)三臺(tái)以上,您可以依照同樣的?述,增加[4].....下去!
(2)若您的MySQL Server與http Server是同一臺(tái),則§cfgServers[1]['host'] =可直接填入localhost。
最后,打開(kāi)流覽器,輸入你的網(wǎng)址/phpMyAdmin之后您會(huì)看到一個(gè)密碼驗(yàn)證的小窗口,輸入您的MySQL管理帳號(hào)及密碼,即可成功地看到phpMyAdmin的管理畫面。通過(guò)phpmyadmin,你就可以圖形化的、方便的管理你的所有數(shù)據(jù)庫(kù)了。
五.小結(jié)
通過(guò)以上的學(xué)習(xí)和操作,終于可以自由操作mysql數(shù)據(jù)庫(kù)了,也可以輕車熟路的使用php或者asp調(diào)用mysql了。最后,筆者要特別感謝開(kāi)發(fā)了mysql并且免費(fèi)貢獻(xiàn)的天才以及在網(wǎng)上提供mysql使用說(shuō)明的大蝦們。
第四篇:mysql數(shù)據(jù)庫(kù)要點(diǎn)總結(jié)
查詢(R)Selec子句
書(shū)寫順序
Select distinct:要返回的列或表達(dá)式 From:從中檢索數(shù)據(jù)的表 Where:行級(jí)過(guò)濾/分組前過(guò)濾 group by:分組說(shuō)明
having:組級(jí)過(guò)濾/分組后過(guò)濾 order by:輸出排序順序desc/asc limit start, count:要檢索的行數(shù) limit 3,4 從第3行開(kāi)始的連續(xù)4行
SELECT order_num,sum(quantity*item_price)ordertotal FROM orderitems WHEREorder_numBETWEEN20005AND 20009GROUP BY order_num HAVINGsum(quantity*item_price)>=50ORDER BYordertotalDESCLIMIT4;執(zhí)行順序
From表名->inner/left/right/ join on->where->group by->select distinct *->having->order by->limit start, count 插入Insert into(C)INSERT INTO students(name)values(‘楊過(guò)’),(‘小龍女’);更新(U)Update UPDATE customers SETcust_email = ‘elmer@fudd.com’WHEREcust_id = 10005;刪除(D)Delete DELETE FROM customers WHEREcust_id = 10006;Truncate刪除原來(lái)的表并重新創(chuàng)建一個(gè)表,刪除標(biāo)的全部?jī)?nèi)容時(shí)效率高。
操作表
創(chuàng)建CREATE TABLE customers(Cust_idint not null auto_increment primary key,Cust_name char(50)not null,Cust_addresschar(50)null)engine = innoDB;更新ALTER TABLE刪除DROP TABLEcustomers2;重命名RENAME TABLE customers2 TO customers;操作數(shù)據(jù)庫(kù)
創(chuàng)建CREATE DATABASE xxx charset = utf8;刪除DROP DATABASEXXX;切換USE XXX;查看SHOW DATABASES;關(guān)聯(lián)查詢
INNER/LEFT/RIGHTJOIN ON SELECT students.name,subjects.title,scores.scoreFROM scores INNER JOIN students ONscores.stuid = students.id INNER JOIN subjects ONscores.subid = subjects.id;
第五篇:PHP MySql亂碼解決方案
PHP亂碼?Mysql亂碼?怎么解決?
PHP亂碼或者mysql亂碼,多半是因?yàn)闆](méi)有統(tǒng)一編碼,要解決PHP/mysql亂碼,只要做到三碼合一即可.所謂三碼,是指文件編碼,頁(yè)面編碼聲明和數(shù)據(jù)庫(kù)字符集,要使用相同的編碼,如全部為utf-8.怎么做到三碼合一?下面以u(píng)tf-8為例,說(shuō)明如何統(tǒng)一編碼.1.網(wǎng)頁(yè)文件編碼保存為utf-8無(wú)BOM
記事本,保存文件的時(shí)候選擇“編碼”為utf-8
editPlus,保存時(shí)選擇“encoding”為utf-8
UEStudio保存時(shí)選擇“格式”為utf-8無(wú)BOM
2.PHP頁(yè)面內(nèi)部使用header('Content-type : text/html;Charset=UTF-8');聲明頁(yè)面編碼為utf-8
在html頭部寫入來(lái)聲明頁(yè)面編碼為utf-8
3.PHP頁(yè)面中連接數(shù)據(jù)庫(kù)服務(wù)器后執(zhí)行sql查詢前使用以下代碼先將字符集設(shè)置為utf-8 mysql_query('SET NAMES utf8');[或mysqli,具體代碼這里不再寫了]
4.創(chuàng)建數(shù)據(jù)表的時(shí)候?qū)⒛J(rèn)編碼設(shè)置為utf8,將字符校對(duì)(callate)設(shè)置為utf8_general_ci CREATE TABLE IF NOT EXISTS `name`(....代碼....)ENGINE InnoDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci
做到這四點(diǎn),相信你的網(wǎng)頁(yè)和數(shù)據(jù)庫(kù)不會(huì)再亂碼.