mysql怎么獲取子元素 mysql獲取某字符

mysql分頁技術(shù) 中用到的關鍵字

mysql的limit是可以指定位置開始,然后還可以指定去多少調(diào)記錄的。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站建設、網(wǎng)站制作、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務安定,十年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

select * from users limit 1,10就是從第一條,取10條。

select * from users limit 10,10就是從第十條,取10條。

怎么取都行。你看看。

通過generator寫的mybatis怎么獲取新增是的id

在MBG中,最主要也最重要的就是XML配置文件,因此本篇文章主要的內(nèi)容就是XML配置。

這里按照配置的順序?qū)ε渲弥饌€講解,更細的內(nèi)容可以配合中文文檔參照。

1. 配置文件頭

?xml version="1.0" encoding="UTF-8"?

!DOCTYPE generatorConfiguration

PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"

""

使用最新版的MBG需要使用上面的xml頭,配置文件必須包含上面的DOCTYPE。

2. 根節(jié)點generatorConfiguration

generatorConfiguration節(jié)點沒有任何屬性,直接寫節(jié)點即可,如下:

generatorConfiguration

!-- 具體配置內(nèi)容 --

/generatorConfiguration

3. generatorConfiguration子元素

從這段開始,就是配置的主要內(nèi)容,這些配置都是generatorConfiguration元素的子元素。

包含以下子元素(有嚴格的順序):

properties (0個或1個)

classPathEntry (0個或多個)

context (1個或多個)

3.1 properties 元素

這個元素用來指定外部的屬性元素,不是必須的元素。

元素用于指定一個需要在配置中解析使用的外部屬性文件,引入屬性文件后,可以在配置中使用 ${property}這種形式的引用,通過這種方式引用屬性文件中的屬性值。 對于后面需要配置的**jdbc信息**和targetProject屬性會很有用。

這個屬性可以通過resource或者url來指定屬性文件的位置,這兩個屬性只能使用其中一個來指定,同時出現(xiàn)會報錯。

resource:指定**classpath**下的屬性文件,使用類似com/myproject/generatorConfig.properties這樣的屬性值。

url:可以指定文件系統(tǒng)上的特定位置,例如

3.2 classPathEntry 元素

這個元素可以0或多個,不受限制。

這個元素的作用是將MBG運行時需要用到的jar包(或zip格式)添加到**classpath**下。

最常見的用法是,當**classpath**下面**沒有**JDBC驅(qū)動的時候,我們通常通過這個屬性指定驅(qū)動的路徑,例如:

classPathEntry location="E:\mysql\mysql-connector-java-5.1.29.jar"/

如果需要用到其他的jar包,也可以這么配置,例如如果你開發(fā)了一個MBG的插件,你就可以通過這種方式加入到**classpath**

這里注意上面重點強調(diào)的 沒有,一般在項目中使用的時候,**classpath**下面都有JDBC驅(qū)動,因此從項目中啟動的時候不需要配置該項。

建議:由于該參數(shù)使用了絕對路徑,因此不利用在不同電腦上通用,因此建議最好把需要的jar包放到項目的**classpath**下,避免每個人都得單獨配置路徑。

3.3 context 元素

在MBG的配置中,至少需要有一個context元素。

context元素用于指定生成一組對象的環(huán)境。例如指定要連接的數(shù)據(jù)庫,要生成對象的類型和要處理的數(shù)據(jù)庫中的表。運行MBG的時候還可以指定要運行的context。

該元素只有一個**必選屬性**id,用來唯一確定一個context元素,該id屬性可以在運行MBG的使用。

此外還有幾個**可選屬性**:

defaultModelType:**這個屬性很重要**,這個屬性定義了MBG如何生成**實體類**。

這個屬性有以下可選值:

conditional:*這是默認值*,這個模型和下面的hierarchical類似,除了如果那個單獨的類將只包含一個字段,將不會生成一個單獨的類。 因此,如果一個表的主鍵只有一個字段,那么不會為該字段生成單獨的實體類,會將該字段合并到基本實體類中。

flat:該模型為每一張表只生成一個實體類。這個實體類包含表中的所有字段。**這種模型最簡單,推薦使用。**

