真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql怎么實(shí)現(xiàn)同義詞的簡(jiǎn)單介紹

MySQL里怎么做同音字搜索

低效率的實(shí)現(xiàn)方法一:我看到過(guò)有個(gè)網(wǎng)站源碼是這樣做的,它通過(guò)“Select * From……”把整個(gè)表取出,然后逐條循環(huán)tmp=rs("A")getpy(rs("A"))rs("B")getpy(rs("B"))rs("C")getpy(rs("C")),然后對(duì)比tmp里是否含有request("key"),其中g(shù)etpy()是它自定義的一個(gè)很長(zhǎng)的函數(shù)。這樣的做法雖然能實(shí)現(xiàn),但是效率也太低了,不僅要把整個(gè)數(shù)據(jù)庫(kù)全部搬下來(lái),還要對(duì)每個(gè)字都進(jìn)行g(shù)etpy()才能得到結(jié)果。

創(chuàng)新新互聯(lián),憑借10多年的網(wǎng)站建設(shè)、成都做網(wǎng)站經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有1000+案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)建站。

低效率的實(shí)現(xiàn)方法二:對(duì)數(shù)據(jù)庫(kù)每個(gè)字段都增加一個(gè)對(duì)應(yīng)的拼音字段,也就是數(shù)據(jù)結(jié)構(gòu)變成Title、TitlePy、Author、AuthorPy、Content、ContentPy,然后修改Select語(yǔ)句查詢它們,但是這樣在每次更新數(shù)據(jù)庫(kù)時(shí)都要維護(hù)一次對(duì)應(yīng)的拼音字段,效率仍然低下,并且還使數(shù)據(jù)庫(kù)體積成倍增大,僅僅為了一個(gè)拼音搜索功能,不值。

關(guān)于數(shù)據(jù)庫(kù)(MYSQL)時(shí)間段的拆分問(wèn)題,怎么樣編程實(shí)現(xiàn)?

可以看下時(shí)間函數(shù)

對(duì)日期時(shí)間進(jìn)行加減法運(yùn)算

 (ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同義詞,也可以用運(yùn)算符 和-而不是函數(shù)

 date是一個(gè)DATETIME或DATE值,expr對(duì)date進(jìn)行加減法的一個(gè)表達(dá)式字符串type指明表達(dá)式expr應(yīng)該如何被解釋

 [type值 含義 期望的expr格式]:

 SECOND 秒 SECONDS

 MINUTE 分鐘 MINUTES

 HOUR 時(shí)間 HOURS

 DAY 天 DAYS

 MONTH 月 MONTHS

 YEAR 年 YEARS

 MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS"

 HOUR_MINUTE 小時(shí)和分鐘 "HOURS:MINUTES"

 DAY_HOUR 天和小時(shí) "DAYS HOURS"

 YEAR_MONTH 年和月 "YEARS-MONTHS"

 HOUR_SECOND 小時(shí), 分鐘, "HOURS:MINUTES:SECONDS"

 DAY_MINUTE 天, 小時(shí), 分鐘 "DAYS HOURS:MINUTES"

 DAY_SECOND 天, 小時(shí), 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"

 expr中允許任何標(biāo)點(diǎn)做分隔符,如果所有是DATE值時(shí)結(jié)果是一個(gè)DATE值,否則結(jié)果是一個(gè)DATETIME值)

 如果type關(guān)鍵詞不完整,則MySQL從右端取值,DAY_SECOND因?yàn)槿鄙傩r(shí)分鐘等于MINUTE_SECOND)

 如果增加MONTH、YEAR_MONTH或YEAR,天數(shù)大于結(jié)果月份的最大天數(shù)則使用最大天數(shù))

mysql SELECT "1997-12-31 23:59:59" INTERVAL 1 SECOND;

- 1998-01-01 00:00:00

mysql SELECT INTERVAL 1 DAY "1997-12-31";

- 1998-01-01

mysql SELECT "1998-01-01" - INTERVAL 1 SECOND;

- 1997-12-31 23:59:59

mysql SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 SECOND);

- 1998-01-01 00:00:00

mysql SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL 1 DAY);

- 1998-01-01 23:59:59

mysql SELECT DATE_ADD("1997-12-31 23:59:59",INTERVAL "1:1" MINUTE_SECOND);

- 1998-01-01 00:01:00

mysql SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND);

- 1997-12-30 22:58:59

mysql SELECT DATE_ADD("1998-01-01 00:00:00", INTERVAL "-1 10" DAY_HOUR);

- 1997-12-30 14:00:00

mysql SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);

- 1997-12-02

mysql SELECT EXTRACT(YEAR FROM "1999-07-02");

- 1999

mysql SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");

- 199907

mysql SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");

- 20102

TO_DAYS(date)

 返回日期date是西元0年至今多少天(不計(jì)算1582年以前)

mysql select TO_DAYS(950501);

- 728779

mysql select TO_DAYS('1997-10-07');

- 729669

FROM_DAYS(N)

 給出西元0年至今多少天返回DATE值(不計(jì)算1582年以前)

mysql select FROM_DAYS(729669);

- '1997-10-07'

本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:

mysql 數(shù)據(jù)類(lèi)型的詳解

MySQL數(shù)據(jù)庫(kù)的表是一個(gè)二維表,由一個(gè)或多個(gè)數(shù)據(jù)列構(gòu)成。

每個(gè)數(shù)據(jù)列都有它的特定類(lèi)型,該類(lèi)型決定了MySQL如何看待該列數(shù)據(jù),我們可以把整型數(shù)值存放到字符類(lèi)型的列中,MySQL則會(huì)把它看成字符串來(lái)處理。

MySQL中的列類(lèi)型有三種:數(shù)值類(lèi)、字符串類(lèi)和日期/時(shí)間類(lèi)。

