数据库查询

文章介绍了数据库中常见的列如id、创建时间等,并讲解了分页查询的实现方式,包括SQL的limit用法。同时,提到了统计总条数的不同count方法。接着,讨论了日期格式化、不同类型的数据库连接(内连接、左连接、右连接)以及合并查询。此外,文章强调了SQL注入的危害并提出了防范措施。最后,给出了一些数据库设计的最佳实践,如数据类型的选择和表结构设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 共同的列

在数据库里面的列,还应该每个班都有一些共同的列:

     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)根据数据的内容确定数据类型

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值