【SQL必知必会】读书笔记
第一节 了解SQL
数据库基础
数据库(database)
保存有组织的数据的容器
表(table)
某种特定类型数据的结构化清单(同一个数据库中表名是唯一的哦)
模式(schema)
关于数据库和表的布局及特性的信息
列(column)
表中的一个字段。所有表都是有一个或多个列组成的
数据类型(datatype)
所允许的数据的类型。每个表列都有相应的数据类型,它限制(或允许)该列中存储的数据(此处注意数据类型兼容)
行(row)
表中的一行记录,也就是一条记录
主键(primary key)
一列(或多列),其值能够唯一标示表中的每一行数据
关于主键使用,建议不管使用还是不使用都在创建表的时候定义好主键,便于以后的管理
表中的任意列都可以作为主键,只要满足以下条件:
- 任意两行都不具有相同的主键值,可以理解为想要设置为主键的一列没有重复值
- 每一行都必须具有一个主键值(主键列不允许有NULL)
- 主键列中的值不允许修改或更新
- 主键值不能重用(如果某行从表中删除,它的主键不能赋值给以后的新行)
什么是SQL
SQL是Structured Query Language(结构化查询语言),SQL是一门专门与数据库交互的语言
第二节 检索数据
SELECT
SQL中的关键字,表示查询的意思
--表示从table中查询所有的行
SELECT * FROM table;
提示:
一条SQL语句结束的标识符是分号,SQL语句是不区分大小写的, 一般码农在编写代码的时候喜欢将SQL中关键字用全大写
SELECT 检索多个列
SELECT AColumn, BColumn, CColumn FROM table;
SELECT 检索所有列
--通配符*,表示检索所有的字段
SELECT * FROM table;
注意:使用通配符
一般而言,我们在使用SQL查询数据库的时候,建议写通配符,但是在程序开发中,除非你确实需要表中的每一列,否则最好别使用通配符,虽然使用通配符能让你自己省事,不用明确的写出所有的列名,但是检索不需要的列通常会降低检索和应用程序的性能,在后期的开发工作中还需要考虑SQL优化
DISTINCT
指示数据库只返回不同的值
SELECT DISTINCT id FROM table;
不能部分列使用
--表示id和name同时不同的会被检索出来
SELECT DISTINCT id, name FROM table;
TOP
限制返回的数据的行数
--表示返回10条数据
SELECT TOP 10 id FROM table;
注释
--表示后面的文字是注释
#表示这一行是注释
SELECT TOP 10 id FROM table;
第三节 排序检索数据
如果不排序,检索出的数据并不是随机显示的,一般将以数据在底层表中出现的顺序显示。
ORDER BY
取一个或多个列对数据进行排序
SELECT * FROM table ORDER BY id;
按照多个列排序,简单指定列名,之间用逗号分割即可
SELECT * FROM table ORDER BY id, name, age;
按照列名索引进行排序(不常用)
--表示按照id和name对返回的数据排序
SELECT id, name, age FROM table ORDER BY 1,2;
指定排序顺序
升序(A到Z),降序(Z到A),数据库默认是升序
--默认按照升序排序
SELECT id FROM table ORDER BY id;
--设置按照降序排序
SELECT id FROM table ORDER BY id DESC;
DESC是DESCENDING的缩写表示降序,ASC是ASCENDING的缩写表示升序
如果对于多个列进行排序时,指定某列使用DESC,那么这个列是采用了降序,其他的不标示的列还是默认升序排序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本