数据库操作的高级用法:
- order by 列名 (desc(降序)|asc(升序))
- top 5 ... 前五个数据
- LIMIT 3 .....限制只拿前3个数据
- LIKE (列名 LIKE (‘%k’,'k%'))//%表示前面有至少0个字符,或者后面至少0个字符;_ 代表可填入一个任意字符;正则表达式(列名 REGEXP '^[字符串]')字符开头的;‘^[^字符串]’不是字符开头的(‘^[!字符]’);
- IN 在where 的应用上,等于=,但是IN 后面可以接一个数组; ( 列名 NOT IN)
- ...BETWEEN ... AND.. ;闭区间(在前面加个 NOT 不在区间)
- AS 别名(原列名 AS 现列名|| 表也一样)
- JOIN
- 完整的操作+INNER JOIN..(表)...ON ... 条件;表中有匹配就返回行
- LEFT JOIN 右表做参考匹配,返回左表;//即使没有也返回所有左表
- RIGHT JOIN 左表做参考匹配,返回右表//即使没有也返回所有右表
- FULL JOIN 只要一个表存在匹配就返回行
- UNION 取出两个表的相同且不重复的值 表的合并(UNION ALL 重复)
- SELECT * INTO 新表名 FROM 旧表//复制表 目的表可以不存在
- INSERT INTO 表名(列名)SELECT (列名) FROM 表名//复制表 目的表可以必须存在
- CREATE DATABASE 库名
- CREATE TABLE 表名
- 约束 (NOT NULL;UNIQUE;PRIMARY KEY;FOREIGN KEY;DEFAULT)
- DROP 删除本身
- TRUNCATE 删除数据
- AUTOINCREMENT(初始值,递增值)//自动加一
- 视图VIEW和表的操作一样
- 函数:
- AVG()//列的平均值
- COUNT()//不重复的行数
- FIRST()//
- LAST()//
- MAX()//
- MIN()
- SUM()//列的总值
- UCASE()//列名变为大写字母
- LCASE()//小写字母
- MID(列名,起始,结束)(先闭后开)
- SubString()
- LEN()//长度
- ROUND(数,小数位个数)//单一参数符号不变,统一整数四舍五入
- NOW()
- FORMAT()//规范化比如:DATE_FORMAT(NOW(),'%Y-%M-%D') AS DATE
- HAVING 组合条件:比如函数
- 复杂问题:显示联合表,对表单一条件where 再GROUP BY 分组, 最后HAVING 函数(列名)>number
- EXISTS (条件),是否存在
- 索引:
- 普通索引:没有限制
- 唯一索引:与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这和主键类似,但是他可以有空值
- 组合索引(联合、复合索引):一个索引包含多个列名;最左原则,不能有范围查询
- 主键索引 :不允许空值;int 类型优于varchar
- 全文索引:select * from fulltext_test where MATCH(context,tag) against('ssss');创建表时(fulltext key context_index(content)),表后加engine =MyISAM default=utf8//match(参数必须是fulltext的列名)缺点:无法动态修改,只能该MYSQL的配置文件
- b树,树深廋,搜索慢;
- b+树,树胖矮,搜索快;(快慢只和深度有关)