1. 分表查询
2. group by(统计)
select name, count(name), sum(score) from myest GROUP BY name
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面
3.存储过程
什么是存储过程呢?
存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。
通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句。
那为什么要用存储过程呢?
(1).存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
(2).当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
(3).存储过程可以重复使用,可减少数据库开发人员的工作量。
(4).安全性高,可设定只有某些用户才具有对指定存储过程的使用权
4. count,group by, 别名
为什么在group by中不能使用别名
这是因为在SQL执行的时候,WHERE和GROUP语句在字段分类之前就已经执行了,在此期间,别名还没有生效,因此找不到指定别名的字段,报错。(这里需要了解group by, where, select的执行书序)
可以使用子查询解决:
select logindate, count(logindate) from (select rtx, left(logintime_str, 10) as logindate from user_login_info )tt GROUP BY logindate
5. 每个子查询 都要一个别名 (mysql) Every derived table must have its own alias
select rtx from (select rtx, loginip from user_login_info ORDER BY rtx)tt
6. 向表中插入元素
6.1 insert into mytest values(30, "fish", 0, "1985") //0所在的列是主键,自增
6.2 字符串中包含双引号和 反斜杠 \
insert into mytest values (30, "{\"value\" : \"200\"}", 0, 1980)
value = value.replace('\\', '\\\\').replace('"', '\\"')
6.3 插入空值
空值和NULL的区别
求属性列的补集
select p.pid from product0485 p where p.pid not in (select o.pid from orders0485 o)
7.模糊查询like
like 的通配符有两种
%(百分号):代表零个、一个或者多个字符。
_(下划线):代表一个数字或者字符