從大類(lèi)來(lái)看列類(lèi)型和數(shù)值類(lèi)型一樣,都是只有三種。但每種列類(lèi)型都還可細(xì)分。

下面對(duì)各種列類(lèi)型進(jìn)行詳細(xì)介紹。

數(shù)值類(lèi)的數(shù)據(jù)列類(lèi)型

數(shù)值型的列類(lèi)型包括整型和浮點(diǎn)型兩大類(lèi)。

TINYINT:1字節(jié) 非常小的正整數(shù),帶符號(hào):-128~127,不帶符號(hào):0~255

SMALLINT:2字節(jié) 小整數(shù),帶符號(hào):-32768~32767,不帶符號(hào):0~65535

MEDIUMINT:3字節(jié) 中等大小的整數(shù),帶符號(hào):-8388608~8388607,不帶符號(hào):0~16777215

INT:4字節(jié) 標(biāo)準(zhǔn)整數(shù),帶符號(hào):-2147483648~2147483647,不帶符號(hào):0~4294967295

BIGINT:8字節(jié) 大整數(shù),帶符號(hào):-9223372036854775808~9233372036854775807,不帶符號(hào):0~18446744073709551615

FLOAT:4字節(jié) 單精度浮點(diǎn)數(shù),最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38

DOUBLE:8字節(jié) 雙精度浮點(diǎn)數(shù),最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308

DECIMAL:M+2字節(jié) 以字符串形式表示的浮點(diǎn)數(shù),它的取值范圍可變,由M和D的值決定。

MYSQL支持大量的列類(lèi)型,它們可以被分為 3 類(lèi):數(shù)字類(lèi)型、日期和時(shí)間類(lèi)型以及字符串(字符)類(lèi)型。這個(gè)章節(jié)首先給出可用類(lèi)型的概述,并且總結(jié)各類(lèi)型所需的存儲(chǔ)需求,然后提供各類(lèi)型中的類(lèi)型范疇更詳細(xì)的描述。概述有意地簡(jiǎn)化了。更詳細(xì)的說(shuō)明應(yīng)該參考特寫(xiě)列類(lèi)型的附加信息,例如你能為其指定值的允許格式。

MySQL 支持的列類(lèi)型在下面列出。下列代碼字母用于描述中:

M指出最大的顯示尺寸。最大的顯示尺寸長(zhǎng)度為 255。D適用于浮點(diǎn)類(lèi)型。指出跟隨在十進(jìn)制小數(shù)點(diǎn)后的數(shù)字?jǐn)?shù)量。最大可能值為 30,但不應(yīng)大于M-2。

方括號(hào) (“[”and“]”) 指定可選的類(lèi)型修飾部份。

注意,如果為一個(gè)列指定了ZEROFILL,MySQL 將自動(dòng)為這個(gè)列添加UNSIGNED屬性。

警告:你應(yīng)該知道當(dāng)在兩個(gè)整數(shù)類(lèi)型值中使用減法時(shí),如有一個(gè)為UNSIGNED類(lèi)型,那么結(jié)果也是無(wú)符號(hào)的。查看章節(jié)6.3.5 Cast 函數(shù)。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]-128到127。無(wú)符號(hào)的范圍是0到255。

BITBOOL它們是TINYINT(1)的同義詞。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)小整數(shù)。有符號(hào)的范圍是-32768到32767。無(wú)符號(hào)的范圍是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)中等大小的整數(shù)。有符號(hào)的范圍是-8388608到8388607。無(wú)符號(hào)的范圍是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)正常大小的整數(shù)。有符號(hào)的范圍是-2147483648到2147483647。無(wú)符號(hào)的范圍是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]INT的同義詞。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)大的整數(shù)。有符號(hào)的范圍是-9223372036854775808到9223372036854775807。無(wú)符號(hào)的范圍是0到18446744073709551615。

你應(yīng)該知道的有關(guān)BIGINT列的一些事情:

BIGINT或DOUBLE值來(lái)完成的,因此你不應(yīng)該使用大于9223372036854775807(63 bits) 的無(wú)符號(hào)大整數(shù),除了位函數(shù)之外!如果你這樣做了,結(jié)果中的某些大數(shù)字可能會(huì)出錯(cuò),因?yàn)閷IGINT轉(zhuǎn)換成DOUBLE時(shí)產(chǎn)生了舍入錯(cuò)誤。MySQL 4.0 在下列情況下可以處理BIGINT:

在一個(gè)BIGINT列中使用整數(shù)存儲(chǔ)一個(gè)大的無(wú)符號(hào)值。

在MIN(big_int_column)和MAX(big_int_column)中。

當(dāng)兩個(gè)操作數(shù)都是整數(shù)時(shí)使用操作符 (+、-、*、等)。

通常你可以在一個(gè)BIGINT列中以字符串方式存儲(chǔ)的一個(gè)精確的整數(shù)。在這種情況下,MySQL 將執(zhí)行一個(gè)字符串到數(shù)字的轉(zhuǎn)換,包括無(wú) intermediate 的雙精度表示法。

當(dāng)兩個(gè)參數(shù)均是整數(shù)值時(shí),“-”、“+”和“*”將使用BIGINT運(yùn)算!這就意味著,如果兩個(gè)大整數(shù)的乘積(或函數(shù)的結(jié)果返回整數(shù))的結(jié)果大于9223372036854775807時(shí),你可能會(huì)得到意想不到的結(jié)果。

FLOAT(precision) [UNSIGNED] [ZEROFILL]一個(gè)浮點(diǎn)型數(shù)字。