hierarchical:如果表有主鍵,那么該模型會產(chǎn)生一個單獨的主鍵實體類,如果表還有BLOB字段, 則會為表生成一個包含所有BLOB字段的單獨的實體類,然后為所有其他的字段生成一個單獨的實體類。 MBG會在所有生成的實體類之間維護一個繼承關系。

targetRuntime:此屬性用于指定生成的代碼的運行時環(huán)境。該屬性支持以下可選值:

MyBatis3:*這是默認值*

MyBatis3Simple

Ibatis2Java2

Ibatis2Java5 一般情況下使用默認值即可,有關這些值的具體作用以及區(qū)別請查看中文文檔的詳細內(nèi)容。

introspectedColumnImpl:該參數(shù)可以指定擴展org.mybatis.generator.api.IntrospectedColumn該類的實現(xiàn)類。該屬性的作用可以查看擴展MyBatis Generator。

一般情況下,我們使用如下的配置即可:

context id="Mysql" defaultModelType="flat"

如果你希望不生成和Example查詢有關的內(nèi)容,那么可以按照如下進行配置:

context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"

使用MyBatis3Simple可以避免在后面的table中逐個進行配置(后面會提到)。

MBG配置中的其他幾個元素,基本上都是context的子元素,這些子元素(有嚴格的配置順序)包括:

property (0個或多個)

plugin (0個或多個)

commentGenerator (0個或1個)

jdbcConnection (1個)

javaTypeResolver (0個或1個)

javaModelGenerator (1個)

sqlMapGenerator (0個或1個)

javaClientGenerator (0個或1個)

table (1個或多個)

其中property屬性比較特殊,后面講解的時候都會和父元素一起進行講解。在講解property屬性前,我們先看看**什么是分隔符?**。

這里通過一個例子說明。假設在Mysql數(shù)據(jù)庫中有一個表名為user info,你沒有看錯,中間是一個空格,這種情況下如果寫出select * from user info這樣的語句,肯定是要報錯的,在Mysql中的時候我們一般會寫成如下的樣子:

select * from `user info`

這里的使用的**反單引號(`)**就是**分隔符**,**分隔符**可以用于**表名**或者**列名**。

下面繼續(xù)看property支持的屬性:

autoDelimitKeywords

beginningDelimiter

endingDelimiter

javaFileEncoding

javaFormatter

xmlFormatter

由于這些屬性比較重要,這里一一講解。

首先是autoDelimitKeywords,當表名或者字段名為SQL關鍵字的時候,可以設置該屬性為true,MBG會自動給表名或字段名添加**分隔符**。

然后這里繼續(xù)上面的例子來講beginningDelimiter和endingDelimiter屬性。

由于beginningDelimiter和endingDelimiter的默認值為雙引號("),在Mysql中不能這么寫,所以還要將這兩個默認值改為**反單引號(`)**,配置如下:

property name="beginningDelimiter" value="`"/

property name="endingDelimiter" value="`"/

屬性javaFileEncoding設置要使用的Java文件的編碼,默認使用當前平臺的編碼,只有當生產(chǎn)的編碼需要特殊指定時才需要使用,一般用不到。

最后兩個javaFormatter和xmlFormatter屬性**可能會**很有用,如果你想使用模板來定制生成的java文件和xml文件的樣式,你可以通過指定這兩個屬性的值來實現(xiàn)。

接下來分節(jié)對其他的子元素逐個進行介紹。

3.3.1 plugin 元素

該元素可以配置0個或者多個,不受限制。

plugin元素用來定義一個插件。插件用于擴展或修改通過MyBatis Generator (MBG)代碼生成器生成的代碼。

插件將按在配置中配置的順序執(zhí)行。

有關插件的詳細信息可以參考開發(fā)插件和提供的插件了解更多。

3.3.2 commentGenerator 元素

該元素最多可以配置1個。

這個元素非常有用,相信很多人都有過這樣的需求,就是希望MBG生成的代碼中可以包含**注釋信息**,具體就是生成表或字段的備注信息。

