MySQL学习笔记1(检索,排序,过滤)

1

(table):某种特定类型数据的结构化清单。

(column):表中的一个字段。所有表都是有一个或多个列组成。

数据类型(datatype):所容许的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。

(row):表中的一个记录。

主键(primary key):一列(或一组列),其值能够唯一区分表中的每个行。

主键应该满足如下条件:

  • 任意两行都不具有相同的主键值
  • 每个行都必须具有一个主键值(主键列不允许NULL值)

2

MySQL是一种DBMS(数据库管理系统),即它是一种数据库软件。

SQL语句不区分大小写。SQL关键字使用大写,对所有表名和列名使用小写,有利于阅读和调试。

3

关键字(keyword):作为MySQL语言组成部分的一个保留字。绝不要用关键字命名一个表或列。

show databases;

查看已有数据库。

use mysqlcc;

使用use打开名为mysqlcc的数据库(读取数据前必做项)。

show tables;

查看对应数据库中已有的表。

show columns from customers;(等价于 describe customers;)

查看customers表中的字段信息,包括字段名、数据类型、是否允许NULL、键信息、默认值、和其他(如自动增量等)。

4检索数据

1、select语句

      至少包含两条信息:想选择什么,从什么地方选择。

2、检索单个列

      select prod_name from products;

      返回未排序数据。

3、检索多个列

      select  pro_id,prod_name,pro_price

      from products;

      检索多个列时用逗号隔开,最后一列后面不要加。(SQL语句可以在一行上给出,也可以分行写,分行利于阅读和调试)。

4、检索多有列

      select * from products;

      当有名字未知的列时,可以使用通配符 * 来检索。

5、检索不同的行

      select distinct ven_id from products;

      由检索单个列可知返回的是该列的所有行,会有重复,使用distinct关键字来避免重复。

6、限制结果

      select prod_name from products limit 5;

      返回prod_name列的前5行。

      select prod_name from products limit 5,5;

      返回prod_name列的下一个5行。第一个数是开始的位置,第二个数是检索的行数。

7、使用完全限定的表名或列名

      select products.prod_name from products;

      select products.prod_name from mysqlcc.products;

5排序检索数据

1、排序数据

      关系数据库设计理论认为,如果不明确规定排序顺序,则不应该认为检索出的顺序有意义。

      使用自居order by 来完成排序,如:

      select prod_name from products order by prod_name;

      上述为 select A from products order by A; 也可以 select A from products order by B; 即通过非选择列进行排序。

2、按多个列排序

      select prod_id,prod_price,prod_name

      from products

      order by prod_price,prod_name;

      检索3列,并按其中两列排序,首先按价格,然后按名称。

3、指定排序方向

      select prod_id,prod_price,prod_name

      from products

      order by prod_price DESC,prod_name;

      首先以降序排序产品价格,然后升序排序产品名。(默认升序)

6过滤数据

1、使用where子句

      select prod_name,prod_price

      from products

      where prod_price=2.50;

      检索两列,但只返回prod_price值为2.50的行。(同时使用order by和where子句时,order by应位于where之后

2、where子句操作符:=、<>、!=、<、>、<=、>=、BETWEEN。

2.1检查单个值

      select prod_name,prod_price

      from products

      where prod_name="fuses";

     

      MySQL执行匹配时默认不区分大小写,所以fuses与Fuses匹配。

2.2不匹配检查

      select prod_name,prod_price

      from products

      where prod_name<>"fuses";

<>、!=,两个都是不等于操作符。

2.3范围值检查

      select prod_name,prod_price

      from products

      where prod_price BETWEEN 5 AND 10;

2.4空值检查

      select prod_name

      from products

      where prod_price IS NULL;

7数据过滤

1、组合where子句

      可以用包含任意多 的AND和OR操作符的where子句来进行高级过滤。

      select prod_name,prod_price 

      from products

      where vend_id=1002 OR vend_id=1003 AND prod_price >=10;

      注意:AND在计算次序中比OR高,所以上述SQL语句等价于

      select prod_name,prod_price 

      from products

      where (vend_id=1002) OR (vend_id=1003 AND prod_price >=10);

     任何时候使用AND和OR操作符的where语句时,都应该使用圆括号明确地分组操作符,不要过分依赖默认计算次序。

2、IN操作符

      select prod_name,prod_price 

      from products

      where vend_id IN(1002,1003)         //此行等价于where vend_id=1002 OR vend_id=1003

     order by prod_name;

    功能与OR相同, 推荐使用IN。

3、NOT操作符

      select prod_name,prod_price 

      from products

      where vend_id NOT IN(1002,1003)         //列出除1002和1003之外的所有供应商制造的产品。

     order by prod_name;

     MySQL支持使用NOT对IN、BETWEEN、和EXISTS子句取反。

8用通配符过滤

1、LIKE操作符

1.1百分号(%)通配符

     

     通配符使用较灵活,如:%et,%et%。注意尾空格可能会干扰匹配:'%anvil'   不会匹配    '%anvil '。

     '%'不匹配NULL。

1.2下划线(_)通配符

      总是匹配1个字符。

2、使用技巧

  •      不要过度使用通配符,要比其他操作符花的时间长
  •       除非有必要,否则不要把他们放在搜索模式开始处

猜你喜欢

转载自blog.csdn.net/captainNYS/article/details/87815834