Error:有多个运算符"+="与这些操作数匹配


按照回答的方法的确可以解决问题,但VC提示的是有多个运算符能匹配,不是提示赋值错误,所以略有怀疑此说法。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
javascript的官方文档 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目列表。再从该列表中选择要查看的主题。在打开所选主题后,就可以方便地链接到相关章节。 请尽情浏览 JScript 语言参考的各个部分,你会发现 JScript 语言有多么丰富。 特性 描述 JScript 特性(非-ECMA) JScript 目前的 ECMA 特性列表。 JScript 的特性 (ECMA) JScript 目前的非-ECMA 特性列表。 Microsoft Scripting 运行时特性 JScript 目前的 scripting 运行时特性列表。 语言元素 描述 ! 运算符 对表达式进行逻辑非运算。 != 运算符 比较两个表达式的值是否相等。 !== 运算符 比较两个表达式的值,看其值是否相等或数据类型是否一致。 0...n 属性 返回单个参数的实际值,该参数来自由当前运行函数的参数属性返回的参数对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录。 % 运算符 两个表达式的值相除,返回余数。 %= 运算符 用变量的值除以表达式的值,余数赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 将两个表达式的值相乘。 *= 运算符 将变量与表达式的值相乘,结果赋给变量。 + 运算符 将两个数字表达式的值相加,或连接两个字符串。 ++ 运算符 变量值加 1。 += 运算符 将表达式的值加到变量中。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式中减去另一个表达式的值,或对单个表达式取反。 -- 运算符 变量值减 1。 -= 运算符 变量值减去表达式的值,结果赋给变量。 / 运算符 两个表达式的值相除。 /*..*/ (多行注释语句) 使 JScript 语法分析器忽略多行注释。 // (单行注释语句) 使 JScript 语法分析器忽略单行注释。 /= 运算符 变量值除以表达式的值,结果赋给变量。 < 运算符 比较一个表达式的值是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位数,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或数据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一个表达式。 >= 运算符 比较一个表达式的值是否大于等于另一个表达式。 >> 运算符 将表达式向左移位,符号位不变。 >>= 运算符 将变量的值右移由表达式指定的位数,符号位不变,结果赋给变量。 >>> 运算符 将表达式向左移位,包括符号位。 >>>= 运算符 将变量的值右移由表达式指定的位数,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 @cc_on 语句 激活条件编译支持。 @if 语句 根据表达式的值,有条件地执行一组语句。 @set 语句 创建用于条件编译语句的变量。 abs 方法 返回一个数的绝对值。 acos 方法 返回一个数的反余弦。 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 加法运算符 (+) 将两个数字表达式的值相加,或连接两个字符串。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函数的每个参数的数组。 Array 对象 提供对创建任何数据类型的数组的支持。 asin 方法 返回一个数的反正弦。 赋值运算符 (=) 将一个值赋给变量。 atan 方法 返回一个数的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个指示枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式执行按位异或操作。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 Boolean 对象 创建一个新的 Boolean 值。 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 callee 属性 返回正执行的函数对象,它是指定的函数对象的文本正文。 caller 属性 返回调用当前函数的函数引用。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 ceil 方法 返回大于或等于其数值参数的最小整数。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 逗号运算符 (,) 使两个表达式连续执行。 /*..*/ (多行注释语句) 使多行注释部分被 JScript 语法分析器忽略。 注释语句 - 单行(//) 使 JScript 语法分析器忽略单行注释。 比较运算符 返回一个显示比较结果的 Boolean 值。 compile 方法 将一个正则表达式编译为内部格式。 复合赋值运算符 复合赋值运算符列表。 concat 方法 (Array) 返回一个由两个数组合并组成的新数组。 concat 方法 (String) 返回一个包含给定的两个字符串连接的String 对象。 条件(三元)运算符 (?:) 根据条件执行两个表达式之一。 constructor 属性 指定创建对象的函数。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 cos 方法 返回一个数的余弦。 Date 对象 提供日期和时间的基本存储和检索。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 组件的解码版。 递减运算符(--) 将变量减一。 delete 运算符 删除对象的属性,或删除数组中的一个元素。 description 属性 返回或设置关于指定错误的描述字符串。 Dictionary 对象 存储数据键、项目对的对象。 dimensions 方法 返回 VBArray 的维数。 除法运算符 (/) 对两个表达式执行除法运算。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 E 属性 返回 Euler 常数,即自然对数的底。 encodeURI 方法 将文本字符串编码为合法的通用资源标识符 (URI)。 encodeURIComponent 方法 将文本字符串编码为合法的通用资源标识符 (URI)组件。 Enumerator 对象 提供集合中的项的枚举。 相等运算符(==) 比较两个表达式,看是否相等。 Error 对象 包含在运行 JScript 代码时发生错误信息的对象。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对数的底) 的幂。 FileSystemObject 对象 提供对计算机文件系统的访问。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其数值参数的最大整数。 fontcolor 方法 将 HTML 带 COLOR 属性的 <FONT> 标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的 <FONT> 标识添加到 String 对象中的文本两端。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句t 对应于对象或数组中的每个元素执行一个或多个语句。 fromCharCode 方法 返回 Unicode 字符值的字符串。 Function 对象 创建一个新的函数。 function 语句 声明一个新的函数。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 GetObject 函数 返回文件中的 Automation 对象的引用。 getSeconds 方法 使用当地时间返回 Date 对象的秒数。 getTime 方法 返回 Date 对象中的时间值。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几的值。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时数。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间 (UTC) 返回 Date 对象的秒数。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 Global 对象 是一个固有对象,目的是将全局方法集中在一个对象中。 global 属性 返回一个 Boolean 值,标记正则表达式使用的 global 标志状态 (g)。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符(>=) 比较两个表达式,看一个是否大于等于另一个。 hasOwnProperty 方法 返回一个 Boolean 值,标记对象是否带有指定名称的属性。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的数据类型。 if...else 语句 根据表达式的值,有条件地执行一组语句。 ignoreCase 属性 返回一个 Boolean 值,标记正则表达式使用的 ignoreCase 标志状态 (i)。 递增运算符(++) 给变量加一。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 isFinite 方法 返回一个 Boolean 值,表明某个给定的数是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN(不是一个数)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由数组中的所有元素连接在一起的 String 对象。 Labeled 语句 给语句提供一个标识符。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 lbound 方法 返回在 VBArray 中指定维数所用的最小索引值。 leftContext 属性 ($`) 返回由调用者传递给函数的实际参数个数。 length 属性 (Arguments) 返回由调用者传递给函数的实际参数个数。 length 属性 (Array) 返回比数组中所定义的最高元素大 1 的整数值 。 length 属性 (Function) 返回为函数所定义的参数个数。 length 属性 (String) 返回 String 对象的长度。 小于运算符 (<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 LN2 属性 返回 2 的自然对数。 LN10 属性 返回 10 的自然对数。 localeCompare 方法 返回值表明在当前区域设置下,两个字符串是否相等。 log 方法 返回某个数的自然对数。 LOG2E 属性 返回以 2 为底的 e(即 Euler 常数)的对数。 LOG10E 属性 返回以 10 为底的e(即 Euler 常数)的对数。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符(!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为数组返回。 Math 对象 一个固有对象,提供基本的数学函数和常数。 max 方法 返回给定的两个表达式中的较大者。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 min 方法 返回给定的两个数中的较小者。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 取模运算符 (%) 对两个表达式执行除法运算,返回余数。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 multiline 属性 返回 Boolean 值,表明正则表达式使用的 multiline 标志 (m)。 乘法运算符 (*) 对两个表达式执行减法操作。 name 属性 返回错误名称。 NaN 属性 (Global) 返回特殊值 NaN,表示某个表达式不是一个数。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个数。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (Number.MAX_VALUE)更小的值。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或数据类型不同。 Number 对象 表示数值数据类型和提供数值常数的对象。 number 属性 返回或设置与特定错误关联的数值。 Object 对象 提供所有的 JScript 对象的公共功能。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒数。 parseFloat 方法 返回从字符串转换而来的浮点数。 parseInt 方法 返回从字符串转换而来的整数。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 pop 方法 将数组中的最后一个元素删除,并返回其值。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的数 (-Number.MAX_VALUE)更大的值。 pow 方法 返回一个指定幂次的底表达式的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 push 方法 向数组中添加新的元素,返回新的数组长度。 random 方法 返回一个 0 和 1 之间的伪随机数。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 正则表达式语法 在写正则表达式模式时可以使用的特殊字符和序列的列表。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 return 语句 从当前函数退出并从该函数返回一个值。 reverse 方法 返回一个元素反序的 Array 对象。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 round 方法 将一个指定的数值表达式舍入到最近的整数值。 运行时错误 JScript运行时错误列表 ScriptEngine 函数 返回一个代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函数 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函数 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函数 返回所使用的脚本引擎的次版本号。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的数值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date对象的数值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除数组中的第一个元素并返回该值。 sin 方法 返回一个数的正弦。 slice 方法 (Array) 返回数组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 source 属性 返回正则表达式模式的文本的复制。 splice 方法 从数组中删除一个元素,必要时在该位置插入一个新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 sqrt 方法 返回一个数的平方根。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到 String 对象中的文本两端。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串并确定其位置。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 一元取相反数运算符(-) 从一个表达式的值中减去另一个表达式的值。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 Syntax 错误 JScript 语法错误列表。 tan 方法 返回一个数的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 数组。 toDateString 方法 以字符串形式返回日期值。 toExponential 方法 返回一个用指数形式表示的字符串。 toFixed 方法 返回一个字符串,表示一个用不动点记法表示的数字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的日期。 toLocaleDateString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的日期。 toLocaleLowercase 方法 返回字符串,其中的所有字符都被转换成小写(考虑主机环境的当前设置)。 toLocaleString 方法 返回一个转换为使用当地时间的日期。 toLocaleTimeString 方法 返回一个与主机环境的当前区域设置相适应的字符串形式的时间。 toLocaleUppercase 方法 返回字符串,其中的所有字符都被转换成大写(考虑主机环境的当前设置)。 toLowerCase 方法 返回一个字符串,该字符串中所有字母被转换为小写字母。 toString 方法 返回一个对象的字符串表示。 toPrecision 方法 返回一个字符串,该字符串包含用指定位数的指数或 fixed-point 形式表示的数字。 toTimeString 方法 返回以字符串形式表示的时间。 toUpperCase 方法 返回一个字符串,该字符串中所有字母都被转换为大写字母。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的日期。 try 语句 实现 JScript 的错误处理。 typeof 运算符 返回一个表示表达式的数据类型的字符串。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 一元取负运算符 (-) 表示一个数值表达式的相反数。 undefined 属性 返回 undefined 的初始值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个数组,在该数组头部插入了指定的元素。 无符号右移运算符 (>>>) 将表达式向右移位,包括符号位。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC)(或 GMT)与指定日期之间的毫秒数。 valueOf 方法 返回指定对象的原始值。 var 语句 声明一个变量。 VBArray 对象 提供对 Visual Basic 安全数组的访问。 void 运算符 避免一个表达式返回值。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 GetObject 函数 返回文件中的 Automation 对象的引用。 ScriptEngine 函数 返回代表所使用的脚本语言的字符串。 ScriptEngineBuildVersion 函数 返回所使用的脚本引擎的编译版本号。 ScriptEngineMajorVersion 函数 返回所使用的脚本引擎的主版本号。 ScriptEngineMinorVersion 函数 返回所使用的脚本引擎的次版本号。 语言元素 描述 abs 方法 返回一个数的绝对值。 acos 方法 返回一个数的反余弦。 anchor 方法 在对象的指定文本两端加上一个带 NAME 属性的 HTML 锚点。 apply 方法 应用对象的一个方法,用当前对象代替另一对象。 asin 方法 返回一个数的反正弦。 atan 方法 返回一个数的反正切。 atan2 方法 返回从 X 轴到点 (y, x)的角度(以弧度为单位)。 atEnd 方法 返回一个表明枚举算子是否处于集合结束处的 Boolean 值。 big 方法 在String 对象的文本两端加入 HTML 的<BIG>标识。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 call 方法 应用对象的一个方法,用当前对象代替另一对象。 ceil 方法 返回大于或等于其数值参数的最小整数。 charAt 方法 返回位于指定索引位置的字符。 charCodeAt 方法 返回指定字符的 Unicode 编码。 compile 方法 将一个正则表达式编译为内部格式。 concat 方法(Array) 返回一个由两个数组合并组成的新数组。 concat 方法(String) 返回一个包含给定的两个字符串的连接的 String 对象。 cos 方法 返回一个数的余弦。 decodeURI 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 decodeURIComponent 方法 返回一个已编码的通用资源标识符 (URI) 的解码版。 dimensions 方法 返回 VBArray 的维数。 escape 方法 对 String 对象编码,以便在所有计算机上都能阅读。 eval 方法 对 JScript 代码求值然后执行之。 exec 方法 在指定字符串中执行一个匹配查找。 exp 方法 返回 e (自然对数的底) 的幂。 fixed 方法 将 HTML 的<TT> 标识添加到String 对象中的文本两端。 floor 方法 返回小于或等于其数值参数的最大整数。 fontcolor 方法 将 HTML 带 COLOR 属性的<FONT>标识添加到 String 对象中的文本两端。 fontsize 方法 将 HTML 带 SIZE 属性的<FONT>标识添加到 String 对象中的文本两端。 fromCharCode 方法 返回 Unicode 字符值的字符串。 getDate 方法 使用当地时间返回 Date 对象的月份日期值。 getDay 方法 使用当地时间返回 Date 对象的星期几。 getFullYear 方法 使用当地时间返回 Date 对象的年份。 getHours 方法 使用当地时间返回 Date 对象的小时值。 getItem 方法 返回位于指定位置的项。 getMilliseconds 方法 使用当地时间返回 Date 对象的毫秒值。 getMinutes 方法 使用当地时间返回 Date 对象的分钟值。 getMonth 方法 使用当地时间返回 Date 对象的月份。 getSeconds 方法 使用当地时间返回 Date 对象的秒数。 getTime 方法 返回 Date 对象中的时间。 getTimezoneOffset 方法 返回主机的时间和全球标准时间(UTC)之间的差(以分钟为单位)。 getUTCDate 方法 使用全球标准时间(UTC)返回 Date 对象的日期值。 getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时数。 getUTCMilliseconds 方法 使用全球标准时间(UTC)返回Date 对象的毫秒数。 getUTCMinutes 方法 使用全球标准时间(UTC)返回 Date 对象的分钟数。 getUTCMonth 方法 使用全球标准时间(UTC)返回 Date 对象的月份值。 getUTCSeconds 方法 使用全球标准时间(UTC)返回Date对象的秒数。 getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 hasOwnProperty 方法 返回一个 Boolean 值,表明对象是否具有指定的名称。 indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 isFinite 方法 返回一个 Boolean 值,表明某个给定的数是否是有穷的。 isNaN 方法 返回一个 Boolean 值,表明某个值是否为保留值 NaN (不是一个数)。 isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在于另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由数组中的所有元素连接在一起的 String 对象。 lastIndexOf 方法 返回在 String 对象中子字符串最后出现的位置。 lbound 方法 返回在 VBArray 中指定维数所用的最小索引值。 link 方法 将带 HREF 属性的 HTML 锚点添加到 String 对象中的文本两端。 localeCompare 方法 返回一个值,表明两个字符串在当前区域设置下是否相等。 log 方法 返回某个数的自然对数。 match 方法 使用给定的正则表达式对象对字符串进行查找,并将结果作为数组返回。 max 方法 返回给定的两个表达式中的较大者。 min 方法 返回给定的两个数中的较小者。 moveFirst 方法 将集合中的当前项设置为第一项。 moveNext 方法 将当前项设置为集合中的下一项。 parse 方法 对包含日期的字符串进行分析,并返回该日期与1970年1月1日零点之间相差的毫秒数。 parseFloat 方法 返回从字符串转换而来的浮点数。 parseInt 方法 返回从字符串转换而来的整数。 pop 方法 删除数组中的最后一个元素并返回该值。 pow 方法 返回一个指定幂次的底表达式的值。 push 方法 向数组中添加新元素,返回数组的新长度。 random 方法 返回一个 0 和 1 之间的伪随机数。 replace 方法 返回根据正则表达式进行文字替换后的字符串的拷贝。 reverse 方法 返回一个元素反序的 Array 对象。 round 方法 将一个指定的数值表达式舍入到最近的整数并将其返回。 search 方法 返回与正则表达式查找内容匹配的第一个子字符串的位置。 setDate 方法 使用当地时间设置 Date 对象的数值日期。 setFullYear 方法 使用当地时间设置 Date 对象的年份。 setHours 方法 使用当地时间设置 Date 对象的小时值。 setMilliseconds 方法 使用当地时间设置 Date 对象的毫秒值。 setMinutes 方法 使用当地时间设置 Date 对象的分钟值。 setMonth 方法 使用当地时间设置 Date 对象的月份。 setSeconds 方法 使用当地时间设置 Date 对象的秒值。 setTime 方法 设置 Date 对象的日期和时间。 setUTCDate 方法 使用全球标准时间(UTC)设置 Date 对象的数值日期。 setUTCFullYear 方法 使用全球标准时间(UTC)设置 Date 对象的年份。 setUTCHours 方法 使用全球标准时间(UTC)设置 Date 对象的小时值。 setUTCMilliseconds 方法 使用全球标准时间(UTC)设置 Date 对象的毫秒值。 setUTCMinutes 方法 使用全球标准时间(UTC)设置 Date 对象的分钟值。 setUTCMonth 方法 使用全球标准时间(UTC)设置 Date 对象的月份。 setUTCSeconds 方法 使用全球标准时间(UTC)设置 Date 对象的秒值。 setYear 方法 使用 Date 对象的年份。 shift 方法 删除数组中的第一个元素并返回该值。 sin 方法 返回一个数的正弦。 slice 方法 (Array) 返回数组的一个片段。 slice 方法 (String) 返回字符串的一个片段。 small 方法 将 HTML 的<SMALL> 标识添加到 String 对象中的文本两端。 sort 方法 返回一个元素被排序了的 Array 对象。 splice 方法 从数组中删除元素,若必要,在相应位置处插入新元素,返回被删除的元素。 split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 sqrt 方法 返回一个数的平方根。 strike 方法 将 HTML 的<STRIKE> 标识添加到String 对象中的文本两端。 sub 方法 将 HTML 的 <SUB> 标识放置到 String 对象中的文本两端。 substr 方法 返回一个从指定位置开始并具有指定长度的子字符串。 substring 方法 返回位于 String 对象中指定位置的子字符串。 sup 方法 将 HTML 的 <SUP> 标识放置到 String 对象中的文本两端。 tan 方法 返回一个数的正切。 test 方法 返回一个 Boolean 值,表明在被查找的字符串中是否存在某个模式。 toArray 方法 返回一个从 VBArray 转换而来的标准 JScript 数组。 toDateString 方法 返回以字符串形式表示的日期。 toExponential 方法 返回一个字符串,该字符串包含一个以指数形式表示的数字。 toFixed 方法 返回一个字符串,表明一个用 fixed-point 形式表示的数字。 toGMTString 方法 返回一个转换为使用格林威治标准时间(GMT)的字符串的日期。 toLocaleDateString 方法 返回一个以字符串形式表示的日期,该日期与主机环境的当前区域设置相适应。 toLocaleLowercase 方法 返回一个字符串,其中所有的字母字符都被转换成小写(考虑主机环境的当前区域设置)。 toLocaleTimeString 方法 返回一个以字符串形式表示的时间,该时间与主机环境当前区域设置相适应。 toLocaleString 方法 返回一个转换为使用当地时间的字符串的日期。 toLocaleUppercase 方法 返回一个字符串,其中所有的字母字符都被转换成大写(考虑主机环境的当前区域设置)。 toLowerCase 方法 返回一个所有的字母字符都被转换为小写字母的字符串。 toPrecision 方法 返回一个字符串,该字符串包含用指定位数的指数或 fixed-point 形式表示的数字。 toString 方法 返回一个对象的字符串表示。 toTimeString 方法 返回一个以字符串形式表示的时间。 toUpperCase 方法 返回一个所有的字母字符都被转换为大写字母的字符串。 toUTCString 方法 返回一个转换为使用全球标准时间(UTC)的字符串的日期。 ubound 方法 返回在 VBArray 的指定维中所使用的最大索引值。 unescape 方法 对用escape 方法编码的 String 对象进行解码。 unshift 方法 返回一个数组,在该数组头部插入了指定的元素。 UTC 方法 返回 1970年1月1日零点的全球标准时间 (UTC) (或 GMT)与指定日期之间的毫秒数. valueOf 方法 返回指定对象的原始值。 语言元素 描述 ActiveXObject 对象 启用并返回一个 Automation 对象的引用。 Array 对象 提供对创建任何数据类型的数组的支持。 Boolean 对象 创建一个新的 Boolean 值。 Date 对象 提供日期和时间的基本存储和检索。 Dictionary 对象 存储数据键、项对的对象。 Enumerator 对象 提供集合中的项的枚举。 Error 对象 包含在运行 JScript 代码时发生的错误的有关信息。 FileSystemObject 对象 提供对计算机文件系统的访问。 Function 对象 创建一个新的函数。 Global 对象 是一个内部对象,目的是将全局方法集中在一个对象中。 Math 对象 一个内部对象,提供基本的数学函数和常数。 Number 对象 表示数值数据类型和提供数值常数的对象。 Object 对象 提供所有的 JScript 对象的公共功能。 RegExp 对象 存储有关正则表达式模式查找的信息。 正则表达式对象 包含一个正则表达式模式。 String 对象 提供对文本字符串的操作和格式处理,判定在字符串中是否存在某个子字符串及确定其位置。 VBArray 对象 提供对 Visual Basic 安全数组的访问。 语言元素 描述 ! 运算符 对表达式执行逻辑“非”运算。 != 运算符 比较两个表达式的值,看其是否相等。 !== 运算符 比较两个表达式的值,看其是否不相等或数据类型不一致。 % 运算符 对两个表达式执行除法运算,返回余数。 %= 运算符 对变量和表达式执行除法运算,余数赋给变量。 & 运算符 对两个表达式执行按位“与”运算。 &= 运算符 对变量和表达式执行按位“与”运算,结果赋给变量。 && 运算符 对两个表达式执行逻辑连接运算。 * 运算符 对两个表达式执行乘法运算。 *= 运算符 对变量和表达式执行乘法运算,结果赋给变量。 + 运算符 对两个数值表达式求和,或连接两个字符串。 ++ 运算符 变量值加一。 += 运算符 将变量和表达式的值相加,结果赋给变量。 , 运算符 使两个表达式按顺序执行。 - 运算符 从一个表达式的值减去另一个表达式的值或对一个表达式执行取负运算。 -- 运算符 变量值减一。 -= 运算符 从变量值中减表达式的值,结果赋给变量。 / 运算符 对两个表达式执行除法运算。 /= 运算符 对变量和表达式执行除法运算,结果赋给变量。 < 运算符 比较一个表达式是否小于另一个表达式。 << 运算符 将表达式向左移位。 <<= 运算符 将变量的值左移由表达式指定的位数,结果赋给变量。 <= 运算符 比较一个表达式的值是否小于等于另一个表达式的值。 = 运算符 为变量赋值。 == 运算符 比较两个表达式是否相等。 === 运算符 比较两个表达式,看其值是否相等或数据类型是否一致。 > 运算符 比较一个表达式的值是否大于另一表达式。 >= 运算符 比较一个表达式的值是否大于等于另一表达式。 >> 运算符 表达式向右移位,符号位不变。 >>= 运算符 将变量的值左移由表达式指定的位数,符号位不变,结果赋给变量。 >>> 运算符 表达式向右移位,包括符号位。 >>>= 运算符 将变量的值左移由表达式指定的位数,包括符号位,结果赋给变量。 ?: 运算符 根据条件执行其中一个语句。 ~ 运算符 对表达式执行按位“非”(取反)运算。 | 运算符 对两个表达式执行按位“或”运算。 |= 运算符 对变量和表达式的值执行按位“或”运算,结果赋给变量。 || 运算符 对两个表达式执行逻辑或运算。 ^ 运算符 对两个表达式执行按位异或运算。 ^= 运算符 对变量和表达式的值执行按位异或运算,结果赋给变量。 加法运算符 (+) 求两个数值表达式的和,或连接两个字符串。 赋值运算符 (=) 将一个值赋给变量。 按位与运算符 (&) 对两个表达式执行按位与操作。 按位左移运算符(<<) 将一个表达式的各位向左移。 按位取非运算符 (~) 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符 (^) 对两个表达式执行按位异或操作。 逗号运算符 (,) 使两个表达式连续执行。 比较运算符 返回 Boolean 值,表示比较结果。 复合赋值运算符 复合赋值运算符列表。 条件(三元)运算符(?:) 根据条件执行两个表达式之一。 递减运算符 (--) 将变量减一。 delete 运算符 删除对象的属性,或删除数组中的一个元素。. 除法运算符(/) 对两个表达式执行除法运算。 相等运算符(==) 比较两个表达式,看是否相等。 大于运算符(>) 比较两个表达式,看一个是否大于另一个。 大于相等运算符 (>=) 比较两个表达式,看一个是否大于等于另一个。 恒等运算符 (===) 比较两个表达式,看是否值相等并具有相同的数据类型。 递增运算符(++) 给变量加一。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 instanceof 运算符 返回一个 Boolean 值,表明某个对象是否为特定类的一个实例。 小于运算符(<) 比较两个表达式,看是否一个小于另一个。 小于相等运算符 (<=) 比较两个表达式,看是否一个小于等于另一个。 逻辑与运算符 (&&) 对两个表达式执行逻辑与操作。 逻辑非运算符 (!) 对表达式执行逻辑非操作。 逻辑或运算符 (||) 对两个表达式执行逻辑或操作。 取模运算符。 (%) 对两个表达式执行除法运算,返回余数。 乘法运算符 (*) 对两个表达式执行减法操作。 new 运算符 创建一个新对象。 不恒等运算符 (!==) 比较两个表达式,看是否具有不相等的值或数据类型不同。 运算符优先级 包含 JScript 运算符的执行优先级信息的列表。 减法运算符 (-) 求两个表达式值的差。 typeof 运算符 返回一个表示表达式的数据类型的字符串。 一元取相反数运算符(-) 表示一个数值表达式的相反数。 无符号右移运算符 (>>>) 表达式向右移位,包括符号位。 void 运算符 避免一个表达式返回值。 语言元素 描述 0...n 属性 返回单个参数的实际值,该参数来自由当前运行函数的参数属性返回的参数对象。 $1...$9 属性 返回在模式匹配中找到的最近的九条记录 arguments 属性 返回一个包含传递给当前执行函数的每个参数的数组。 caller 属性 返回调用当前函数的函数引用。 callee 属性 返回正执行的函数对象,它是指定的函数对象的文本正文。 constructor 属性 指定创建对象的函数。 description 属性 返回或设置关于指定错误的描述字符串。 E 属性 返回 Euler 常数,即自然对数的底。 global 属性 返回一个 Boolean 值,表明正则表达式使用的 global 标志 (g) 状态。 ignoreCase 属性 返回一个 Boolean 值,表明正则表达式使用的 ignoreCase 标志 (i) 状态。 index 属性 返回在字符串中找到的第一个成功匹配的字符位置。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的字符串。 lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastMatch 属性 ($) 返回任意正则表达式搜索中最后匹配的字符。 lastParen 属性 ($+) 从任意一个正则表达式搜索中返回最后的由括号括起的子匹配(若存在的话)。 leftContext 属性 ($`) 返回由调用者传递给函数的实际参数个数。 length 属性 (Arguments) 返回由调用者传递给函数的实际参数个数。 length 属性 (Array) 返回比数组中所定义的最高元素大 1 的一个整数。 length 属性 (Function) 返回为函数所定义的参数个数。 length 属性 (String) 返回 String 对象的长度。 LN2 属性 返回 2 的自然对数。 LN10 属性 返回 10 的自然对数。 LOG2E 属性 返回以 2 为底的 e(即 Euler常数)的对数。 LOG10E 属性 返回以 10 为底的e(即 Euler常数)的对数。 MAX_VALUE 属性 返回在 JScript中能表示的最大值。 message 属性 返回错误消息串。 MIN_VALUE 属性 返回在 JScript中能表示的最接近零的值。 multiline 属性 返回一个 Boolean 值,表明正则表达式使用的 multiline 标志 (m) 状态。 name 属性 返回错误名称。 NaN 属性(Global) 返回特殊值 NaN,表示某个表达式不是一个数。 NaN 属性 (Number) 返回特殊值 (NaN),表示某个表达式不是一个数。 NEGATIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的负数 (-Number.MAX_VALUE)更负的值。 number 属性 返回或设置与特定错误关联的数值。 PI 属性 返回圆周与其直径的比值,约等于3.141592653589793。 POSITIVE_INFINITY 属性 返回比在 JScript 中能表示的最大的数 (Number.MAX_VALUE)更大的值。 propertyIsEnumerable 属性 返回一个 Boolean 值,表明指定的属性是否是对象的一部分或是否是可枚举的。 prototype 属性 返回对象类的原型引用。 source 属性 返回正则表达式模式的文本的拷贝。 rightContext 属性 ($') 返回被搜索字符串从最后匹配位置到结束之间的字符。 SQRT1_2 属性 返回 0.5 的平方根,即 1 除以 2 的平方根。 SQRT2 属性 返回 2 的平方根。 undefined 属性 返回 undefined 的初始值。 语言元素 描述 break 语句 终止当前循环,或者如果与一个label 语句关联,则终止相关联的语句。 catch 语句 包含在 try 语句块中的代码发生错误时执行的语句。 @cc_on 语句 激活条件编译支持。 //(单行注释语句) 使单行注释被 JScript 语法分析器忽略。 /*..*/(多行注释语句) 使多行注释被 JScript 语法分析器忽略。 continue 语句 停止循环的当前迭代,并开始一次新的迭代。 do...while 语句 先执行一次语句块,然后重复执行该循环,直至条件表达式的值为 false。 for 语句 只要指定的条件为 true,就一直执行语句块。 for...in 语句 对应于对象或数组中的每个元素执行一个或多个语句。 function 语句 声明一个新的函数。 @if 语句 根据表达式的值,有条件地执行一组语句。 if...else 语句 根据表达式的值,有条件地执行一组语句。 Labeled 语句 给语句提供一个标识符。 return 语句 从当前函数退出并从该函数返回一个值。 @set 语句 创建用于条件编译语句的变量。 switch 语句 当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 this 语句 对当前对象的引用。 throw 语句 产生一个可由 try...catch 语句处理的错误条件。 try 语句 实现 JScript 的错误处理。 var 语句 声明一个变量。 while 语句 执行语句直至给定的条件为 false。 with 语句 确定一个语句的默认对象。 语言元素 描述 运行时错误 JScript运行时错误列表 语法错误 JScript语法错误列表
Ø 常用查询 MySQL结束符是“;”结束。 1、 显示所有数据库 show databases; 2、 删除数据库 drop database dbName; 3、 创建数据库 create database [if not exists] dbName; 中括号部分可选的,判断该数据不存在就创建 4、 切换、使用指定数据库 use dbName; 5、 显示当前使用数据库所有的表对象 show tables; 6、 显示表结构describe(desc) desc tableName; 7、 创建一张表 create table user ( --int 整型 uId int, --小数 uPrice decimal, --普通长度文本,default设置默认值 uName varchar(255) default ‘zhangsan’, --超长文本 uRemark text, --图片 uPhoto blob, --日期 uBirthday datetime ); 8、 子查询建表方法 部分列名匹配模式: create table userInfo ( name varchar(20), sex char ) as select name, sex from user; 上面的列名和子查询的列名以及类型要对应 全部列名模式: create table userInfo as select * from user; 直接将整个表的类型和数据备份到新表userInfo中 9、 添加表字段 添加单列 alter table user add tel varchar(11) default ‘02012345678’; 添加多列 alter table user add ( photo blob, birthday date ); 上面就同时增加了多列字段 10、 修改表字段 修改tel列 alter table user modify tel varchar(15) default ‘02087654321’; 修改tel列的位置,在第一列显示 alter table user modify tel varchar(15) default '02087654321' first; 修改tel列的位置,在指定列之后显示 alter table user modify tel varchar(15) default '02087654321' after age; 注意:alter modify不支持一次修改多个列,但是Oracle支持多列修改 但是MySQL可以通过多个modify的方式完成: alter table user modify tel varchar(15) default '02087654321' first, modify name varchar(20) after tel; 11、 删除指定字段 alter table user drop photo; 12、 重命名表数据 表重命名 alter table user rename to users; 字段重命名 alter table users change name u_name varchar(10); alter table users change sex u_sex varchar(10) after u_name; 如果需要改变列名建议使用change,如果需要改变数据类型和显示位置可以使用modify 13、 删除表 drop table users; drop删除表会删除表结构,表对象将不存在数据中;数据也不会存在;表内的对象也不存在,如:索引、视图、约束; truncate删除表 truncate都被当成DDL出来,truncate的作用就是删除该表里的全部数据,保留表结构。相当于DDL中的delete语句, 但是truncate比delete语句的速度要快得多。但是truncate不能带条件删除指定数据,只会删除所有的数据。如果删除的表有外键, 删除的速度类似于delete。但新版本的MySQL中truncate的速度比delete速度快。 Ø 约束 MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 常用五类约束: not null:非空约束,指定某列不为空 unique: 唯一约束,指定某列和几列组合的数据不能重复 primary key:主键约束,指定某列的数据不能重复、唯一 foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据 check:检查,指定一个表达式,用于检验指定数据 MySQL不支持check约束,但可以使用check约束,而没有任何效果; 根据约束数据列限制,约束可分为: 单列约束:每个约束只约束一列 多列约束:每个约束约束多列数据 MySQL中约束保存在information_schema数据库的table_constraints中,可以通过该表查询约束信息; 1、 not null约束 非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。 Null类型特征: 所有的类型的值都可以是null,包括int、float等数据类型 空字符串“”是不等于null,0也不等于null create table temp( id int not null, name varchar(255) not null default ‘abc’, sex char null ) 上面的table加上了非空约束,也可以用alter来修改或增加非空约束 增加非空约束 alter table temp modify sex varchar(2) not null; 取消非空约束 alter table temp modify sex varchar(2) null; 取消非空约束,增加默认值 alter table temp modify sex varchar(2) default ‘abc’ null; 2、 unique 唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null 同一个表可以有多个唯一约束,多个列组合的约束。在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同。 唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。 MySQL会给唯一约束的列上默认创建一个唯一索引; create table temp ( id int not null, name varchar(25), password varchar(16), --使用表级约束语法, constraint uk_name_pwd unique(name, password) ); 表示用户名和密码组合不能重复 添加唯一约束 alter table temp add unique(name, password); alter table temp modify name varchar(25) unique; 删除约束 alter table temp drop index name; 3、 primary key 主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束, 那么这些列都不允许为空值,并且组合的值不允许重复。 每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。MySQL的主键名总是PRIMARY, 当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。 列模式: create table temp( /*主键约束*/ id int primary key, name varchar(25) ); create table temp2( id int not null, name varchar(25), pwd varchar(15), constraint pk_temp_id primary key(id) ); 组合模式: create table temp2( id int not null, name varchar(25), pwd varchar(15), constraint pk_temp_id primary key(name, pwd) ); alter删除主键约束 alter table temp drop primary key; alter添加主键 alter table temp add primary key(name, pwd); alter修改列为主键 alter table temp modify id int primary key; 设置主键自增 create table temp( id int auto_increment primary key, name varchar(20), pwd varchar(16) ); auto_increment自增模式,设置自增后在插入数据的时候就不需要给该列插入值了。 4、 foreign key 约束 外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。还有一种就是级联删除子表数据。 注意:外键约束的参照列,在主表中引用的只能是主键或唯一键约束的列,假定引用的主表列不是唯一的记录, 那么从表引用的数据就不确定记录的位置。同一个表可以有多个外键约束。 创建外键约束: 主表 create table classes( id int auto_increment primary key, name varchar(20) ); 从表 create table student( id int auto_increment, name varchar(22), constraint pk_id primary key(id), classes_id int references classes(id) ); 通常先建主表,然后再建从表,这样从表的参照引用的表才存在。 表级别创建外键约束: create table student( id int auto_increment primary key, name varchar(25), classes_id int, foreign key(classes_id) references classes(id) ); 上面的创建外键的方法没有指定约束名称,系统会默认给外键约束分配外键约束名称,命名为student_ibfk_n, 其中student是表名,n是当前约束从1开始的整数。 指定约束名称: create table student( id int auto_increment primary key, name varchar(25), classes_id int, /*指定约束名称*/ constraint fk_classes_id foreign key(classes_id) references classes(id) ); 多列外键组合,必须用表级别约束语法: create table classes( id int, name varchar(20), number int, primary key(name, number) ); create table student( id int auto_increment primary key, name varchar(20), classes_name varchar(20), classes_number int, /*表级别联合外键*/ foreign key(classes_name, classes_number) references classes(name, number) ); 删除外键约束: alter table student drop foreign key student_ibfk_1; alter table student drop foreign key fk_student_id; 增加外键约束 alter table student add foreign key(classes_name, classes_number) referencesclasses(name, number); 自引用、自关联(递归表、树状表) create table tree( id int auto_increment primary key, name varchar(50), parent_id int, foreign key(parent_id) references tree(id) ); 级联删除:删除主表的数据时,关联的从表数据也删除,则需要在建立外键约束的后面增加on deletecascade 或on delete set null,前者是级联删除,后者是将从表的关联列的值设置为null。 create table student( id int auto_increment primary key, name varchar(20), classes_name varchar(20), classes_number int, /*表级别联合外键*/ foreign key(classes_name, classes_number) references classes(name, number) on deletecascade ); 5、 check约束 MySQL可以使用check约束,但check约束对数据验证没有任何作用。 create table temp( id int auto_increment, name varchar(20), age int, primary key(id), /*check约束*/ check(age > 20) ); 上面check约束要求age必须大于0,但没有任何作用。但是创建table的时候没有任何错误或警告。 Ø 索引 索引是存放在模式(schema)中的一个数据库对象,索引的作用就是提高对表的检索查询速度, 索引是通过快速访问的方法来进行快速定位数据,从而减少了对磁盘的读写操作。 索引是数据库的一个对象,它不能独立存在,必须对某个表对象进行依赖。 提示:索引保存在information_schema数据库里的STATISTICS表中。 创建索引方式: 自动:当表上定义主键约束、唯一、外键约束时,该表会被系统自动添加上索引。 手动:手动在相关表或列上增加索引,提高查询速度。 删除索引方式: 自动:当表对象被删除时,该表上的索引自动被删除 手动:手动删除指定表对象的相关列上的索引 索引类似于书籍的目录,可以快速定位到相关的数据,一个表可以有多个索引。 创建索引: create index idx_temp_name on temp(name); 组合索引: create index idx_temp_name$pwd on temp(name, pwd); 删除索引: drop index idx_temp_name on temp; Ø 视图 视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据。 视图的作用、优点: 限制对数据的访问 让复杂查询变得简单 提供数据的独立性 可以完成对相同数据的不同显示 创建、修改视图 create or replace view view_temp as select name, age from temp; 通常我们并不对视图的数据做修改操作,因为视图是一张虚拟的表,它并不存储实际数据。如果想让视图不被修改,可以用with check option来完成限制。 create or replace view view_temp as select * from temp with check option; 修改视图: alter view view_temp as select id, name from temp; 删除视图: drop view view_temp; 显示创建语法: show create view v_temp; Ø DML语句 DML主要针对数据库表对象的数据而言的,一般DML完成: 插入新数据 修改已添加的数据 删除不需要的数据 1、 insert into 插入语句 insert into temp values(null, ‘jack’, 25); 主键自增可以不插入,所以用null代替 指定列 insert into temp(name, age) values(‘jack’, 22); 在表面后面带括号,括号中写列名,values中写指定列名的值即可。当省略列名就表示插入全部数据, 注意插入值的顺序和列的顺序需要保持一致。 Set方式插入,也可以指定列 insert into temp set id = 7, name = 'jason'; MySQL中外键的table的外键引用列可以插入数据可以为null,不参照主表的数据。 使用子查询插入数据 insert into temp(name) select name from classes; 多行插入 insert into temp values(null, ‘jack’, 22), (null, ‘jackson’ 23); 2、 update 修改语句 update主要完成对数据的修改操作,可以修改一条或多条数据。修改多条或指定条件的数据,需要用where条件来完成。 修改所有数据 update temp set name = ‘jack2’; 所有的数据的name会被修改,如果修改多列用“,”分开 update temp set name = ‘jack’, age = 22; 修改指定条件的记录需要用where update temp set name = ‘jack’ where age > 22; 3、 delete 删除语句 删除table中的数据,可以删除所有,带条件可以删除指定的记录。 删除所有数据 delete from temp; 删除指定条件数据 delete from temp where age > 20; Ø select 查询、function 函数 select查询语句用得最广泛、功能也最丰富。可以完成单条记录、多条记录、单表、多表、子查询等。 1、 查询某张表所有数据 select * from temp; *代表所有列,temp代表表名,不带条件就查询所有数据 2、 查询指定列和条件的数据 select name, age from temp where age = 22; 查询name和age这两列,age 等于22的数据。 3、 对查询的数据进行运算操作 select age + 2, age / 2, age – 2, age * 2 from temp where age – 2 > 22; 4、 concat函数,字符串连接 select concat(name, ‘-eco’) from temp; concat和null进行连接,会导致连接后的数据成为null 5、 as 对列重命名 select name as ‘名称’ from temp; as也可以省略不写,效果一样 如果重命名的列名出现特殊字符,如“‘”单引号,那就需要用双引号引在外面 select name as “名’称” from temp; 6、 也可以给table去别名 select t.name Name from temp as t; 7、 查询常量 类似于SQL Server select 5 + 2; select concat('a', 'bbb'); 8、 distinct 去掉重复数据 select distinct id from temp; 多列将是组合的重复数据 select distinct id, age from temp; 9、 where 条件查询 大于>、大于等于>=、小于<、小于等于<=、等于=、不等于<> 都可以出现在where语句中 select * from t where a > 2 or a >= 3 or a < 5 or a <= 6 or a = 7 or a <> 0; 10、 and 并且 select * from temp where age > 20 and name = ‘jack’; 查询名称等于jack并且年龄大于20的 11、 or 或者 满足一个即可 select * from tmep where name = ‘jack’ or name = ‘jackson’; 12、 between v and v2 大于等于v且小于等于v2 select * form temp where age between 20 and 25; 13、 in 查询 可以多个条件 类似于or select * from temp where id in (1, 2, 3); 查询id在括号中出现的数据 14、 like 模糊查询 查询name以j开头的 select * from temp where name like ‘j%’; 查询name包含k的 select * from temp where name like ‘%k%’; escape转义 select * from temp where name like ‘/_%’ escape ‘/’; 指定/为转义字符,上面的就可以查询name中包含“_”的数据 15、 is null、is not null 查询为null的数据 select * from temp where name is null; 查询不为null的数据 select * from temp where name is not null; 16、 not select * from temp where not (age > 20); 取小于等于20的数据 select * from temp where id not in(1, 2); 17、 order by 排序,有desc、asc升序、降序 select * from temp order by id; 默认desc排序 select * from temp order by id asc; 多列组合 select * from temp order by id, age; Ø function 函数 函数的作用比较大,一般多用在select查询语句和where条件语句之后。按照函数返回的结果, 可以分为:多行函数和单行函数;所谓的单行函数就是将每条数据进行独立的计算,然后每条数据得到一条结果。 如:字符串函数;而多行函数,就是多条记录同时计算,得到最终只有一条结果记录。如:sum、avg等 多行函数也称为聚集函数、分组函数,主要用于完成一些统计功能。MySQL的单行函数有如下特征: 单行函数的参数可以是变量、常量或数据列。单行函数可以接受多个参数,但返回一个值。 单行函数就是它会对每一行单独起作用,每一行(可能包含多个参数)返回一个结果。 单行函数可以改变参数的数据类型。单行函数支持嵌套使用:内层函数的返回值是外层函数的参数。 单行函数可以分为: 类型转换函数; 位函数; 流程控制语句; 加密解密函数; 信息函数 单行函数 1、 char_length字符长度 select char_length(tel) from user; 2、 sin函数 select sin(age) from user; select sin(1.57); 3、 添加日期函数 select date_add('2010-06-21', interval 2 month); interval是一个关键字,2 month是2个月的意思,2是数值,month是单位 select addDate('2011-05-28', 2); 在前面的日期上加上后面的天数 4、 获取当前系统时间、日期 select curdate(); select curtime(); 5、 加密函数 select md5('zhangsan'); 6、 Null 处理函数 select ifnull(birthday, 'is null birthday') from user; 如果birthday为null,就返回后面的字符串 select nullif(age, 245) from user; 如果age等于245就返回null,不等就返回age select isnull(birthday) from user; 判断birthday是否为null select if(isnull(birthday), 'birthday is null', 'birthday not is null') from user; 如果birthday为null或是0就返回birthday is null,否则就返回birthday not is null;类似于三目运算符 7、 case 流程函数 case函数是一个流程控制函数,可以接受多个参数,但最终只会返回一个结果。 select name, age, (case sex when 1 then '男' when 0 then '女' else '火星人' end ) sex from user; 组函数 组函数就是多行函数,组函数是完成一行或多行结果集的运算,最后返回一个结果,而不是每条记录返回一个结果。 1、 avg平均值运算 select avg(age) from user; select avg(distinct age) from user; 2、 count 记录条数统计 select count(*), count(age), count(distinct age) from user; 3、 max 最大值 select max(age), max(distinct age) from user; 4、 min 最小值 select min(age), min(distinct age) from user; 5、 sum 求和、聚和 select sum(age), sum(distinct age) from user; select sum(ifnull(age, 0)) from user; 6、 group by 分组 select count(*), sex from user group by sex; select count(*) from user group by age; select * from user group by sex, age; 7、 having进行条件过滤 不能在where子句中过滤组,where子句仅用于过滤行。过滤group by需要having 不能在where子句中用组函数,having中才能用组函数 select count(*) from user group by sex having sex <> 2; Ø 多表查询和子查询 数据库的查询功能最为丰富,很多时候需要用到查询完成一些事物,而且不是单纯的对一个表进行操作。而是对多个表进行联合查询, MySQL中多表连接查询有两种规范,较早的SQL92规范支持,如下几种表连接查询: 等值连接 非等值连接 外连接 广义笛卡尔积 SQL99规则提供了可读性更好的多表连接语法,并提供了更多类型的连接查询,SQL99支持如下几种多表连接查询: 交叉连接 自然连接 使用using子句的连接 使用on子句连接 全部连接或者左右外连接 SQL92的连接查询 SQL92的连接查询语法比较简单,多将多个table放置在from关键字之后,多个table用“,”隔开; 连接的条件放在where条件之后,与查询条件直接用and逻辑运算符进行连接。如果条件中使用的是相等, 则称为等值连接,相反则称为非等值,如果没有任何条件则称为广义笛卡尔积。 广义笛卡尔积:select s.*, c.* from student s, classes c; 等值:select s.*, c.* from student s, classes c where s.cid = c.id; 非等值:select s.*, c.* from student s, classes c where s.cid <> c.id; select s.*, c.name classes from classes c, student s where c.id = s.classes_id ands.name is not null; SQL99连接查询 1、交叉连接cross join,类似于SQL92的笛卡尔积查询,无需条件。如: select s.*, c.name from student s cross join classes c; 2、自然连接 natural join查询,无需条件,默认条件是将2个table中的相同字段作为连接条件,如果没有相同字段,查询的结果就是空。 select s.*, c.name from student s natural join classes c; 3、using子句连接查询:using的子句可以是一列或多列,显示的指定两个表中同名列作为连接条件。 如果用natural join的连接查询,会把所有的相同字段作为连接查询。而using可以指定相同列及个数。 select s.*, c.name from student s join classes c using(id); 4、 join … on连接查询,查询条件在on中完成,每个on语句只能指定一个条件。 select s.*, c.name from student s join classes c on s.classes_id = c.id; 5、 左右外连接:3种外连接,left [outer] join、right [outer] join,连接条件都是通过用on子句来指定,条件可以等值、非等值。 select s.*, c.name from student s left join classes c on s.classes_id = c.id; select s.*, c.name from student s right join classes c on s.classes_id = c.id; 子查询 子查询就是指在查询语句中嵌套另一个查询,子查询可以支持多层嵌套。子查询可以出现在2个位置: from关键字之后,被当做一个表来进行查询,这种用法被称为行内视图,因为该子查询的实质就是一个临时视图 出现在where条件之后作为过滤条件的值 子查询注意点: 子查询用括号括起来,特别情况下需要起一个临时名称 子查询当做临时表时(在from之后的子查询),可以为该子查询起别名,尤其是要作为前缀来限定数据列名时 子查询用作过滤条件时,将子查询放在比较运算符的右边,提供可读性 子查询作为过滤条件时,单行子查询使用单行运算符,多行子查询用多行运算符 将from后面的子查询当做一个table来用: select * from (select id, name from classes) s where s.id in (1, 2); 当做条件来用: select * from student s where s.classes_id in (select id from classes); select * from student s where s.classes_id = any (select id from classes); select * from student s where s.classes_id > any (select id from classes); Ø 操作符和函数 1、 boolean只判断 select 1 is true, 0 is false, null is unknown; select 1 is not unknown, 0 is not unknown, null is not unknown; 2、 coalesce函数,返回第一个非null的值 select coalesce(null, 1); select coalesce(1, 1); select coalesce(null, 1); select coalesce(null, null); 3、 当有2个或多个参数时,返回最大的那个参数值 select greatest(2, 3); select greatest(2, 3, 1, 9, 55, 23); select greatest('D', 'A', 'B'); 4、 Least函数,返回最小值,如果有null就返回null值 select least(2, 0); select least(2, 0, null); select least(2, 10, 22.2, 35.1, 1.1); 5、 控制流函数 select case 1 when 1 then 'is 1' when 2 then 'is 2' else 'none' end; select case when 1 > 2 then 'yes' else 'no' end; 6、 ascii字符串函数 select ascii('A'); select ascii('1'); 7、 二进制函数 select bin(22); 8、 返回二进制字符串长度 select bit_length(11); 9、 char将值转换成字符,小数取整四舍五入 select char(65); select char(65.4); select char(65.5); select char(65.6); select char(65, 66, 67.4, 68.5, 69.6, '55.5', '97.3'); 10、 using改变字符集 select charset(char(0*65)), charset(char(0*65 using utf8)); 11、 得到字符长度char_length,character_length select char_length('abc'); select character_length('eft'); 12、 compress压缩字符串、uncompress解压缩 select compress('abcedf'); select uncompress(compress('abcedf')); 13、 concat_ws分隔字符串 select concat_ws('#', 'first', 'second', 'last'); select concat_ws('#', 'first', 'second', null, 'last'); Ø 事务处理 动作 开始事务:start transaction 提交事务:commit 回滚事务:rollback 设置自动提交:set autocommit 1 | 0 atuoCommit系统默认是1立即提交模式;如果要手动控制事务,需要设置set autoCommit 0; 这样我们就可以用commit、rollback来控制事务了。 在一段语句块中禁用autocommit 而不是set autocommit start transaction; select @result := avg(age) from temp; update temp set age = @result where id = 2; select * from temp where id = 2;//值被改变 rollback;//回滚 select * from temp where id = 2;//变回来了 在此期间只有遇到commit、rollback,start Transaction的禁用autocommit才会结束。然后就恢复到原来的autocommit模式; 不能回滚的语句 有些语句不能被回滚。通常,这些语句包括数据定义语言(DDL)语句,比如创建或取消数据库的语句, 和创建、取消或更改表或存储的子程序的语句。 您在设计事务时,不应包含这类语句。如果您在事务的前部中发布了一个不能被回滚的语句, 则后部的其它语句会发生错误,在这些情况下,通过发布ROLLBACK语句不能 回滚事务的全部效果。 一些操作也会隐式的提交事务 如alter、create、drop、rename table、lock table、set autocommit、starttransaction、truncate table 等等, 在事务中出现这些语句也会提交事务的 事务不能嵌套事务 事务的保存点 Savepoint pointName/Rollback to savepoint pointName 一个事务可以设置多个保存点,rollback可以回滚到指定的保存点,恢复保存点后面的操作。 如果有后面的保存点和前面的同名,则删除前面的保存点。 Release savepoint会删除一个保存点,如果在一段事务中执行commit或rollback,则事务结束,所以保存点删除。 Set Transaction设计数据库隔离级别 SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE } 本语句用于设置事务隔离等级,用于下一个事务,或者用于当前会话。 在默认情况下,SET TRANSACTION会为下一个事务(还未开始)设置隔离等级。 如果您使用GLOBAL关键词,则语句会设置全局性的默认事务等级, 用于从该点以后创建的所有新连接。原有的连接不受影响。使用SESSION关键测可以设置默认事务等级, 用于对当前连接执行的所有将来事务。 默认的等级是REPEATABLE READ全局隔离等级。 Ø 注释 select 1+1; # 单行注释 select 1+1; -- 单行注释 select 1 /* 多行注释 */ + 1; Ø 基本数据类型操作 字符串 select 'hello', '"hello"', '""hello""', 'hel''lo', '/'hello'; select "hello", "'hello'", "''hello''", "hel""lo", "/"hello"; /n换行 select 'This/nIs/nFour/nLines'; /转义 select 'hello / world!'; select 'hello /world!'; select 'hello // world!'; select 'hello /' world!'; Ø 设置数据库mode模式 SET sql_mode='ANSI_QUOTES'; create table t(a int); create table "tt"(a int); create table "t""t"(a int); craate talbe tab("a""b" int); Ø 用户变量 set @num1 = 0, @num2 = 2, @result = 0; select @result := (@num1 := 5) + @num2 := 3, @num1, @num2, @result; Ø 存储过程 创建存储过程: delimiter // create procedure get(out result int) begin select max(age) into result from temp; end// 调用存储过程: call get(@temp); 查询结果: select @temp; 删除存储过程: drop procedure get; 查看存储过程创建语句: show create procedure get; select…into 可以完成单行记录的赋值: create procedure getRecord(sid int) begin declare v_name varchar(20) default 'jason'; declare v_age int; declare v_sex bit; select name, age, sex into v_name, v_age, v_sex from temp where id = sid; select v_name, v_age, v_sex; end; call getRecord(1); Ø 函数 函数类似于存储过程,只是调用方式不同 例如:select max(age) from temp; 创建函数: create function addAge(age int) returns int return age + 5; 使用函数: select addAge(age) from temp; 删除函数: drop function if exists addAge; drop function addAge; 显示创建语法: show create function addAge; Ø 游标 声明游标:declare cur_Name cursor for select name from temp; 打开游标:open cur_Name; Fetch游标:fetch cur_Name into @temp; 关闭游标:close cur_Name; 示例: CREATE PROCEDURE cur_show() BEGIN DECLARE done INT DEFAULT 0; DECLARE v_id, v_age INT; DECLARE v_name varchar(20); DECLARE cur_temp CURSOR FOR SELECT id, name, age FROM temp; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; OPEN cur_temp; REPEAT FETCH cur_temp INTO v_id, v_name, v_age; IF NOT done THEN IF isnull(v_name) THEN update temp set name = concat('test-json', v_id) where id = v_id; ELSEIF isnull(v_age) THEN update temp set age = 22 where id = v_id; END IF; END IF; UNTIL done END REPEAT; CLOSE cur_temp; END Ø 触发器 触发器分为insert、update、delete三种触发器事件类型 还有after、before触发时间 创建触发器: create trigger trg_temp_ins before insert on temp for each row begin insert into temp_log values(NEW.id, NEW.name); end// 删除触发器: drop trigger trg_temp_ins
CSet 类的实现如下: ```cpp #include <iostream> #include <algorithm> #include <vector> class CSet { public: // 构造函数 CSet() {} // 析构函数 ~CSet() {} // 拷贝构造函数 CSet(const CSet& other) { data_ = other.data_; } // 获取元素个数 int GetLength() const { return data_.size(); } // 赋值运算符 CSet& operator=(const CSet& other) { if (this != &other) { data_ = other.data_; } return *this; } // 操作指定元素运算符 int& operator[](int index) { return data_[index]; } // 取某个整数区间返回新集合运算符 CSet operator()(int start, int end) const { CSet result; for (int i = start; i <= end; ++i) { if (std::find(data_.begin(), data_.end(), i) != data_.end()) { result.data_.push_back(i); } } return result; } // 把一个元素加到集合末尾并返回新集合运算符 CSet operator+(int value) const { CSet result(*this); if (std::find(result.data_.begin(), result.data_.end(), value) == result.data_.end()) { result.data_.push_back(value); } return result; } // 合并两个集合对象并返回新集合运算符 CSet operator+(const CSet& other) const { CSet result(*this); for (int i = ; i < other.data_.size(); ++i) { if (std::find(result.data_.begin(), result.data_.end(), other.data_[i]) == result.data_.end()) { result.data_.push_back(other.data_[i]); } } return result; } // 把一个元素加到集合末尾运算符 CSet& operator+=(int value) { if (std::find(data_.begin(), data_.end(), value) == data_.end()) { data_.push_back(value); } return *this; } // 合并第二个集合到第一个后面运算符 CSet& operator+=(const CSet& other) { for (int i = ; i < other.data_.size(); ++i) { if (std::find(data_.begin(), data_.end(), other.data_[i]) == data_.end()) { data_.push_back(other.data_[i]); } } return *this; } // 输入流提取运算符 friend std::istream& operator>>(std::istream& is, CSet& set) { int value; while (is >> value) { if (std::find(set.data_.begin(), set.data_.end(), value) == set.data_.end()) { set.data_.push_back(value); } } return is; } // 输出流插入运算符 friend std::ostream& operator<<(std::ostream& os, const CSet& set) { os << "{"; for (int i = ; i < set.data_.size(); ++i) { os << set.data_[i]; if (i != set.data_.size() - 1) { os << ", "; } } os << "}"; return os; } private: std::vector<int> data_; }; ``` 下面是一个简单的测试程序: ```cpp #include <iostream> int main() { CSet set1, set2; std::cin >> set1 >> set2; std::cout << "set1: " << set1 << std::endl; std::cout << "set2: " << set2 << std::endl; std::cout << "set1 + set2: " << set1 + set2 << std::endl; std::cout << "set1(1, 5): " << set1(1, 5) << std::endl; std::cout << "set1 + 6: " << set1 + 6 << std::endl; std::cout << "set1 += 7: " << (set1 += 7) << std::endl; std::cout << "set1 += set2: " << (set1 += set2) << std::endl; std::cout << "set1[]: " << set1[] << std::endl; return ; } ``` 输出结果如下: ``` 1 2 3 4 3 4 5 6 set1: {1, 2, 3, 4} set2: {3, 4, 5, 6} set1 + set2: {1, 2, 3, 4, 5, 6} set1(1, 5): {1, 2, 3, 4} set1 + 6: {1, 2, 3, 4, 6} set1 += 7: {1, 2, 3, 4, 6, 7} set1 += set2: {1, 2, 3, 4, 6, 7, 5} set1[]: 1 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值