precision可以是=24作為一個(gè)單精度的浮點(diǎn)數(shù)字和介于 25 和 53 之間作為一個(gè)雙精度的浮點(diǎn)數(shù)字。這些類(lèi)型與下面描述的FLOAT和DOUBLE類(lèi)型相似。FLOAT(X)有與相應(yīng)的FLOAT和DOUBLE類(lèi)型同樣的范圍,但是顯示尺寸和十進(jìn)制小數(shù)位數(shù)是未定義的。在 MySQL 3.23 中,它是一個(gè)真實(shí)的浮點(diǎn)值。而在 MySQL 早期的版本中,F(xiàn)LOAT(precision)通常有 2 小數(shù)位。 注意,由于在 MySQL 中所有的計(jì)算都是以雙精度執(zhí)行的,所以使用FLOAT可能帶來(lái)一些意想不到的問(wèn)題。查看章節(jié)A.5.6 解決沒(méi)有匹配行的問(wèn)題。

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]一個(gè)小的(單精度) 浮點(diǎn)數(shù)字。允許的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。如果UNSIGNED被指定,負(fù)值是不允許的。M是顯示寬度,D是小數(shù)位數(shù)。FLOAT沒(méi)有參數(shù)或有X= 24 的FLOAT(X)代表一個(gè)單精度的浮點(diǎn)數(shù)字。

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]一個(gè)正常大小的(雙精度)浮上數(shù)字。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。如果UNSIGNED被指定,負(fù)值是不允許的。M是顯示寬度,D是小數(shù)位數(shù)。DOUBLE沒(méi)胡參數(shù)或有 25 =X= 53 的FLOAT(X)代表一個(gè)雙精度的浮點(diǎn)數(shù)字。

DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]

REAL[(M,D)] [UNSIGNED] [ZEROFILL]它們是DOUBLE同義詞。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]一個(gè)未壓縮(unpacked)的浮點(diǎn)數(shù)。運(yùn)作如同一個(gè)CHAR列:“unpacked” 意味著數(shù)字是以一個(gè)字符串存儲(chǔ)的,值的每一位將使用一個(gè)字符。小數(shù)點(diǎn)并且對(duì)于負(fù)數(shù),“-”符號(hào)不在M中計(jì)算(但是它們的空間是被保留的)。如果D是 0,值將沒(méi)有小數(shù)點(diǎn)或小數(shù)部份。DECIMAL值的最大范圍與DOUBLE一致,但是對(duì)于一個(gè)給定的DECIMAL列,實(shí)際的范圍可以被所選擇的M和D限制。如果UNSIGNED被指定,負(fù)值是不允許的。 如果D被忽略,缺省為 0。如果M被忽略,缺省為 10。 在 MySQL 3.23 以前,M參數(shù)必須包含符號(hào)與小數(shù)點(diǎn)所需的空間。

DEC[(M[,D])] [UNSIGNED] [ZEROFILL]

NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]DECIMAL的同義詞。

DATE一個(gè)日期。支持的范圍是'1000-01-01'到'9999-12-31'。MySQL 以'YYYY-MM-DD'格式顯示DATE值,但是允許你以字符串或數(shù)字給一個(gè)DATE列賦值。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類(lèi)型。

DATETIME一個(gè)日期和時(shí)間的組合。支持的范圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL 以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值,但是允許你以字符串或數(shù)字給一個(gè)DATETIME列賦值。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類(lèi)型。

TIMESTAMP[(M)]一個(gè)時(shí)間戳。范圍是'1970-01-01 00:00:00'到2037年間的任意時(shí)刻。 MySQL 4.0 和更早版本中,TIMESTAMP值是以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式顯示的,它取決于M是否是14(或省略)、12、8或6,但是允許你以字符串或數(shù)字給一個(gè)TIMESTAMP列賦值。 從 MySQL 4.1 開(kāi)始,TIMESTAMP以'YYYY-MM-DD HH:MM:DD'格式作為字符返回。如果你你希望以數(shù)字形式返回則必須在該時(shí)間戳字段后加上 +0。不同的時(shí)間戳長(zhǎng)度是不支持的。從 MySQL 4.0.12 開(kāi)始,選項(xiàng)--new可以被用來(lái)使服務(wù)器與 4.1 一樣運(yùn)作。TIMESTAMP列有益于記錄一個(gè)INSERT或UPDATE操作的日期和時(shí)間,因?yàn)槿绻阕约簺](méi)有給它賦值,它將被自動(dòng)地設(shè)置為最近一次操作的日期和時(shí)間。也可以通過(guò)給它賦一個(gè)NULL而使它設(shè)置為當(dāng)前的日期和時(shí)間。查看章節(jié)6.2.2 Date 和 Time 類(lèi)型。 參數(shù)M只影響一個(gè)TIMESTAMP列的顯示格式;它的值總是占用 4 個(gè)字節(jié)存儲(chǔ)。 注意,當(dāng)TIMESTAMP(M)列的M是 8 或 14 時(shí),它返回的是數(shù)字而其它的TIMESTAMP(M)列返回的是字符串。這僅僅是為了可以可靠地轉(zhuǎn)儲(chǔ)并恢復(fù)到其它格式的表中。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類(lèi)型。TIME一個(gè)時(shí)間。范圍是'-838:59:59'到'838:59:59'。MySQL 以'HH:MM:SS'格式顯示TIME值,但是允許你使用字符串或數(shù)字來(lái)給TIME列賦值。查看章節(jié)6.2.2.3TIME類(lèi)型。YEAR[(2|4)]一個(gè) 2 或 4 位數(shù)字格式的年(缺省為 4 位)。允許的值是1901到2155、0000(4 位年格式) 以及使用 2 位格式的 1970-2069 (70-69)。MySQL 以YYYY格式顯示YEAR值,但是允許你使用字符串或數(shù)字來(lái)給YEAR列賦值。(YEAR類(lèi)型在 MySQL 3.22 之前不支持。) 查看章節(jié)6.2.2.4YEAR類(lèi)型。