使用這個元素就能很簡單的實現(xiàn)我們想要的功能。這里先介紹該元素,介紹完后會舉例如何擴展實現(xiàn)該功能。

該元素有一個可選屬性type,可以指定用戶的實現(xiàn)類,該類需要實現(xiàn)org.mybatis.generator.api.CommentGenerator接口。而且必有一個默認的構(gòu)造方法。這個屬性接收默認的特殊值DEFAULT,會使用默認的實現(xiàn)類org.mybatis.generator.internal.DefaultCommentGenerator。

默認的實現(xiàn)類中提供了兩個可選屬性,需要通過property屬性進行配置。

suppressAllComments:**阻止**生成注釋,默認為false

suppressDate:**阻止**生成的注釋包含時間戳,默認為false

一般情況下由于MBG生成的注釋信息沒有任何價值,而且有時間戳的情況下每次生成的注釋都不一樣,使用**版本控制**的時候每次都會提交,因而一般情況下我們都會屏蔽注釋信息,可以如下配置:

commentGenerator

property name="suppressAllComments" value="true"/

property name="suppressDate" value="true"/

/commentGenerator

接下來我們簡單舉例實現(xiàn)生成包含表字段注釋信息的注釋

因為系統(tǒng)提供了一個默認的實現(xiàn)類,所以對我們來說,自己實現(xiàn)一個會很容易,最簡單的方法就是復制默認實現(xiàn)類代碼到一個新的文件中,修改類名如MyCommentGenerator,在你自己的實現(xiàn)類中,你可以選擇是否繼續(xù)支持上面的兩個屬性,你還可以增加對其他屬性的支持。

我們通過下面一個方法的修改來了解,其他幾個方法請自行修改(寫本章的時候我也沒有完全實現(xiàn)該類,所以不提供完整源碼了):

@Override

public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {

if (introspectedColumn.getRemarks() != null !introspectedColumn.getRemarks().equals("")) {

field.addJavaDocLine("/**");

field.addJavaDocLine(" * " + introspectedColumn.getRemarks());

addJavadocTag(field, false);

field.addJavaDocLine(" */");

}

}

這個方法是給字段添加注釋信息的,其中IntrospectedColumn包含了字段的完整信息,通過getRemarks方法可以獲取字段的注釋信息。上面這個方法修改起來還是很容易的。除了字段的注釋外還有Getter和Setter,以及類的注釋。此外還有生成XML的注釋,大家可以根據(jù)默認的實現(xiàn)進行修改。

完成我們自己的實現(xiàn)類后,我們還需要做如下配置:

commentGenerator type="com.github.abel533.mybatis.generator.MyCommentGenerator"/

3.3.3 jdbcConnection 元素

jdbcConnection用于指定數(shù)據(jù)庫連接信息,該元素必選,并且只能有一個。

配置該元素只需要注意如果JDBC驅(qū)動不在**classpath**下,就需要通過classPathEntry元素引入jar包,這里**推薦**將jar包放到**classpath**下。

該元素有兩個必選屬性:

driverClass:訪問數(shù)據(jù)庫的JDBC驅(qū)動程序的完全限定類名

connectionURL:訪問數(shù)據(jù)庫的JDBC連接URL

該元素還有兩個可選屬性:

userId:訪問數(shù)據(jù)庫的用戶ID

password:訪問數(shù)據(jù)庫的密碼

此外該元素還可以接受多個property子元素,這里配置的property屬性都會添加到JDBC驅(qū)動的屬性中。

這個元素配置起來最容易,這里舉個簡單例子:

jdbcConnection driverClass="com.mysql.jdbc.Driver"

connectionURL="jdbc:mysql://localhost:3306/test"

userId="root"

password=""

/jdbcConnection

3.3.4 javaTypeResolver 元素

該元素最多可以配置一個。

這個元素的配置用來指定JDBC類型和Java類型如何轉(zhuǎn)換。

該元素提供了一個可選的屬性type,和commentGenerator比較類型,提供了默認的實現(xiàn)DEFAULT,一般情況下使用默認即可,需要特殊處理的情況可以通過其他元素配置來解決,不建議修改該屬性。

該屬性還有一個可以配置的property元素。

