数据库sql语句(count(*)和count(字段))

例题:

创建如下两张表 分别命名为books和persons

 

(1)按照书名,姓名的顺序列出字里包含‘德’字的人物的姓名,书名和字。

select name 姓名,bookname 书名,style 字
from books,persons
where style like '%德%'
and books.bookid = persons.bookid
order by 2,1;

order by 2,1:先按照书名排序,书名相同再按照姓名排序:一般是按照首字母排序

 

(2)哪本书中的人物姓名包含最多‘悟’字?
第一种表示方法:

select bookname 书名
from books,persons
where persons.bookid=books.bookid
and name like '%悟%'
group by bookname
having count(books.bookid)=(select top 1 count(bookid)
from persons
where name like '%悟%'
order by count(bookid) desc)

第二种表示方法:

select bookname 书名 from books
where bookid in(
select bookid from persons
where name like'%悟%’
group by bookid
having count(*) =(
select top (1) count(*) from persons
where name like'%悟%’
group by bookid
order by 1 desc))

count(字段)和count(*)的区别:

count(*) 是统计行数,

count(字段) 是统计字段列非null的行数

在查询字段非null时,两者的查询结果是一样的

补充:

count(1)也是统计行数

对于count(1)和count(*)返回的结果是一样的,但是两者的效率在不同的情况下不同:

如果表中没有主键 ,使用count(1)比count(*)快;

如果有主键,那么count(主键)最快

详细的内容,推荐这篇:http://t.csdn.cn/AiVUl

(3)人物最多的书的男性人物的姓名和字是什么

select name 姓名,style 字
from persons
where sex='男'
and bookid in(select bookid from persons
group by bookid 
having count(bookid) =(select top 1 count(bookid) from persons
group by bookid
order by count(bookid) desc))

 

(4)哪本书的人物姓名都是三个字的

select bookname 书名
from books
where bookid not in(select bookid from persons
where name not in(select name from persons where len(name)=3))

(5)女性人物最多的书是哪个朝代的

select dynasty 朝代
from books
where bookid in (
select bookid from persons
where sex ='女’
group by bookid
having count(*)=(
select top(1) count(*) from persons
where sex='女
group by bookid
order by 1 desc

 

 

(6)与唐僧在同一本书的女性人物是谁?

select name 姓名 from books,persons
where books.bookid in(select books bookid from books,persons
where books.bookid=persons.bookid
and name ='唐僧')
and books.bookid=persons.bookid
and sex='女';

(7) 有女性人物但是女性人物最少的书:

select distinct bookname书名,author作者
from books.persons
where books.bookid=persons.bookid
and books.bookid in 
select bookid from persons
where sex ='女'
group by bookid
having count(*) =(
select top(1) count(*)
from persons
where sex='女'
group by bookid
order by 1 asc))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库SQL语句大全实例是指包含了数据库管理系统中所有常用的SQL语句的一个完整列表。以下是一些常见的SQL语句的实例: 1. 创建表格:CREATE TABLE语句可以创建一张新的表格,其中定义了表格的字段和属性。 示例:CREATE TABLE employees (id INT, name VARCHAR(50), age INT); 2. 插入数据:INSERT INTO语句可以将数据插入到指定表格中的特定字段。 示例:INSERT INTO employees (id, name, age) VALUES (1, 'John', 25); 3. 更新数据:UPDATE语句用于更新表格中的数据。 示例:UPDATE employees SET age = 26 WHERE id = 1; 4. 删除数据:DELETE FROM语句用于删除表格中的数据。 示例:DELETE FROM employees WHERE id = 1; 5. 查询数据:SELECT语句用于从一个或多个表格中检索数据。 示例:SELECT * FROM employees; 6. 条件查询:SELECT语句可以结合WHERE子句以特定的条件检索数据。 示例:SELECT * FROM employees WHERE age > 30; 7. 排序数据:SELECT语句可以使用ORDER BY子句对数据进行排序。 示例:SELECT * FROM employees ORDER BY age ASC; 8. 聚合函数:SELECT语句可以使用聚合函数对数据进行汇总计算。 示例:SELECT COUNT(*) FROM employees; 9. 连接表格:SELECT语句可以使用JOIN子句将多个表格连接起来。 示例:SELECT * FROM employees JOIN departments ON employees.department_id = departments.id; 以上只是一些SQL语句的简单示例,实际上SQL语句的应用非常广泛,并且可以根据业务需求进行灵活的组合和调整。掌握常用的SQL语句可以帮助开发者有效地操作和管理数据库中的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值