- 共同的列
在数据库里面的列,还应该每个班都有一些共同的列:
1)id 主键
2)create_time 创建时间
3)update_time 更新时间
4)remark 备注
5)enable 状态:启用,停用,注销等
分页公式
-- 分页公式 select * from product limit (page-1)*size,size page第几页,size每页显示多少条 size=12 page=3
-- limit 不支持运算符,只能写结果
-- limit (page-1)*size,size
-- limit start,size limit 2,3
select * from product limit start,size;
所以,如果想要查询分页最主要的是得到第几页和每一页显示的条数即可
分页的代码写在sql语句的最后面
总条数
select count(*) as count from product;
count(*) 和count(1) 和count(id) 区别?
count(*)默认找索引的总条数
日期格式化
select DATE_FORMAT(NOW(),'%Y/%m/%d') birthday;
内连接 :两两连接
select * from product p
inner join
cuisine c
on p.cuisine_id=c.id
左连接
以左边表为为基准,将左边表都查询出来,
右边表如果没有对应的数据则用null显示
select * from product p
left join
cuisine c
on p.cuisine_id=c.id
右连接
以右边表为基准,将右边表的所有数据进行查询,
左边表如果没有对应的数据则显示null
select * from product p
right join
cuisine c
on p.cuisine_id=c.id
合并查询
select * from product where id=(select max(id) from product where id<66)
union all
select * from product where id=66
union all
select * from product where id=(select min(id) from product where id>66);
-- union all 表示不去重复的数据
-- union 去掉重复的数据
select * from product where id in(66,(select max(id) from product where id<66),(select min(id) from product where id>66));
mysql 代码的书写顺序
select -->from-->where -->group by-->having-->order by -->limit
1)首先查询所有数据,然后根据where条件进行比较,所以回遍历整个表
2)如果想要查询更快,最好加索引条件:id>500
sql注入
SQL注入(SQL Injection)是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的"数据"拼接到SQL语句中后,被当作sql语句的一部分执行。从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)。
即:注入产生的原因是后台服务器接收相关参数未经过滤直接带入数据库查询
sql注入危害
Sql注入防范
总结:
1)表名,字段名 全用小写英文
2)表名 不要使用复数
3)不要使用关键字
4)列名 不要加pk_id,也不要加表名 product_name,product_price
5)小数全部为decimal,禁止使用float和double
6)char 用于固定字符串长度
7)超过5000的长度就用text文本
8)表必备字段:id,create_time,update_time,enable,remark;
9)根据数据的内容确定数据类型