1.storage engine
其实每个engine对应的性质,就不一一说明了。
下面主要罗列一些最明显的使用场合。
①payment、secure ----InnoDB
②foreign key referential integrity constraint ----InnoDB
③transaction ---InnoDB
④full-text search ----MyISAM
MySQL 5.5之前,默认engine是MyISAM
MySQL 5.5以及之后,默认engine是InnoDB
storage engine是对于每个table而言的。不同table指定不同的engine。
2.data types
MySQL支持3组数据类型:
Numeric
Date&time
String
Numeric
①Integers
②Floating points
Data type Bytes
FLOAT
DOUBLE
DECIMAL
bytes?有疑问,我将一个float的量输入很多位,可以显示7bytes,比较少的时候又会显示3bytes
Date&time
一共有以下类型:DATE、TIME、DATETIME、YEAR、TIMESTAMP
String
附录 常见MySQL数据类型(留作备忘)
类 型 | 大 小 | 描 述 |
CAHR(Length) | Length字节 | 定长字段,长度为0~255个字符 |
VARCHAR(Length) | String长度+1字节或String长度+2字节 | 变长字段,长度为0~65 535个字符 |
TINYTEXT | String长度+1字节 | 字符串,最大长度为255个字符 |
TEXT | String长度+2字节 | 字符串,最大长度为65 535个字符 |
MEDIUMINT | String长度+3字节 | 字符串,最大长度为16 777 215个字符 |
LONGTEXT | String长度+4字节 | 字符串,最大长度为4 294 967 295个字符 |
TINYINT(Length) | 1字节 | 范围:-128~127,或者0~255(无符号) |
SMALLINT(Length) | 2字节 | 范围:-32 768~32 767,或者0~65 535(无符号) |
MEDIUMINT(Length) | 3字节 | 范围:-8 388 608~8 388 607,或者0~16 777 215(无符号) |
INT(Length) | 4字节 | 范围:-2 147 483 648~2 147 483 647,或者0~4 294 967 295(无符号) |
BIGINT(Length) | 8字节 | 范围:-9 223 372 036 854 775 808~9 223 372 036 854 775 807,或者0~18 446 744 073 709 551 615(无符号) |
FLOAT(Length, Decimals) | 4字节 | 具有浮动小数点的较小的数 |
DOUBLE(Length, Decimals) | 8字节 | 具有浮动小数点的较大的数 |
DECIMAL(Length, Decimals) | Length+1字节或Length+2字节 | 存储为字符串的DOUBLE,允许固定的小数点 |
DATE | 3字节 | 采用YYYY-MM-DD格式 |
DATETIME | 8字节 | 采用YYYY-MM-DD HH:MM:SS格式 |
TIMESTAMP | 4字节 | 采用YYYYMMDDHHMMSS格式;可接受的范围终止于2037年 |
TIME | 3字节 | 采用HH:MM:SS格式 |
ENUM | 1或2字节 | Enumeration(枚举)的简写,这意味着每一列都可以具有多个可能的值之一 |
SET | 1、2、3、4或8字节 | 与ENUM一样,只不过每一列都可以具有多个可能的值 |
注:还是上面的疑问,用length(float类型变量)为什么可以得到7?
注:ENUM和SET 的都是给出可选的若干值,并只能在其中取值。
不同是SET可以一次选允许的几个值。
3.CREATE、ALTER、DROP
首先它们都是对table的操作,属于DDL--Data Definition Language。
①CREATE TABLE XXX (属性名 类型,。。。,。。。)
注:CREATE可以用于很多功能,新建用户,数据库,表格,view都是用它声明。
②DROP TABLE XXX
③ALTER TABLE XXX
ADD xxx
ADD PRIMARY KEY(XXX)
CHANGE COLUMN XXX
MODIFY COLUMN XXX
DROP COLUMEN
4.Expressions
①Literal value
②Variable:@xxx
③Operations
operator中,LIKE是简单的模式匹配,RLIKE/REGEXP是高级模式匹配
5.INSERT、UPDATE、DELETE
它们都是对于表中的元组的操作,是DML--Data Manipulation Language。
①UPDATE
UPDATE XXX SET xxx = yyy
②DELETE
在mysql中等价于TRUNCATE
可以指定删除某一元组,也可以直接删除所有元组。
注:不同是truncate XXX,而delete from XXX。
③INSERT
广义的对表写入条目可分为3种。
(1)从键盘输入:INSERT INTO XXX VALUES()
(2)从其他TABLE输入:INSERT INTO XXX SELECT * FROM YYY
(3)从外部文件输入:LOAD DATA INFILE ‘xxxxx’
补充输出为外部文件:SELECT * INTO OUTFILE ‘xxxx’
FIELDS TERMINATED BY ','
LINE TERMINATED BY '\n'
FROM XXX
6.SELECT
一般形式SELECT ___A___ FROM XXX ____B____ WHERE
①A中的选项
(1)* 表示所有选项
(2)x,y,... 表示具体指定选择的属性
(3)x AS y 表示将x选出并改名y
(4)DISTINCT x 表示只显示x属性中不重复的项目
(5)SUM(x) 表示将属性x求和
②B中的选项
(1)LIMIT x 表示只显示x数目的元组;还可以LIMIT y,x表示从y以后的x个条目
(2)ORDER BY x ASC/DESC 按x属性升序/降序显示
③WHERE及GROUP
(1)WHERE 两个条件之间用AND连接
(2)GROUP BY x 求和之后再将条目按x属性分组显示
(3)GROUP BY x HAVING 如果是求和或者其它运算之后(比如AS),不能对于运算结果进行WHERE加条件操作
这个时候可以使用HAVING 加条件操作。