[NATIONAL] CHAR(M) [BINARY]一個(gè)定長(zhǎng)的字符串,當(dāng)存儲(chǔ)時(shí),總是以空格填滿右邊到指定的長(zhǎng)度。M的范圍是 0 到 255 (在 MySQL 3.23 版本之前為 1 到 255)。當(dāng)該值被檢索時(shí),尾部空格將被刪除。CHAR值根據(jù)缺省的字符集進(jìn)行忽略大小寫(xiě)的排索與比較,除非指定了關(guān)鍵詞BINARY。NATIONAL CHAR(或短形式NCHAR) 是以 ANSI SQL 方式定義一個(gè)CHAR列,它將使用缺省的字符集。這在 MySQL 中是默認(rèn)的。

CHAR是CHARACTER的縮寫(xiě)。 MySQL 允許以CHAR(0)類(lèi)型建立一個(gè)列。一些老程序運(yùn)行時(shí)必需一個(gè)列,卻又并不使用這個(gè)列的值,你就不得不為了適應(yīng)它而建立該列,在這情況下,CHAR(0)將是很有益的。當(dāng)需要一個(gè)列僅保存兩個(gè)值時(shí):一個(gè)為CHAR(0)(該列沒(méi)有定義為NOT NULL),這將僅占用一個(gè)比特位來(lái)存儲(chǔ) 2 個(gè)值:NULL或""。查看章節(jié)6.2.3.1CHAR和VARCHAR類(lèi)型。CHAR這是CHAR(1)的同義詞。

[NATIONAL] VARCHAR(M) [BINARY]一個(gè)變長(zhǎng)的字符串。注意:尾部的空格在存儲(chǔ)時(shí)將會(huì)被刪除(這與 ANSI SQL 約規(guī)不同)。M的范圍是 0 到 255 (在 MySQL 4.0.2 之前的版本中是 1 到 255)。

VARCHAR值以大小寫(xiě)忽略方式進(jìn)行排索與比較,除非關(guān)鍵詞BINARY被指定。查看章節(jié)6.5.3.1 隱式的列定義變化。VARCHAR是CHARACTER VARYING的縮寫(xiě)。查看章節(jié)6.2.3.1CHAR和VARCHAR類(lèi)型。

TINYBLOBTINYTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 255 (2^8 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類(lèi)型。

BLOBTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 65535 (2^16 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類(lèi)型。

MEDIUMBLOBMEDIUMTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 16777215 (2^24 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類(lèi)型。

LONGBLOBLONGTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 4294967295 (2^32 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。注意,由于服務(wù)器/客戶端的協(xié)議以及 MyISAM 表通常有一個(gè) 16M 每通信包/表行的限制,你仍然不能使用這個(gè)類(lèi)型的整個(gè)范圍。查看章節(jié)6.2.3.2BLOB和TEXT類(lèi)型。ENUM('value1','value2',...)一個(gè)枚舉類(lèi)型。一個(gè)僅能有一個(gè)值的字符串對(duì)象,這個(gè)值選自值列'value1'、'value2'、...、NULL或特殊的""出錯(cuò)值。一個(gè)ENUM列可以有最大 65535 不同的值。查看章節(jié)6.2.3.3ENUM類(lèi)型。SET('value1','value2',...)一個(gè)集合。一個(gè)能有零個(gè)或更多個(gè)值的字符串對(duì)象,其中每個(gè)值必須選自值列'value1'、'value2'、...。一個(gè)SET列可以有最大 64 個(gè)成員。查看章節(jié)6.2.3.4SET類(lèi)型。

MySQL 支持所有的 ANSI/ISO SQL92 數(shù)字類(lèi)型。這些類(lèi)型包括準(zhǔn)確數(shù)字的數(shù)據(jù)類(lèi)型(NUMERIC、DECIMAL、INTEGER和SMALLINT),也包括近似數(shù)字的數(shù)據(jù)類(lèi)型(FLOAT、REAL和DOUBLE PRECISION)。關(guān)鍵詞INT是INTEGER的同義詞,關(guān)鍵詞DEC是DECIMAL的同義詞。

NUMERIC和DECIMAL類(lèi)型被 MySQL 以同樣的類(lèi)型實(shí)現(xiàn),這在 SQL92 標(biāo)準(zhǔn)中是允許的。他們用于保存對(duì)準(zhǔn)確精度有重要要求的值,例如與金錢(qián)有關(guān)的數(shù)據(jù)。當(dāng)以它們中的之一聲明一個(gè)列時(shí),精度和數(shù)值范圍可以(通常是)被指定;例如:

salary DECIMAL(5,2)

在這個(gè)例子中,5(精度(precision)) 代表重要的十進(jìn)制數(shù)字的數(shù)目,2(數(shù)據(jù)范圍(scale)) 代表在小數(shù)點(diǎn)后的數(shù)字位數(shù)。在這種情況下,因此,salary列可以存儲(chǔ)的值范圍是從-99.99到99.99。(實(shí)際上 MySQL 在這個(gè)列中可以存儲(chǔ)的數(shù)值可以一直到999.99,因?yàn)樗鼪](méi)有存儲(chǔ)正數(shù)的符號(hào))。

譯者注:

M 與D 對(duì)DECIMAL(M, D) 取值范圍的影響

類(lèi)型說(shuō)明 取值范圍(MySQL 3.23) 取值范圍(MySQL = 3.23)

DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9

DECIMAL(5, 1) -99.9 到 999.9 -9999.9 到 99999.9

DECIMAL(6, 1) -999.9 到 9999.9 -99999.9 到 999999.9

DECIMAL(6, 2) -99.99 到 999.99 -9999.99 到 99999.99

DECIMAL(6, 3) -9.999 到 99.999 -999.999 到 9999.999

# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范圍等于早期版本中的DECIMAL(M + 2, D) 的取值范圍。注釋結(jié)束:

在 ANSI/ISO SQL92 中,句法DECIMAL(p)等價(jià)于DECIMAL(p,0)。同樣的,在執(zhí)行被允許決定值p的地方,句法DECIMAL等價(jià)于DECIMAL(p,0)。MySQL 目前還不支持DECIMAL/NUMERIC數(shù)據(jù)類(lèi)型的這些變體形式中的任一種。一般來(lái)說(shuō)這并不是一個(gè)嚴(yán)重的問(wèn)題,通過(guò)明確地控制精度和數(shù)值范圍可以得到這些類(lèi)型的主要功能益處。

DECIMAL和NUMERIC值是作為字符串存儲(chǔ)的,而不是作為二進(jìn)制浮點(diǎn)數(shù),以便保護(hù)這些值的十進(jìn)制精確度。一個(gè)字符用于數(shù)值的每一位、小數(shù)點(diǎn)(如果scale 0) 和“-”符號(hào)(對(duì)于負(fù)值)。如果scale是 0,DECIMAL和NUMERIC值不包含小數(shù)點(diǎn)或小數(shù)部分。

DECIMAL和NUMERIC值的最大范圍與DOUBLE一致,但是對(duì)于一個(gè)給定的DECIMAL或NUMERIC列,它的實(shí)際范圍可制定該列時(shí)的precision或scale限制。當(dāng)這樣的列被賦給了小數(shù)點(diǎn)的位數(shù)超過(guò)scale所指定的值時(shí),該將根據(jù)scale進(jìn)行四舍五入。當(dāng)一個(gè)DECIMAL或NUMERIC列被賦與一個(gè)大小超過(guò)指定(或缺省)的precisionandscale的限止范圍時(shí),MySQL 以該列范圍的端點(diǎn)值存儲(chǔ)該值。

mysql應(yīng)該怎么念?

mysql讀法:英?[ma? es kju: el]??美?[ma? ?s kju ?l]

釋義:n. 數(shù)據(jù)庫(kù)系統(tǒng)(一種免費(fèi)的跨平臺(tái)的)

短語(yǔ)

1、JSP MySQL?小型酒吧在線管理系統(tǒng) ; 網(wǎng)站在線客服系統(tǒng) ; 二級(jí)聯(lián)動(dòng)菜單 ; 設(shè)計(jì)與實(shí)現(xiàn)

2、MySQL Chinese?MySQL中文增強(qiáng)版

3、mysql server?服務(wù)器 ; 啟動(dòng)及停止 ; 數(shù)據(jù)庫(kù)

4、MySQL Cluster?數(shù)據(jù)庫(kù)集群 ; 概念學(xué)習(xí)匯總

用法:The default?name?of the?instance?is?MYSQL.

實(shí)例的默認(rèn)名稱是MYSQL。

擴(kuò)展資料

mysql近義詞:database

讀法:英?[?de?t?be?s; ?dɑ?t?be?s]??美?[?de?t?be?s,?d?t?be?s]

釋義:n. 數(shù)據(jù)庫(kù),資料庫(kù)

短語(yǔ)

1、relational database?[計(jì)]?關(guān)系數(shù)據(jù)庫(kù) ; 相關(guān)數(shù)據(jù)庫(kù) ; 關(guān)系數(shù)據(jù)庫(kù) ; 關(guān)聯(lián)式資料庫(kù)

2、Graph Database?圖數(shù)據(jù)庫(kù) ; 圖形數(shù)據(jù)庫(kù) ; 數(shù)據(jù)庫(kù)

3、temporal database?時(shí)間數(shù)據(jù)庫(kù) ; 時(shí)態(tài)數(shù)據(jù)庫(kù) ; 時(shí)間資料庫(kù)

在mysql中兩個(gè)不同的表但是字段名相同,怎么來(lái)實(shí)現(xiàn),求語(yǔ)句

以下命令是不是你想要的?

1、復(fù)制表結(jié)構(gòu)及數(shù)據(jù)到新表

CREATE?TABLE?新表SELECT?*?FROM?舊表

這種方法會(huì)將oldtable中所有的內(nèi)容都拷貝過(guò)來(lái),當(dāng)然我們可以用delete?from?newtable;來(lái)刪除。

不過(guò)這種方法的一個(gè)最不好的地方就是新表中沒(méi)有了舊表的primary?key、Extra(auto_increment)等屬性。需要自己用alter添加,而且容易搞錯(cuò)。

2、只復(fù)制表結(jié)構(gòu)到新表

CREATE?TABLE?新表SELECT?*?FROM?舊表WHERE?1=2

或CREATE?TABLE?新表LIKE?舊表

3、復(fù)制舊表的數(shù)據(jù)到新表(假設(shè)兩個(gè)表結(jié)構(gòu)一樣)

INSERT?INTO?新表SELECT?*?FROM?舊表

4、復(fù)制舊表的數(shù)據(jù)到新表(假設(shè)兩個(gè)表結(jié)構(gòu)不一樣)

INSERT?INTO?新表(字段1,字段2,.......)?SELECT?字段1,字段2,......?FROM?舊表

5、可以將表1結(jié)構(gòu)復(fù)制到表2

SELECT?*?INTO?表2?FROM?表1?WHERE?1=2

6、可以將表1內(nèi)容全部復(fù)制到表2

SELECT?*?INTO?表2?FROM?表1

7、?show?create?table?舊表;

這樣會(huì)將舊表的創(chuàng)建命令列出。我們只需要將該命令拷貝出來(lái),更改table的名字,就可以建立一個(gè)完全一樣的表

8、mysqldump

用mysqldump將表dump出來(lái),改名字后再導(dǎo)回去或者直接在命令行中運(yùn)行

mysql 正則查詢問(wèn)題

MySQL中的模式匹配(標(biāo)準(zhǔn)SQL匹配和正則表達(dá)式匹配)

1. 使用LIKE和NOT LIKE比較操作符(注意不能使用=或!=);

2. 模式默認(rèn)是忽略大小寫(xiě)的;

3. 允許使用”_”匹配任何單個(gè)字符,”%”匹配任意數(shù)目字符(包括零字符);

MySQL還提供象UNIX實(shí)用程序的擴(kuò)展正則表達(dá)式模式匹配的格式:

1. 使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,他們是同義詞);

2. REGEXP模式匹配與被匹配字符的任何地方匹配,則匹配成功(即只要被匹配字符包含或者可以等于所定義的模式,就匹配成功);

不同于LIKE模式匹配,只有和整個(gè)值匹配,才匹配成功(即只有被匹配字符完全和所定義的模式匹配,才匹配成功)

3. REGEXP默認(rèn)也是不區(qū)分大小寫(xiě),可以使用BINARY關(guān)鍵詞強(qiáng)制區(qū)分大小寫(xiě);

如:SELECT * FROM pet WHERE name REGEXP BINARY ‘^B’;

4. 正則表達(dá)式為一個(gè)表達(dá)式,它能夠描述一組字符串。REGEXP操作符完成MySQL的擴(kuò)展正則表達(dá)式匹配。REGEXP實(shí)現(xiàn)的功能是如果被匹配字符中部分或完全符合所定義的表達(dá)式描述的字符,則表示匹配成功。

1)最簡(jiǎn)單的正則表達(dá)式是不含任何特殊字符的正則表達(dá)式,如hello。

