本文是个人学习笔记,学习素材参考《SQL必知必会(第5版)》,仅用于个人学习记录,非商用。样例数据、练习思路来自该书。
一.前期准备
按照提示打开Mysql Workbench
创建tysql数据库并导入数据
二.检索数据
2.1 SELECT语句
作用:从一个或多个表中检索信息
使用条件:必须至少给出两条信息——想选择什么,从什么地方选择
2.2 检索单个列
SELECT PROD_NAME
FROM PRODUCTS;
说明:这些结果是未排序的数据,只要行的数量相等即可
提示:
1.多条SQL语句必须以分号”;“分隔,大多数DBMS不需要在单条SQL语句后加分号,但建议都加分号
2.SQL语句不区分大小写
3.SQL语句可以写成长长的一行,也可以分写在多行
SELECT PROD_NAME
FROM PRODUCTS;
SELECT PROD_NAME FROM PRODUCTS;
SELECT
PROD_NAME
FROM
PRODUCTS;
这三种写法都是正确的
2.3检索多个列
列名之间要用逗号分隔,最后一个列名后面不加逗号,否则会出现错误
SELECT PROD_ID,PROD_NAME,PROD_PRICE FROM PRODUCTS;
2.4检索所有列
通配符*可以返回表中所有的列
*有一个优点:能检索出名字未知的列
SELECT * FROM PRODUCTS;
2.5检索不同值
如果你想检索的行中有相同值,你只想输出互不相同的值则用DISTINCT关键字,他指示数据库只返回不同的值,它必须放在列名之前
如果distinct关键字作用于多个列则结果是根据拥有最多不同值的列输出的
2.6限制结果
返回特定行
1.在SQL Server中可以用TOP关键字
SELECTTOP 5PROD_NAME FROM PRODUCTS;
只检索前五行数据
2.在DB2中
SELECT PROD_NAME FROM PRODUCTSFETCH FIRST 5 ROWS ONLY;
FETCH:获取
FIRST:开头,第一,最先
ROWS:行
3.在Qracle中,需要基于行计数器ROWNUM来计算行
SELECT PROD_NAME FROM PRODUCTS WHERE ROWNUM <=5;
WHERE:条件筛选
4.在Mysql,MariaDB,PostgreSQL或者SQLite中,需要用LIMIT子句
SELECT PROD_NAME FROM PRODUCTS LIMIT 5 ;
如果想得到特定几行可以用LIMIT 数字 OFFSET 数字
如果想返回从第5行起的5行数据:
SELECT PROD_NAME FROM PRODUCTS LIMIT 5 OFFSET 5;
第一个数字是想要检索的行数,第二个数字是从哪一行开始
注意:数据库表中的第1行记录是OFFSET视角下的第0行
只返回了4行是因为从第5行数后面只有4行
提示:在Mysql,MariaDB,SQLite中可以把LIMIT 4 OFFSET 3语句简化成LIMIT3,4,第一个数字对应的是OFFSET,第二个数字对应的是LIMIT,是反着的
2.7注释
1.行内注释--和#
-- 注释--后面必须有一个空格
2.多行注释
/*和*/之间任何内容都是注释,常用于把不需要跑的代码注释掉