笔记之MySQL必知必会

  • 1.主键
  • 2.了解数据库和表
  • 3.检索语句
  • 3.1排序检索数据
  • 3.2过滤数据
  • 3.3数据过滤


1.主键

  • 应该总是定义主键 虽然并不总是都需要主键,但大多数数据 库设计人员都应保证他们创建的每个表具有一个主键,以便于 以后的数据操纵和管理。
  • 表中的任何列都可以作为主键,只要它满足以下条件:
    任意两行都不具有相同的主键值;
    每个行都必须具有一个主键值(主键列不允许NULL值)。
  • 主键的最好习惯 除MySQL强制实施的规则外,应该坚持的几个普遍认可的最好习惯为:
    不更新主键列中的值;
    不重用主键列的值;
    不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其 名字时,必须更改这个主键。)

2.了解数据库和表

  • SHOW DATABASES; 返回可用数据库的一个列表。
  • SHOW TABLES; 返回当前选择的数据库内可用表的列表。
  • SHOW COLUMNS FROM customers它对每个字段返回一行,行中包含字段名、数据 类型、是否允许NULL、键信息、默认值以及其他信息(如字段cust_id 的auto_increment)。如图所示:

    另外,DESCRIBE customers; 是 SHOW COLUMNS FROM customers;的一种快捷方式。
  • SHOW STATUS,用于显示广泛的服务器状态信息;
  • SHOW CREATE DATABASESHOW CREATE TABLE,分别用来显示创建特定数据库或表的MySQL语句;
  • SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安全权限;
  • SHOW ERRORSSHOW WARNINGS,用来显示服务器错误或警告消息。

3.检索语句

  • SELECT prod_name FROM products;
    注意:返回的是未排序的数据
  • DISTINCT
    1.用distinct来返回不重复的用户名:select distinct name from user;
    2.select distinct name,id from user; 表达的是?
  • limit
SELECT * FROM 表名 limit m,n;

1.m代表从m+1条记录行开始检索,n代表取出n条数据。(m可设为0)

如:

SELECT * FROM 表名 limit 6,5;

表示:从第7条记录行开始算,取出5条数据

2.值得注意的是,n可以被设置为-1,当n为-1时,表示从m+1行开始检索,直到取出最后一条数据。

如:

SELECT * FROM 表名 limit 6,-1;

表示:取出第6条记录行以后的所有数据。

3.若只给出m,则表示从第1条记录行开始算一共取出m条

如:

SELECT * FROM 表名 limit 6;

表示:取出前6条记录行。

3.1排序检索数据

ORDER BY子句取一个或多个列的名字,据此对输出进行排序

  • SELECT prod_id,prod_price,pro_name FROM products ORDER BY prod_price,prod_name;
    检索3个列,并按其中两个列对结果进行排序——首先按 价格,然后再按名称排序
  • DESC 降序排列
  • ORDERBY子句的位置 在给出ORDERBY子句时,应该保证它 位于FROM子句之后。如果使用LIMIT,它必须位于ORDER BY 之后。使用子句的次序不对将产生错误消息。

3.2过滤数据

在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。

mysql必知必会mobi mysql必知必会最新版_主键


WHERE子句的位置 在同时使用ORDERBYWHERE子句时,应 该让ORDER BY位于WHERE之后,否则将会产生错误

3.3数据过滤

  • AND操作符

    此SQL语句检索由供应商1003制造且价格小于等于10美元的所有产品的名称和价格
  • OR操作符

    此SQL语句检索由任一个指定供应商制造的所有产品的产品名和价格。
  • 计算次序
    WHERE允许AND和OR操作符两者结合已进行复杂和高级的过滤,SQL(像多数语言一样)在处理OR操作符前,优先处理AND操 作符
  • IN操作符
    它用来指定条件范 围,范围中的每个条件都可以进行匹配。
    IN操作符可以完成与OR相同的功能。
    为什么要使用IN操作符?
    在使用长的合法选项清单时,IN操作符的语法更清楚且更直观
    在使用IN时,计算的次序更容易管理(因为使用的操作符更少)
    IN操作符一般比OR操作符清单执行更快。
    IN的最大优点是可以包含其他SELECT语句,使得能够更动态地建立WHERE子句。第14章将对此进行详细介绍。
  • NOT操作符
    NOT WHERE子句中用来否定后跟条件的关键字

    为什么使用NOT对于简单的WHERE子句,使用NOT确实没有什么优 势。但在更复杂的子句中,NOT是非常有用的。例如,在与IN操作符联合 使用时,NOT使找出与条件列表不匹配的行非常简单