6.排序查询

使用:

只要利用自拉长

借使大家有如下的 Model :

2.标准查询

  • 分类一 ( 10 )
  • 分类二 ( 15 )
  • 分类三 ( 8 )

select Brand(列名) from 表名 group by Brand(列名)
having(在分组中加条件,有必须有group by) count(*)>2

利落选用这么些办法将使大家复杂的查询需求代码变得特别急忙和简单。

select count(主键列) from 表名 ——查询出来的拥有数据条数

能够看出 Article 与 Author,Category 是外键关联的,而和 Tag
多对多的关联。有时候我们有诸如此类的要求:在模板中呈现全部的
category,author,tag,同时还要对应展现与其涉嫌的 Article 数量,例如:

select * from 表名 where Price between 40 and 50

连带文书档案位于:QuerySet Method
reference


Aggregation

delete from 表名 where ids=5——删除ids=5的数据

from django.db.models.aggregates import Count

category_list = Category.objects.filter(article__created_time_gt=(2015,1,1)).annotate(
    num_articles=Count('article')).filter(num_articles__gt=0)

CRUD操作
C——create 添加数码 Lacrosse——read 读取数据 U——update 修改数据 D——delete
删除数据

这句话的意思的,首先对 Category
做筛选(filter),即筛选出其相应的整套篇章见报时间超出 2016年七月七日的
category记录(article__created_time_gt=(二零一四,1,1))
,然后为筛选出来的每二个条 category
记录添加了贰本性质:num_articles(num_articles=Count(‘article’))),Count
方法为我们总计了每一条 catogory 下对应的 article
数量,最终再对这组记录筛选出相应文章多少超过 0
的记录,即知足了笔者们上述供给。同理能够对 Author,Tag 做类似筛选。

select top 5(每页展现几条) * from 表名 where 列名 not in (select top
5 列名 from 表名)

class Article(models.Model):
    title = models.CharField('标题', max_length=200)
    body = models.TextField('正文')
    created_time = models.DateTimeField('创建时间', auto_now_add=True)

    author = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='作者', on_delete=models.CASCADE)
    category = models.ForeignKey('Category', verbose_name='分类', on_delete=models.CASCADE)
    tags = models.ManyToManyField('Tag', verbose_name='标签集合', blank=True)

    def __str__(self):
        return self.title

class Category(models.Model):
    name = models.CharField('分类名', max_length=30)

    def __str__(self):
        return self.name

class Tag(models.Model):
    name = models.CharField('标签名', max_length=30)

    def __str__(self):
        return self.name

My SQL 中需管第1列自增进列

值得注意的是第2个 filter 和 annotate
的各样不能乱,不然或然不能得到大家预料的结果。

查询:
1.简易询问
select * from 表名 ——查全数数据
select 列名,列名 from 表名——查钦点列的数量
设置小名 select 列名 as ‘小名’ ,列名 as ‘别名’ from 表名

出于 Article 和 Category 外键关联的,在模板中大家可以运用 {{
category_instance.article_set.count }} 取得 category_instance
这一一定分类下关联的总体 Article
数量,可是缺点也很显眼,不大概在模板标签中传送参数,count
方法将回来全体关系的文章数量。有时大家想要特别精细化一点的展现,比如计算有些分类下整个
阿特icle 发布时间在某些时间点后的小说,而假设该分类对应的篇章数为 0
,大家在模板中则不出示该分类。看上去挺复杂的逻辑,Django 的 annote
方法一句话能够化解大家的标题。

_意味着三个字符
select * from 表名 where 列名 like ‘__E%’——查第4个字符是E的
% 代表是不管三七二十一四个字符

annote 的功效是依照有个别规则给 queryset 中的每2个成分(例如大家那边的是
category)添加1性格能。queryset
是从数据库中查询到的一组数据的集结,Django 将其封装在 QuerySet 对象里。

首先种方法:

其次种艺术:

select * from 表名 order by 列名 desc,列名
asc——以五个字段排序,前边主要条件,前面次要条件

SQL server中:不用去管第1列从第三列始发

4.离散询问

select * from 表名 where 列名 in (‘c001′,’c005′,’c010′,’c015’)
select * from 表名 where 列名 not in (‘c001′,’c005′,’c010′,’c015’)
——反选

给多列添加,在列名后用“,”隔绝——(列,列)

字符串+”,
布尔型’true’或’false’,0 false或1 true 
日期型’1997-2-3’+单引号,中按格式,
整形

select * from 表名 where 列名=’数据’

给一列添加:insert into Nation(列名) values(‘列值’)

3.限制查询
小车举例:
select * from 表名 where 列名(Price)>40 and 列名(Price)<50

insert into 表名
values(‘第三列值’,”)——若第①列不想添加无法不写,可用引号为空

select * from 表名 order by 列名 ——暗许升序asc
select * from 表名 order by 列名 desc ——降序排列

10.聚合函数 (又叫总结查询)

在SQL server中对数据库的操作:

当前页:page = 2; 每页展现:row = 10;
select top row(每页显示几条) * from 表名 where 列名 not in (select
top (page-1)*row 列名 from 表名)

update 表名 set fcode=’p016′ where ids=6

9.分组查询

修改多列
update 表名 set fcode=”,mcode=” where ids= 列与列用逗号隔开分离

5.模糊查询
以小车表为例:
select * from 表名 where 列名 like ‘%宝马%’
select * from 表名 where 列名 like ‘布加迪%’——查询以Alfa初阶的
select * from 表名 where 列名 like ‘%Mercedes-Benz’——查询以阿斯顿·马丁最后的
select * from 表名 where 列名 like ‘Infiniti’——查等于阿尔法·罗米欧的

8.去重查询

第2字不区分轻重缓急写

select sum(Price) from Car——求和
select avg(Price) from Car——求平均
select max(Price) from Car——求最大
select min(Price) from Car——求最小

删除表:
drop table 表名
修改表:
alter table 表名 添加列add 列名 列类型
alter table 表名 drop column 列名

select count(*) from 表名 ——查询出来的数据条数

select * from 表名 where 列名=’数据’ and 列名=’数据’
select * from 表名 where 列名=’数据’ or 列名=’数据’——多规格查询

1.添加数量
insert into 表名 values(‘第1列值’,’第③列值’)——数据库中用单引号
每一列都要加上

select distinct 列名 from 表名

update 表名 set fcode=’p016′ 修改全数的fcode值为p016

2.去除数据

7.分页查询

删除数据库
drop database 数据库名

delete from 表名—— 删除全部数据

3.改动数据