【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,那么这个列是采用了降序,其他的不标示的列还是默认升序排序

过滤数据

未完待续

posted @   胡鹏飞  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示