// WHERE testtable_author LIKE "%COM" // 里面的%是任意字符串
UNION指令
1 2 3 4 5
// SELECT country FROM Websites // UNION // SELECT country FROM apps // ORDER BY country; // UNION ALL不会去重
排序
1 2
// ORDER BY field1, [field2...] [ASC [DESC]] // 排序,分别是升序或者倒序
分组
1 2 3 4 5 6
// GROUP BY column_name // 按照column_name分组 // WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…) // 示例:SELECT name, COUNT(*) FROM employee_tbl GROUP BY name // 示例:SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP // 上面那个示例会显示总数信息
JOIN
1 2 3 4 5 6 7 8
// INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。INNER可以省略 // LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。 // RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。 // 用MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)来连接以上两张表来读取testtable_tbl表中所有testtable_author字段在tcount_tbl表对应的testtable_count字段值 // SELECT a.testtable_id, a.testtable_author, b.testtable_count FROM testtable_tbl a INNER JOIN tcount_tbl b ON a.testtable_author = b.testtable_author; // 相当于: // SELECT a.testtable_id, a.testtable_author, b.testtable_count FROM testtable_tbl a, tcount_tbl b WHERE a.testtable_author = b.testtable_author; // LEFT JOIN 会将所有a表中有的东西都列出来,b.testtable_count可能出现NULL
NULL
1 2 3 4 5
// NULL值:如果NULL和别的比较都会出现false,包括NULL=NULL为false // 所以提供了运算符: // IS NULL: 当列的值是 NULL,此运算符返回 true。 // IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。 // <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。
// ALTER:修改表的名称或者字段 // SHOW COLUMNS FROM testalter_tbl 可以显示所有字段 // ALTER TABLE testalter_tbl DROP i 可以直接删除表testalter_tbl中的i字段 // ALTER TABLE testalter_tbl ADD i INT 可以添加i字段(int) // 上面的东西的最后可以添加FIRST或者AFTER c代表新加字段的位置 // ALTER TABLE testalter_tbl MODIFY c CHAR(10) 可以直接修改字段 // 如果使用CHANGE则如下: // ALTER TABLE testalter_tbl CHANGE i j INT 就是把i换为j(INT) // ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100 也就是设置默认值不是NULL,是100 // ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000 设置默认值 // ALTER TABLE testalter_tbl ALTER i DROP DEFAULT 删除默认值 // 重命名:ALTER TABLE testalter_tbl RENAME TO alter_tbl