可以配置的屬性為forceBigDecimals,該屬性可以控制是否強制DECIMAL和NUMERIC類型的字段轉(zhuǎn)換為Java類型的java.math.BigDecimal,默認值為false,一般不需要配置。

默認情況下的轉(zhuǎn)換規(guī)則為:

如果精度0或者長度18,就會使用java.math.BigDecimal

如果精度=0并且10=長度=18,就會使用java.lang.Long

如果精度=0并且5=長度=9,就會使用java.lang.Integer

如果精度=0并且長度5,就會使用java.lang.Short

如果設置為true,那么一定會使用java.math.BigDecimal,配置示例如下:

javaTypeResolver

property name="forceBigDecimals" value="true" /

/javaTypeResolver

3.3.5 javaModelGenerator 元素

該元素必須配置一個,并且最多一個。

該元素用來控制生成的實體類,根據(jù)context中配置的defaultModelType,一個表可能會對應生成多個不同的實體類。一個表對應多個類實際上并不方便,所以前面也推薦使用flat,這種情況下一個表對應一個實體類。

該元素只有兩個屬性,都是必選的。

targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(table中會提到)。

targetProject:指定目標項目路徑,使用的是文件系統(tǒng)的絕對路徑。

該元素支持以下幾個property子元素屬性:

constructorBased:該屬性只對MyBatis3有效,如果true就會使用構(gòu)造方法入?yún)?,如果false就會使用setter方式。默認為false。

enableSubPackages:如果true,MBG會根據(jù)catalog和schema來生成子包。如果false就會直接用targetPackage屬性。默認為false。

immutable:該屬性用來配置實體類屬性是否可變,如果設置為true,那么constructorBased不管設置成什么,都會使用構(gòu)造方法入?yún)ⅲ⑶也粫蓅etter方法。如果為false,實體類屬性就可以改變。默認為false。

rootClass:設置所有實體類的基類。如果設置,需要使用類的全限定名稱。并且如果MBG能夠加載rootClass,那么MBG不會覆蓋和父類中完全匹配的屬性。匹配規(guī)則:

屬性名完全相同

屬性類型相同

屬性有g(shù)etter方法

屬性有setter方法

trimStrings:是否對數(shù)據(jù)庫查詢結(jié)果進行trim操作,如果設置為true就會生成類似這樣public void setUsername(String username) {this.username = username == null ? null : username.trim();}的setter方法。默認值為false。

配置示例如下:

javaModelGenerator targetPackage="test.model" targetProject="E:\MyProject\src\main\java"

property name="enableSubPackages" value="true" /

property name="trimStrings" value="true" /

/javaModelGenerator

3.3.6 sqlMapGenerator 元素

該元素可選,最多配置一個。但是有如下兩種必選的特殊情況:

如果targetRuntime目標是**iBATIS2**,該元素必須配置一個。

如果targetRuntime目標是**MyBatis3**,只有當javaClientGenerator需要XML時,該元素必須配置一個。 如果沒有配置javaClientGenerator,則使用以下的規(guī)則:

如果指定了一個sqlMapGenerator,那么MBG將只生成XML的SQL映射文件和實體類。

如果沒有指定sqlMapGenerator,那么MBG將只生成實體類。

該元素只有兩個屬性(和前面提過的javaModelGenerator的屬性含義一樣),都是必選的。

targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(table中會提到)。

targetProject:指定目標項目路徑,使用的是文件系統(tǒng)的絕對路徑。

該元素支持property子元素,只有一個可以配置的屬性:

enableSubPackages:如果true,MBG會根據(jù)catalog和schema來生成子包。如果false就會直接用targetPackage屬性。默認為false。

配置示例:

sqlMapGenerator targetPackage="test.xml" targetProject="E:\MyProject\src\main\resources"

property name="enableSubPackages" value="true" /

/sqlMapGenerator

3.3.7 javaClientGenerator 元素

該元素可選,最多配置一個。

如果不配置該元素,就不會生成Mapper接口。

該元素有3個必選屬性:

type:該屬性用于選擇一個預定義的客戶端代碼(可以理解為Mapper接口)生成器,用戶可以自定義實現(xiàn),需要繼承org.mybatis.generator.codegen.AbstractJavaClientGenerator類,必選有一個默認的構(gòu)造方法。 該屬性提供了以下預定的代碼生成器,首先根據(jù)context的targetRuntime分成三類:

MyBatis3:

ANNOTATEDMAPPER:基于注解的Mapper接口,不會有對應的XML映射文件

MIXEDMAPPER:XML和注解的混合形式,(上面這種情況中的)SqlProvider注解方法會被XML替代。

XMLMAPPER:所有的方法都在XML中,接口調(diào)用依賴XML文件。

MyBatis3Simple:

ANNOTATEDMAPPER:基于注解的Mapper接口,不會有對應的XML映射文件

XMLMAPPER:所有的方法都在XML中,接口調(diào)用依賴XML文件。

Ibatis2Java2或**Ibatis2Java5**:

IBATIS:生成的對象符合iBATIS的DAO框架(不建議使用)。

GENERIC-CI:生成的對象將只依賴于SqlMapClient,通過構(gòu)造方法注入。

GENERIC-SI:生成的對象將只依賴于SqlMapClient,通過setter方法注入。

SPRING:生成的對象符合Spring的DAO接口

targetPackage:生成實體類存放的包名,一般就是放在該包下。實際還會受到其他配置的影響(table中會提到)。

targetProject:指定目標項目路徑,使用的是文件系統(tǒng)的絕對路徑。

該元素還有一個可選屬性:

implementationPackage:如果指定了該屬性,實現(xiàn)類就會生成在這個包中。

該元素支持property子元素設置的屬性:

enableSubPackages

exampleMethodVisibility

methodNameCalculator

rootInterface

useLegacyBuilder

這幾個屬性不太常用,具體作用請看完整的文檔,這里對rootInterface做個簡單介紹。

rootInterface用于指定一個所有生成的接口都繼承的父接口。 這個值可以通過table配置的rootInterface屬性覆蓋。

這個屬性對于通用Mapper來說,可以讓生成的所有接口都繼承該接口。

mysql里面的ENUM函數(shù)

根據(jù)用戶定義的枚舉值與分片節(jié)點映射文件,直接定位目標分片。

用戶在rule.xml中配置枚舉值文件路徑和分片索引是字符串還是數(shù)字,DBLE在啟動時會將枚舉值文件加載到內(nèi)存中,形成一個映射表

在DBLE的運行過程中,用戶訪問使用這個算法的表時,WHERE子句中的分片索引值會被提取出來,直接查映射表得到分片編號

與MyCat的類似分片算法對比

中間件

DBLE

MyCat

分片算法種類 ? ?enum 分區(qū)算法 ? ?分片枚舉 ?

兩種中間件的枚舉分片算法使用上無差別。

開發(fā)注意點