SELECT * FROM pet WHERE name REGEXP ‘hello’;表示的意思是如果name這列的某一行包含hello這個(gè)單詞,則匹配就成功了。(注意和LIKE的區(qū)別,LIKE要求name這列的某一行必須完全等于hello,才匹配成功)。

2)非平凡的正則表達(dá)式,除了含有最簡(jiǎn)單表達(dá)式那些東西,還需要采用特殊的特殊結(jié)構(gòu),用到的字符,往下看。(因此,通常的正則表達(dá)式是普通單詞和這些正則表達(dá)式字符構(gòu)成的表達(dá)式)

5. 擴(kuò)展正則表達(dá)式的一些字符:

1) ‘.’匹配任何單個(gè)字符;

2) […]匹配在方括號(hào)內(nèi)的任何字符,可以使用’-’表示范圍,如[a-z],[0-9],而且可以混合[a-dXYZ]表示匹配a,b,c,d,X,Y,Z中的任何一個(gè);(注意使用括號(hào)以及’|’的方法也可以達(dá)到相同的效果,如(a|b|c)匹配a,b,c中的任何一個(gè));此外可以使用’^’表示否定,如[^a-z]表示不含有a-z中間的任何一個(gè)字符;

3) ‘*’表示匹配0個(gè)或多個(gè)在它前面的字符。如x*表示0個(gè)或多個(gè)x字符,.*表示匹配任何數(shù)量的任何字符;

4) 可以將模式定位必須匹配被匹配字符的開(kāi)始或結(jié)尾,在匹配模式前加”^”:表示匹配從被匹配字符的最開(kāi)頭開(kāi)始,在匹配模式后加”$”:表示匹配要進(jìn)行到被匹配字符的最末尾。

5) ‘+’表示匹配1個(gè)或多個(gè)在它前面的字符。如a+表示1個(gè)或多個(gè)a字符。

6) ‘?’表示匹配0個(gè)或1個(gè)在它前面的字符。如a?表示0個(gè)或1個(gè)a字符。

7) ‘|’如de|abc表示匹配序列de或者abc。注意雖然[…]也可以表示匹配中的某一個(gè),但是每次僅僅能表示單個(gè)字符及[a-bXYZ]實(shí)際每一次只代表了一個(gè)字符。

8) ()括號(hào)可以應(yīng)用在表達(dá)式中,使得更容易理解。

9) a{5}表示匹配共5個(gè)a,a{2,8}表示匹配2~8個(gè)a。

a*可以寫(xiě)成a{0, } 第二個(gè)參數(shù)省略表示沒(méi)有上界;a+可以寫(xiě)成a{1,};a?可以寫(xiě)成a{0,1}

更準(zhǔn)確地講,a{n}與a的n個(gè)實(shí)例準(zhǔn)確匹配。a{n,}匹配a的n個(gè)或更多實(shí)例。a{m,n}匹配a的m~n個(gè)實(shí)例,包含m和n

m和n必須位于0~RE_DUP_MAX(默認(rèn)為255)的范圍內(nèi),包含0和RE_DUP_MAX。如果同時(shí)給定了m和n,m必須小于或等于n。

!--[if !supportLineBreakNewLine]--

!--[endif]--

10) 標(biāo)準(zhǔn)類(lèi)別[:character_class:]:

常用的一些標(biāo)準(zhǔn)類(lèi)別,一般在[]中使用,由于用在[]中故和[a-z]類(lèi)似,每一次只能頂替一個(gè)字符。(這個(gè)有點(diǎn)類(lèi)似perl里面定義的常用的一些標(biāo)準(zhǔn)類(lèi)別:\w表示一個(gè)單詞字符即[a-zA-Z0-9];\W一個(gè)非單詞字符與\w相反; \d一個(gè)數(shù)字即[0-9];\D一個(gè)非數(shù)字;\s一個(gè)白空間字符即[\t\f\r\n];\f為換頁(yè)符;\S一個(gè)非白空間字符)

標(biāo)準(zhǔn)的類(lèi)別名稱:

