从头开始学MySQL--------查询(1)

7.2.1  查询所有字段

        使用通配符  *  来查询所有数据

SELECT * FROM fruits;

        优点:当不知道表的列名称的时候,可以节约时间,快速知道列的名称。

        缺点:获取不需要的数据可能会降低查询的效率。而且会出现全表扫描,要谨慎使用。我同学的公司的数据库表,数据量通常都是百万级别的,用这个SQL语句出结果估计要等到太阳下山。

       查询单字段  SELECT 字段  FROM 表名;

       查询多字段  SELECT 字段A,字段B ....,字段N  FROM 表名;

       条件查询      SELECT 字段 FROM 表名 WHERE 查询条件;

7.2.4  带IN关键字的查询

       使用IN将查询 满足指定范围内的条件的 记录。

SELECT
	f_name
FROM
	fruits
WHERE
	s_id IN (101, 102)

  

     相反,可以使用 NOT IN 来检索不在条件范围内的所有记录。

     查询s_id 既不为101,也不为102的所有记录。

SELECT
	f_name
FROM
	fruits
WHERE
	s_id NOT IN (101, 102)

7.2.5  BETWEEN AND 范围查询

      查询某个范围的值,包括开始值与结束值,一般用于数值型,常用于ID。

SELECT
	f_name,
	f_price
FROM
	fruits
WHERE
	f_price BETWEEN 1 AND 100

7.2.6  模糊查询 LIKE

        MySQL的通配符有'%'与'_'。'%'视为任意长度的字符串。'_'视为一个字符串。

       '%a'匹配以a结尾的字符串。'a%'匹配以a开头的字符串。'%a%'匹配含有字符a的字符串。

       从fruits表中查询f_name字段 中含有o的记录

SELECT
	f_name
FROM
	fruits
WHERE
	f_name LIKE '%o%'   

  

7.2.7 空值查询

       从算术运算符的章节,已经学过  SELECT A IS NULL;  SELECT A IS NOT NULL; 返回的是 1或者0;

       现在用于条件判断了,查询f_price 是 NULL 的所有记录。  IS NULL 与 IS NOT NULL 相反。

SELECT
	f_name
FROM
	fruits
WHERE
	f_price IS NULL
--      f_price IS NOT NULL

7.2.8  带AND的多条件查询

         查询只有满足所有查询条件的记录才会被返回。AND可以连接两个甚至多个查询条件。

SELECT
	*
FROM
	fruits
WHERE
	f_id = 'a1' AND s_id < 102;

7.2.9  带OR的多条件查询

        在算术运算符中。与‘AND  && ’、 或‘OR  ||’、非 ‘NOT !’。

        使用OR操作符,表示只需要满足其中一个条件的记录即可返回。

        exprA || exprB  ,只要满足一个条件,返回的就是真。

        s_id in (101,102)  与   s_id = 101  OR  s_id = 102 效果是一样的。

OR的注意点

       (1)使用IN操作符使得查询语句变得更加简洁明了,IN的速度也同样快于OR。

       (2)更重要的是IN操作符可以执行更加复杂的嵌套查询。

       (3)OR与AND的优先级:先做AND的操作,再连接OR

                       A AND B OR C        A OR B AND C

        等价于   (A AND B) OR C      A  OR  (B AND C)

SELECT
	*
FROM
	fruits
WHERE
	f_id IS NULL 
  OR 
        s_id IS NOT NULL

  

7.2.10  查询结果不重复(去重)

        去重语法格式:SELECT DISTINCT 字段  FROM 表名 WHERE 条件;

        下面的例子中,

        第一条语句查询到了4条记录: 101、101、102、103 

        第二条语句查询到了3条记录: 101、102、103 

        即查询结果相同的算一条记录。

SELECT s_id FROM fruits;
SELECT DISTINCT s_id FROM fruits;

        再看下面的SQL

SELECT DISTINCT s_id , f_name FROM fruits;

  

        这说明:DISTINCT控制的重复是DISTINCT后面所有字段!即查询出来的记录中的s_id、f_name必须完全一样,才能算同一条。而不是单纯的s_id相同就去重。

        如果你有下面的这个SQL,查询出来的数据是

SELECT ID,NAME FROM`dept`

  

         假设查出来了两条ID为1的数据,将NAME属性视为通过不同的外连接查询到的数据。

         如果此时我的需求是:去掉ID重复的数据。下面这条SQL是行不通的。为什么?因为DISTINCT会将后面的所有字段去重,即不同记录中,ID与NAME属性完全一样,才能视为是相同的数据。

SELECT DISTINCT ID,NAME FROM`dept`

         所以, 我们需要上述的数据进行分组操作。所以,ID相同的数据,默认就展示一条了。

SELECT  ID,NAME,COUNT(*) FROM`dept`  GROUP BY  ID

  

阅读更多

         目录贴:从头开始学MySQL-------目录帖

.

 

 

 

 

如果你从头开始MySQL数据库,以下是一个简单的习路径建议: 1. 习基本概念:了解数据库的基本概念,如什么是数据库、表、字段、行、列、主键、外键等。可以参考MySQL官方文档或在线教程。 2. 安装和配置MySQL:根据你的操作系统,选择合适的MySQL版本并进行安装。习如何配置和启动MySQL服务器。 3. 习SQL语言:SQL是用于与数据库进行交互的语言,习SQL语句的基本语法和常用操作,如创建表、插入数据、查询数据、更新数据和删除数据等。 4. 数据库设计与规范化:习如何进行数据库设计,包括确定表结构、定义主键和外键、选择合适的数据类型等。了解数据库规范化的概念和规则,以提高数据库的性能和数据完整性。 5. MySQL工具和命令行:掌握一些常用的MySQL工具,如MySQL Workbench、phpMyAdmin等,并熟悉使用命令行界面进行数据库操作。 6. 索引和查询优化:习如何创建索引以提高查询性能,了解索引的类型和使用场景。习如何优化查询语句,包括使用索引、避免全表扫描、合理使用JOIN等。 7. 数据备份和恢复:习如何进行数据库备份和恢复操作,包括完全备份、增量备份、恢复到指定时间点等。 8. 安全和权限管理:了解如何设置数据库用户和权限,限制用户的访问权限,保护数据库的安全性。 9. 实践项目:通过实践项目来巩固所知识,例如创建一个简单的数据库应用或进行数据分析。 在习过程中,可以结合官方文档、在线教程、书籍和实践项目来深入理解和应用MySQL数据库。同时,多与社区和论坛互动,参与讨论和解决问题,以扩展你的知识和技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小大宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值