数据库基础内容
-
数据库:保存所有数据的容器
-
表:某种特定数据类型的结构化清单
表名在同一数据库中具有唯一性,不同数据库可以重名
-
列:表中的一个字段。表是由列组成的。
-
行:表中的一个记录。表中数据按行存储
-
主键:其值能够唯一标识表中每一行
检索数据(查)
SELECT语句
-
检索单个列
SELECT 列名 FROM 表名;
普通的SELECT语句数据是没有过滤,也没有排序的。
-
SQL的空格
SQL语句的空格在语句处理时都会被忽略
-
SQL的结束
SQL语句以英文分号“;”结尾
-
SQL的大小写
SQL语句不区分大小写
-
-
检索多个列
SELECT 列名1,列名2,列名3 FROM 表名;
-
检索所有列
SELECT * FROM 表名;
-
检索不重复的值
如果再检索时要使重复的值只出现一个可以使用“DISTINCT”关键字,它只返回不同的值。
SELECT DISTINCT 列名 FROM 表名;
DISTINCT关键字作用于所有列不是仅对关键字后的列起作用,在多列去重的时候如果两列中其中一列没有重复数据,将输出全部数据,并不会去重。
限制结果
对于想返回第一行或一定数量的行,各种数据库对于限制结果的操作都不一样。
-
SQLServer
SELECT TOP 行数 列名 FROM 表名;
-
DB2
SELECT 列名 From 表名 FETCH FIRST 5 ROWS ONLY;
-
Oracle
SELECT 列名 FROM WHERE ROWNUM <= 5;
-
MySQL
SELECT 列名 FROM 表名 LIMIT 5; SELECT 列名 FROM 表名 LIMIT 5 OFFSET 5; #从第五行开始的向后的5行数据,第一个数字是检索的行数,第二个数字是从哪儿开始 SELECT 列名 FROM 表名 LIMIT 5,5; #这是上一条语句的简化
注意第一行数据是0,而不是1。
注释
SQL语言有三种注释
1. --注释
2. #注释
3. /*注释*/
排序数据
- ORDER BY子句的位置,应保证ORDER BY是SELECT语句中的最后一条子句
- ORDER BY子句使用的列将是为显示而非选择的列,即有非检索的列也可以排序
SELECT 列名 FROM 表名 ORDER BY 要排序列名;
SELECT 列名1,列名2,列名3,列名4 FROM 表名 ORDER BY 要排序列名1,要排序列名2;
-
按列位置排序
SELECT 列名1,列名2,列名3 FROM 表名 ORDER BY 1,3; #ORDER BY后面的数字是选择(检索)列的相对位置
如果要排序为出现检索的列不能使用这条语句
-
指定方向排序
数据排序默认是升序排序(A->Z)。
SELECT 列名 FROM 表名 ORDER BY 要排序列名 DESC; #降序排序(Z->A) SELECT 列名 FROM 表名 ORDER BY 要排序列名 ASC; #升序排序(A->Z)
注意在多列排序的时候关键字DESC或者ASC只对其前紧跟的列其作用,如果想对每一个列都进行降序排序则需要对每一个列都是用DESC(ASC)关键字。
SELECT 列名1,列名2,列名3 FROM 表名 ORDER BY 要排序列名1 DESC(ASC),要排序列名2; #只对其前紧跟的列(要排序列名1)其作用 SELECT 列名1,列名2,列名3 FROM 表名 ORDER BY 要排序列名1 DESC(ASC),要排序列名2 DESC(ASC); # 对指定列都进行排序
大小写和排序
在默认情况下A与a同等。