alnum

文字?jǐn)?shù)字字符

alpha

文字字符

blank

空白字符

cntrl

控制字符

digit

數(shù)字字符

graph

圖形字符

lower

小寫(xiě)文字字符

print

圖形或空格字符

punct

標(biāo)點(diǎn)字符

space

空格、制表符、新行、和回車(chē)

upper

大寫(xiě)文字字符

xdigit

十六進(jìn)制數(shù)字字符

使用實(shí)例:

SELECT 'justalnums' REGEXP '[[:alnum:]]+';解釋其中[[:alnum:]]由于[:alnum:]表示文字?jǐn)?shù)字字符,它又用在[]中,故[[:alnum:]]代表一個(gè)字符它為一個(gè)文字或者數(shù)字。后面的+號(hào)表示1個(gè)或多個(gè)這樣的文字或數(shù)字。

上述語(yǔ)句返回1.那是因?yàn)閖ustalnums中是由字母組成的。

11)字邊界:[[::]]表示開(kāi)始,[[::]]表示結(jié)束:

其定義了一個(gè)單詞的開(kāi)始和結(jié)束邊界,這個(gè)單詞為字字符,這樣[[::]]代表這個(gè)字字符前面的部分,[[::]]代表這個(gè)字字符后面的部分。字字符為alnum類(lèi)的字母數(shù)字字符或下劃線(_);因此[[::]], [[::]]均代表不是字字符的字符,即只要不是字母數(shù)字字符以及下劃線(_)即可。因此其可以為什么都不是。因此[[::]]word[[::]]能夠匹配如下的所有情況:

即word單詞本身,word*** 解釋***代表不是字母數(shù)字以及_的任何字符(如,word-net);***word(如,micorsoft word);***word***(如,this is a word program.)

舉例:[[::]]word[[::]]:

SELECT 'a word a' REGEXP '[[::]]word[[::]]'; 結(jié)果為真SELECT 'a xword a' REGEXP '[[::]]word[[::]]'; 結(jié)果為假 最后注意的注意:要在正則表達(dá)式中使用特殊字符,需要在這些字符前面添加2個(gè)反斜杠’\’,舉例:SELECT '1+2' REGEXP '1+2'; 結(jié)果為0SELECT '1+2' REGEXP '1\+2'; 結(jié)果為0SELECT '1+2' REGEXP '1\\+2'; 結(jié)果為1解釋?zhuān)哼@是因?yàn)镸ySQL解析程序解析該SQL語(yǔ)句時(shí):首先將字符串’1\\+2’解析為1\+2;然后把1\+2當(dāng)作正則表達(dá)式,由正則表達(dá)式庫(kù)來(lái)解析,它代表1+2。因此需要加上2個(gè)反斜杠。 不要經(jīng)常犯加一個(gè)反斜杠的錯(cuò)誤,加一個(gè)反斜杠會(huì)莫名其妙:如SELECT '1t2' REGEXP '1\t2';結(jié)果會(huì)返回1本來(lái)的意思是匹配1制表符\t以及2,但是由于只添加了一個(gè)\所以,解析以后編程了1t2,所以匹配成功。12)[.characters.]和[=character_class=] 參考資料:

MySQL的模式匹配

MySQL的正則表達(dá)式匹配

=========================================================================================================

正則表達(dá)式:

正則表達(dá)式是為復(fù)雜搜索指定模式的強(qiáng)大方式。

^

所匹配的字符串以后面的字符串開(kāi)頭

mysql select "fonfo" REGEXP "^fo$"; - 0(表示不匹配)

mysql select "fofo" REGEXP "^fo"; - 1(表示匹配)

$

所匹配的字符串以前面的字符串結(jié)尾

mysql select "fono" REGEXP "^fono$"; - 1(表示匹配)

mysql select "fono" REGEXP "^fo$"; - 0(表示不匹配)

.

匹配任何字符(包括新行)

mysql select "fofo" REGEXP "^f.*"; - 1(表示匹配)

mysql select "fonfo" REGEXP "^f.*"; - 1(表示匹配)

a*

匹配任意多個(gè)a(包括空串)

mysql select "Ban" REGEXP "^Ba*n"; - 1(表示匹配)

mysql select "Baaan" REGEXP "^Ba*n"; - 1(表示匹配)

mysql select "Bn" REGEXP "^Ba*n"; - 1(表示匹配)

a+

匹配1個(gè)或多個(gè)a字符的任何序列。

mysql select "Ban" REGEXP "^Ba+n"; - 1(表示匹配)

mysql select "Bn" REGEXP "^Ba+n"; - 0(表示不匹配)

a?

匹配一個(gè)或零個(gè)a

mysql select "Bn" REGEXP "^Ba?n"; - 1(表示匹配)

mysql select "Ban" REGEXP "^Ba?n"; - 1(表示匹配)

mysql select "Baan" REGEXP "^Ba?n"; - 0(表示不匹配)

de|abc

匹配de或abc

mysql select "pi" REGEXP "pi|apa"; - 1(表示匹配)

mysql select "axe" REGEXP "pi|apa"; - 0(表示不匹配)

mysql select "apa" REGEXP "pi|apa"; - 1(表示匹配)

mysql select "apa" REGEXP "^(pi|apa)$"; - 1(表示匹配)

mysql select "pi" REGEXP "^(pi|apa)$"; - 1(表示匹配)

mysql select "pix" REGEXP "^(pi|apa)$"; - 0(表示不匹配)

(abc)*

匹配任意多個(gè)abc(包括空串)

mysql select "pi" REGEXP "^(pi)*$"; - 1(表示匹配)

mysql select "pip" REGEXP "^(pi)*$"; - 0(表示不匹配)

mysql select "pipi" REGEXP "^(pi)*$"; - 1(表示匹配)

