1. 各种连接:
自身连接:select * from tb1 as a, tb1 as b where a.col_1 == b.col_2;
内连接:inner join , 如 select * from tb1, tb2 where tb1.col_a == tb2.col_b; 这里省略了inner join ... on ....
左连接:left join, 左表中全部的行,右表中对应的行。(右表中不存在对应行则相应字段为空)
右连接:right join, 右表中全部的行,左表中对应的行。
全连接:full join, 左连接输出的行 加上 右连接的行。mysql 不支持。
交叉连接:即笛卡尔连接. cross join. ( mysql 支持 )
2. limit:
1) select * from talbe limit from_indx, max_num;
from_indx 即起始下标,从0开始。max_num是最多记录数。整体意义即提取从from_indx开始的max_num记录。
2) select * from table limit max_num;
只有一个数字的情况下,代表提取的最大记录数。
3. group by:
先 group 再 order.
group by 后面可以有若干个字段。
4. having:
SQL标准规定:HAVING必须引用GROUP BY子句中的列或用于总计函数中的列。
5. mysql 的安全:
修改root 的密码: update mysql.user set password = password('newpwd'); flush privileges;
1) 使用grant 和 revoke 语句进行用户的访问控制。
2) 除了root外,其它任何用户不得访问 mysql数据库中的user表。
3) 禁止从非法网络上访问 3306 端口。
4) 数据传递给 mysql 时检查其大小。
5) 以普通用户来启动 mysqld 服务。并保证只有此用户才能对mysql目标具有读写权利。
6) file权限不给管理员以外的用户,防止 load data /etc/passwd 到表中,再select 显示。
7) 使用 max_user_connections 变量来使用 mysqld服务进程。
8) 重设密码:使用 -skip-grant-tables启动mysqld,然后不输入密码进入命令行操作。