SQL系统学习
-
SELECT数据查询操作(检索一列SELECT name from table)
- 在一个表中查询某个字段 SELECT name from table。这个查询语句可以输出表中为name字段的所有值
- 多条SQL语句使用;分割开。可以同时查询多条
- 对关键字使用大写,对列和表使用小写
- 处于SQL时候不区分空格。所有的空格都可以被忽略,SQL可以写成一行,当然也可以写成多行。作用是一样的
-
SELECT检索多列(SELECT name,age from table)
- 检索多列,要使用,分割,最后一列不需要使用,分割。
- SQL语句返回的是原始的数据,无格式的数据。数据的格式是表示问题,而不是检索问题。
-
SELECT 检索出所有列(SELECT * FROM table)
- 检索出所有列,但是如果明确字段名的情况下,尽量不要这么使用。直接使用列名,因为这样会降低检索和应用程序的性能。
- 直接使用通配符的情况,可以检索出未知列。
-
SELECT DISTINCT age FROM table 检索不同的值
- 但是需要注意,关键字作用于所有的列。不仅仅是跟在关键字后面的那一列。
-
对SELECT 返回的数据的数量进行限制,不同的DBMS不同,我们记下使用最多的MySQL,
- SELECT name FROM table LIMIT 5 限制查询不超过5条数据
- SELECT name FROM table LIMIT 5 OFFSET 5 OFFSET限制从第六条开始查询(OFFSET 就是前面的都pass),查询不超过5条数据
- MySQL 支持简化的写法 LIMIT 3,4 ,后面是限制的数量。逗号前面是偏移量
-
SELECT name FROM table ORDER_BY age 需要注意ORDER_BY必须是最后一条子句。
-
SELECT name,age FROM table ORDER_BY age,name 需求是不只是按照一个列进行排序。此时排序是顺序的,如果前面能拍排出结果,则后面的字段不会加入排序。
-
SELECT name,age FROM table ORDER_BY 2,3 按照相对列的位置进行排序。
-
DESC指定排序方式,默认是升序排序。但是如果需要降序排序的话,需要手动指明。
- SELECT name,age FROM table ORDER_BY age DESC,name
- 默认都是升序,如果想让其他列也降序需要显示指明。SELECT name,age FROM table ORDER_BY age DESC,name DESC
-
过滤数据使用WHERE。
- SELECT name,age FROM table WHERE name = 'david'
- SELECT name,age FROM table WHERE name = 'david' ORDER_BY age DESC 过滤语法,ORDER_BY也需要位于最后
- 子句操作符,> <=,!=等 SELECT name,age FROM table WHERE age>=18
- 范围检查。 SELECT name,age FROM table WHERE age BETWEEN 10 AND 15。无论什么子句,只有是约束条件限制,肯定要加上WHERE.
- 是否为空值检查。SELECT name,age FROM table WHERE age IS NULL。
-
高级过滤。同时满足多个条件的过滤。
- SELECT name,age FROM table WHERE age>10 AND name=='david',AND关键字必须条件都满足才可以返回数据
- OR关键字,当第一个条件满足时,不管第二个满不满足都会返回。SELECT name,age FROM table WhERE age>10 OR name == 'david'
- 在And 和 OR都存在的SQL尽量使用括号来消除歧义。And的优先级高于OR. SELECT prod_name,prod_price FROM Products WHERE (vend_id= 'DLL01' OR vend_id = 'BRSO1') AND prod_price>10
- IN关键字,作用等同于OR,如果第一个条件满足,不会去匹配第二个条件。SELECT name,price FROM products WHERE id in ('DLL01','BRS01') ORDER BY name。等价于SELECT name,price FROM products WHERE id = 'DLL01' OR id = 'BRS01' ORDER BY name;
- IN有以下好处
- 查询速度更快
- 可以包含其他的SELECT语句。
- 更清楚直观,容易管理。
- NOT关键字。否定后面的行为,简单的SQL语句等价于!= 或者<>。但是在一些复杂的语句,它的优势可以得以体现。在与IN联合使用的时候,NOT可以非常简单的找出与条件列表不匹配的行。
网友评论