【分片索引】1. 整型數(shù)字(可以為負數(shù))或字符串((不含=和換行符)

【分片索引】2. 枚舉值之間不能重復

Male=0Male=1

或者

123=1123=2

會導致分片策略加載出錯

【分片索引】3. 不同枚舉值可以映射到同一個分片上

Mr=0Mrs=1Miss=1Ms=1123=0

運維注意點

【擴容】1. 增加枚舉值無需數(shù)據(jù)再平衡

【擴容】2. 增加一個枚舉值的分片數(shù)量數(shù)時,需要對局部數(shù)據(jù)進行遷移

【縮容】1. 減少枚舉值需要數(shù)據(jù)再平衡

【縮容】2. 減少一個枚舉值的分片數(shù)量數(shù)時,需要對局部數(shù)據(jù)進行遷移

配置注意點

【配置項】1. 在 rule.xml 中,可配置項為?property name="defaultNode" 、property name="mapFile" 和 property name="type"

【配置項】2. 在 rule.xml 中配置?property name="defaultNode"?標簽,非必須配置項,不配置該項的話,用戶的分片索引值沒落在 mapFile 定義的范圍時,DBLE 會報錯;若需要配置,必須為非負整數(shù),用戶的分片索引值沒落在 mapFile 定義的范圍時,DBLE 會路由至這個值的 MySQL 分片

【配置項】3. 在 rule.xml 中配置 property name="mapFile"?標簽,范圍映射文件的路徑:若在映射文件在 DBLE_HOME/conf 或其中,則可以使用相對路徑的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 時,配置值就可以簡寫為 map/table_map.txt;映射文件在 DBLE_HOME/conf 目錄以外時,需要使用絕對路徑,但這種做法需要考慮用戶權(quán)限等問題,因此不建議把映射文件放在 DBLE_HOME/conf 外。

【配置項】4. 編輯 mapFile 所配置的文件

記錄格式為:枚舉值=分片編號

枚舉值可以是整型數(shù)字,或任意字符(除了=和換行符),分片編號必須是非負整型數(shù)字,記錄之間以換行分隔,一行僅能有一條記錄,枚舉值不能夠是“DEFAULT_NODE”這個字符串,允許以“//”和“#”在行首來注釋該行

【配置項】5. 在 rule.xml 中配置 property name="type"?標簽;type 必須為整型;取值為 0 時,mapFile 的枚舉值必須為整型;取值為非 0 時,mapFile 的枚舉值可以是任意字符(除了=和換行符)

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

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

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

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

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

下面對各種列類型進行詳細介紹。

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

數(shù)值型的列類型包括整型和浮點型兩大類。

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

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

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

INT:4字節(jié) 標準整數(shù),帶符號:-2147483648~2147483647,不帶符號:0~4294967295

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

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

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

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

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

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

M指出最大的顯示尺寸。最大的顯示尺寸長度為 255。D適用于浮點類型。指出跟隨在十進制小數(shù)點后的數(shù)字數(shù)量。最大可能值為 30,但不應大于M-2。

方括號 (“[”and“]”) 指定可選的類型修飾部份。

注意,如果為一個列指定了ZEROFILL,MySQL 將自動為這個列添加UNSIGNED屬性。

警告:你應該知道當在兩個整數(shù)類型值中使用減法時,如有一個為UNSIGNED類型,那么結(jié)果也是無符號的。查看章節(jié)6.3.5 Cast 函數(shù)。

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

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

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

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

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

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

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

你應該知道的有關BIGINT列的一些事情:

BIGINT或DOUBLE值來完成的,因此你不應該使用大于9223372036854775807(63 bits) 的無符號大整數(shù),除了位函數(shù)之外!如果你這樣做了,結(jié)果中的某些大數(shù)字可能會出錯,因為將BIGINT轉(zhuǎn)換成DOUBLE時產(chǎn)生了舍入錯誤。MySQL 4.0 在下列情況下可以處理BIGINT:

在一個BIGINT列中使用整數(shù)存儲一個大的無符號值。

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

當兩個操作數(shù)都是整數(shù)時使用操作符 (+、-、*、等)。

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

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

FLOAT(precision) [UNSIGNED] [ZEROFILL]一個浮點型數(shù)字。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

salary DECIMAL(5,2)

在這個例子中,5(精度(precision)) 代表重要的十進制數(shù)字的數(shù)目,2(數(shù)據(jù)范圍(scale)) 代表在小數(shù)點后的數(shù)字位數(shù)。在這種情況下,因此,salary列可以存儲的值范圍是從-99.99到99.99。(實際上 MySQL 在這個列中可以存儲的數(shù)值可以一直到999.99,因為它沒有存儲正數(shù)的符號)。

譯者注:

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

類型說明 取值范圍(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)等價于DECIMAL(p,0)。同樣的,在執(zhí)行被允許決定值p的地方,句法DECIMAL等價于DECIMAL(p,0)。MySQL 目前還不支持DECIMAL/NUMERIC數(shù)據(jù)類型的這些變體形式中的任一種。一般來說這并不是一個嚴重的問題,通過明確地控制精度和數(shù)值范圍可以得到這些類型的主要功能益處。

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

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

本文題目:mysql怎么獲取子元素 mysql獲取某字符
網(wǎng)頁網(wǎng)址:http://muchs.cn/article2/ddigjoc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計網(wǎng)站收錄、網(wǎng)站設計、虛擬主機、企業(yè)建站網(wǎng)站維護

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營