连接
主机名+端口名+用户名+密码
基础
-
数据排序默认为升序,若要指定降序,使用DESC关键字
-
where 子句中
- 如果将值与串类型的列进行比较,则需要限定单引号。用来与数值列进行比较的值不用引号
- 空值检查 is null
- in 操作符一般比or操作符 更快
-
BETWEEN 5 AND 10,包括5和10
-
distinct关键字 应用于所有的列,而不是前置修饰的单列
-
limit关键字
- limit a 前a行,从0开始
- limit a,b 从行a开始的b行,例如:limit 1,1 指第二行;limit 2,20 指从第二行开始的20行
- limit b offset a 等同于 limit a,b
-
like 通配符
- % 任何字符出现的任意次数,例如’user%'表示任意以user开头的字符串
- _ 单个字符,例如‘s_e’表示,以s开头,以e结尾,并且中间只有一个字符的字符串
-
REGEXP 正则表达式
- ‘.0‘ 匹配以0结尾的字符串
- ‘100|200’ 匹配100或者200
- ‘[123]99’ 匹配199,或者299,或者399
- ‘[^123]99’ 匹配除1,2,3,之外含99的字符串
- [1-5] 匹配数字1-5,[a-z] 匹配任意字母字符
- \ 转义字符
-
UNION
- UNION 从查询结果集中自动去除了重复的行,想返回所有匹配行,可使用UNION ALL而不是UNION,前者效率更高
- UNION中的每个查询必须包含相同的列、表达式或聚集函数(不过列的顺序可以不一样)
- 在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。虽然ORDER BY子句似乎只是最后一条SELECT语句的组成部分,但实际上MySQL将用它来排序所有SELECT语句返回的所有结果。
函数
- concat() 拼接 :把多个串拼接成一个串
- RTrim():去掉值右边的所有空格
- LTrim():去掉串左边的空格
- Trim():去掉串左右两边的空格
- 日期格式为yyyy-mm-dd
- 例如将sql.date转化为util.date 使用new java.util.date(XXX.getTime())
- 使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
- 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。
- 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。
数据类型
- 字符或者字符串
- char 定长
- varchar(n) 不定长
- 不管使用何种形式的串数据类型,串值都必须括在引号内(通常单引号更好)。
- 数值
- 与串不一样,数值不应该括在引号内。
- 时间类型
insert
- 语法:全表插入,依赖列值的顺序 insert into table_name values(),一般不使用
- 指定列插入: insert into table_name(col1,col2,col3) value(‘s1’,‘s2’,null),较常使用,允许为空或者有默认值的列可以不给值,不写出来
- 如果对表中不允许NULL值且没有默认值的列不给出值,则插入不成功。
- 可一次插入多行
- INSERT SELECT
- insert into table1 t1(col1,col2,col3)select t2.col1,t2.col2 from table2 t2,0 as col3
update
- update table_name set col1=‘0’ where col1=‘1’
delete
- delete form table_name where col1=‘0’ limit 5
- 如果想从表中删除所有行,不要使用DELETE。可使用TRUNCATE TABLE语句,它完成相同的工作,但速度更快(TRUNCATE实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)
- 在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确。
索引
- 优化查询的性能
- create index 索引 on table_name(col1,col2)
- 使用EXPLAIN语句让MySQL解释它将如何执行一条SELECT语句。
- 如果一个简单的WHERE子句返回结果所花的时间太长,则可以断定其中使用的列(或几个列)就是需要索引的对象。
- 你的SELECT语句中有一系列复杂的OR条件吗?通过使用多条SELECT语句和连接它们的UNION语句,你能看到极大的性能改进
- union all比union 效率高
- 索引改善数据检索的性能,但损害数据插入、删除和更新的性能。如果你有一些表,它们收集数据且不经常被搜索,则在有必要之前不要索引它们。(索引可根据需要添加和删除。)
视图
- 创建视图 create view 视图1 as select查询语句
- 查看视图对应的sql语句 show create view view1
- 删除视图 drop view1
- 视图不存储数据,存储的是查询的结果集,一般用于较复杂或者较常用的查询
- 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
- 视图提供了一种MySQL的SELECT语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。
事务
- 事务(transaction)指一组SQL语句,可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。
- 回退(rollback)指撤销指定SQL语句的过程;
- 提交(commit)指将未存储的SQL语句结果写入数据库表;
- 保留点(savepoint)指事务处理中设置的临时占位符(placeholder),你可以对它发布回退(与回退整个事务处理不同)例如:savepoint p1, rollback to p1
- 一般的MySQL语句都是直接针对数据库表执行和编写的。这就是所谓的隐含提交(implicit commit),即提交(写或保存)操作是自动进行的。
但是,在事务处理块中,提交不会隐含地进行。为进行明确的提交,使用COMMIT语句