SQL 语法

注意事项

  • 不可以用 from 作为字段

* 表引擎

  1. MySQL常用的存储引擎为MyISAMInnoDBMEMORYMERGEarchiveCSV
  2. 其中InnoDB提供事务安全表,其他存储引擎都是非事务安全表。
  3. 1MyISAMMySQL的默认存储引擎。MyISAM不支持事务、也不支持外键,但其访问速度快,对事务完整性没有要求。
  4. 2InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但是比起MyISAM存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。
  5. 3MEMORY 存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件。MEMORY类型的表访问非常得快,因为它的数据是放在内存中的,并且默认使用HASH索引。但是一旦服务关闭,表中的数据就会丢失掉。
  6. 4MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同。MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除的操作,就是对内部的MyISAM表进行的。
  7. 5archive:这种类型只支持select insert语句,而且不支持索引。常应用于日志记录和聚合分析方面。
  8. 6CSV存储引擎把数据以逗号分隔的格式存储在文本文件中。

* 字段详解

1、bigint,int,smallint,tinyint — 数字性 (存储各种数字数据,如价格、年龄或者数量)

  1. ### 整形
  2. TINYINT3,3—一个微小的整数,支持 -128127(SIGNED),0255(UNSIGNED),需要1个字节存储
  3. SMALLINT5,5—一个小整数,支持 -3276832767(SIGNED),065535(UNSIGNED),需要2个字节存储
  4. MEDIUMINT7,8—一个中等整数,支持 -83886088388607(SIGNED),016777215(UNSIGNED),需要3个字节存储
  5. INT10,10—一个整数,支持 -21474936482147493647(SIGNED),04294967295(UNSIGNED),需要4个字节存储
  6. BIGINT19,20—一个大整数,支持 -92233720368547758089223372036854775807(SIGNED),018446744073709551615(UNSIGNED),需要8个字节存储
  7. ###浮点
  8. FLOAT——一个小的菜单精度浮点数。支持 -3.402823466E+38到-1.175494351E-3801.175494351E-38 to 3.402823466E+38,需要4个字节存储。如果是UNSIGNED,正数的范围保持不变,但负数是不允许的。
  9. DOUBLE——一个双精度浮点数。支持 -1.7976931348623157E+308到-2.2250738585072014E-30802.2250738585072014E-3081.7976931348623157E+308。如果是FLOATUNSIGNED不会改变正数范围,但负数是不允许的。
  10. REAL——同DOUBLE
  11. DECIMAL——将一个数像字符串那样存储,每个字符占一个字节
  12. ###比特
  13. BIT——同TINYINT(1)
  14. BOOL——同TINYINT(1)

2、字符串类型:char、varchar、nvarchar (字符串列类型用于存储任何类型的字符数据,如名字、地址或者报纸文章。下面是MySQL中可用的字符串列类型)

  1. ###定长
  2. CHAR1,255—字符。固定长度的字串,在右边补齐空格,达到指定的长度。支持从0255个字符。搜索值时,后缀的空格将被删除。
  3. VARCHAR1,255—可变长的字符。一个可变长度的字串,其中的后缀空格在存储值时被删除。支持从0255字符
  4. ###大字符
  5. TINYTEXT——支持255个字符。要求长度+1字节的存储。与TINYBLOB一样,只不过搜索时会忽略大小写。(0.25KB)
  6. TEXT——支持65535个字符。要求长度+2字节的存储。 (64KB)
  7. MEDIUMTEXT——支持16777215个字符。需要长度+3字节的存储。 (16M)
  8. LONGTEXT——支持4294967295个字符。需要长度+4字节的存储。(4G)
  9. ###保存二进制文件 (不建议使用)
  10. TINYBLOB——微小的二进制对象。支持255个字符。需要长度+1字节的存储。与TINYTEXT一样,只不过搜索时是区分大小写的。(0.25KB)
  11. MEDIUMBLOB——中等大小的二进制对象。支持16777215个字符。需要长度+3字节的存储。 (16M)
  12. BLOB——二进制对象。支持65535个字符。需要长度+2字节的存储。 (64KB)
  13. LONGBLOB——大的的二进制对象。支持4294967295个字符。需要长度+4字节的存储。 (4G)
  14. ###
  15. ENUM——枚举。只能有一个指定的值,即NULL"",最大有65535个值
  16. ENUM('value1','value2',...) enum('a','b','c') enum('true','false')
  17. 枚举。一个仅有一个值的字符串对象,这个值式选自与值列表'value1''value2', ...,或NULL。一个ENUM最多能有65535不同的值。
  18. SET——一个集合。可以有064个值,均来自于指定清单.
  19. SET('value1','value2',...)
  20. 一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表'value1', 'value2', ...选出。一个SET最多能有64个成员。

3、日期

  1. ###字符日期
  2. DATETIME——格式:'YYYY-MM-DD HH:MM:SS',范围:'1000-01-01 00:00:00''9999-12-31 23:59:59'
  3. DATE——格式:'YYYY-MM-DD',范围:'1000-01-01''9999-12-31'
  4. YEAR——格式:'YYYY,范围:'1901'到'2155' ---->可以放弃了。。
  5. ###时间戳
  6. • TIMESTAMP——格式:'YYYYMMDDHHMMSS'、'YYMMDDHHMMSS'、'YYYYMMDD'、'YYMMDD',范围:'1970-01-01 00:00:00'到'2037-01-01 00:00:00'
  7. • TIME——格式:'HH:MM:SS' -》放弃
  8. 4、常用字符
  9. //经纬度:总长度为20,保留小数点后面17位
  10. DOUBLE 20,17
  11. //货币,总长度为9,保留小数点后面2位
  12. DECIMAL(9,2)