{1} {2,3}

這是一個(gè)更全面的方法,它可以實(shí)現(xiàn)前面好幾種保留字的功能

a*

可以寫(xiě)成a{0,}

a

可以寫(xiě)成a{1,}

a?

可以寫(xiě)成a{0,1}

在{}內(nèi)只有一個(gè)整型參數(shù)i,表示字符只能出現(xiàn)i次;在{}內(nèi)有一個(gè)整型參數(shù)i,

后面跟一個(gè)“,”,表示字符可以出現(xiàn)i次或i次以上;在{}內(nèi)只有一個(gè)整型參數(shù)i,

后面跟一個(gè)“,”,再跟一個(gè)整型參數(shù)j,表示字符只能出現(xiàn)i次以上,j次以下

(包括i次和j次)。其中的整型參數(shù)必須大于等于0,小于等于 RE_DUP_MAX(默認(rèn)是25

5)。 如果同時(shí)給定了m和n,m必須小于或等于n.

[a-dX], [^a-dX]

匹配任何是(或不是,如果使用^的話)a、b、c、d或X的字符。兩個(gè)其他字符之間的“-”字符構(gòu)成一個(gè)范圍,與從第1個(gè)字符開(kāi)始到第2個(gè)字符之間的所有字符匹配。例如,[0-9]匹配任何十進(jìn)制數(shù)字 。要想包含文字字符“]”,它必須緊跟在開(kāi)括號(hào)“[”之后。要想包含文字字符“-”,它必須首先或最后寫(xiě)入。對(duì)于[]對(duì)內(nèi)未定義任何特殊含義的任何字符,僅與其本身匹配。

mysql select "aXbc" REGEXP "[a-dXYZ]"; - 1(表示匹配)

mysql select "aXbc" REGEXP "^[a-dXYZ]$"; - 0(表示不匹配)

mysql select "aXbc" REGEXP "^[a-dXYZ] $"; - 1(表示匹配)

mysql select "aXbc" REGEXP "^[^a-dXYZ] $"; - 0(表示不匹配)

mysql select "gheis" REGEXP "^[^a-dXYZ] $"; - 1(表示匹配)

mysql select "gheisa" REGEXP "^[^a-dXYZ] $"; - 0(表示不匹配)

[[.characters.]]

表示比較元素的順序。在括號(hào)內(nèi)的字符順序是唯一的。但是括號(hào)中可以包含通配符,

所以他能匹配更多的字符。舉例來(lái)說(shuō):正則表達(dá)式[[.ch.]]*c匹配chchcc的前五個(gè)字符

。

[=character_class=]

表示相等的類(lèi),可以代替類(lèi)中其他相等的元素,包括它自己。例如,如果o和( )是

一個(gè)相等的類(lèi)的成員,那么[[=o=]]、[[=( )=]]和[o( )]是完全等價(jià)的。

[:character_class:]

在括號(hào)里面,在[:和:]中間是字符類(lèi)的名字,可以代表屬于這個(gè)類(lèi)的所有字符。

字符類(lèi)的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、uppe

r、cntrl、print和xdigit

mysql select "justalnums" REGEXP "[[:alnum:]] "; - 1(表示匹配)

mysql select "!!" REGEXP "[[:alnum:]] "; - 0(表示不匹配)

[[::]]

[[::]]

分別匹配一個(gè)單詞開(kāi)頭和結(jié)尾的空的字符串,這個(gè)單詞開(kāi)頭和結(jié)尾都不是包含在alnum中

的字符也不能是下劃線。

mysql select "a word a" REGEXP "[[::]]word[[::]]"; - 1(表示匹配)

mysql select "a xword a" REGEXP "[[::]]word[[::]]"; - 0(表示不匹配)

mysql select "weeknights" REGEXP "^(wee|week)(knights|nights)$"; - 1(表示

匹配)

要想在正則表達(dá)式中使用特殊字符的文字實(shí)例,應(yīng)在其前面加上2個(gè)反斜杠“\”字符。MySQL解析程序負(fù)責(zé)解釋其中一個(gè),正則表達(dá)式庫(kù)負(fù)責(zé)解釋另一個(gè)。例如,要想與包含特殊字符“+”的字符串“1+2”匹配,在下面的正則表達(dá)式中,只有最后一個(gè)是正確的:

mysql SELECT '1+2' REGEXP '1+2'; - 0

mysql SELECT '1+2' REGEXP '1\+2'; - 0

mysql SELECT '1+2' REGEXP '1\\+2'; - 1

全文檢索:

====================================================================================================

在括號(hào)里面,在[:和:]中間是字符類(lèi)的名字,可以代表屬于這個(gè)類(lèi)的所有字符。字符類(lèi)的名字有: alnum、digit、punct、alpha、graph、space、blank、lower、upper、cntrl、print和xdigit

mysql select "justalnums" REGEXP "[[:alnum:]]+"; - 1(表示匹配)

mysql select "!!" REGEXP "[[:alnum:]]+"; - 0(表示不匹配)

[[::]]

[[::]]

分別匹配一個(gè)單詞開(kāi)頭和結(jié)尾的空的字符串,這個(gè)單詞開(kāi)頭和結(jié)尾都不是包含在alnum中的字符也不能是下劃線。

mysql select "a word a" REGEXP "[[::]]word[[::]]"; - 1(表示匹配)

mysql select "a xword a" REGEXP "[[::]]word[[::]]"; - 0(表示不匹配)

mysql select "weeknights" REGEXP "^(weeweek)(knightsnights)$"; - 1(表示匹配)


當(dāng)前名稱:mysql怎么實(shí)現(xiàn)同義詞的簡(jiǎn)單介紹
轉(zhuǎn)載注明:http://weahome.cn/article/heiigs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部