zoukankan      html  css  js  c++  java
  • 手动整理汇总MySQL基础知识1

    1.基础知识点:

    1)MySQL是世界上最受欢迎的数据库管理系统(DBMS)之一,在实际的应用中有很广阔的空间。

    2)表、列、行、主键

    本次博客所有内容以《MySQL必知必会》为基础,使用教学数据来进行讲解。

    2-1)表

    表是一种结构化文件,可用来存储某种特定类型的数据。表是某种特定类型数据的结构化清单。在一个数据库内表名不能相同,但在不同数据库中可以使用相同的表明。

    下图是一个表,该表的表名为vendors。

     2-2)列

    列是表中的一个字段。所有表都是由一个或多个列组成的。每列数据都有相同的数据类型。

    例如红色框所示。

     2-3) 行

    行是表中的一个记录。

    例如红色框所示。

     2-4)主键

    表中每一行都一个有一列(或几列)可以唯一标识自己。因此主键是一列(或一组列),其值能够唯一标识表中每一行。

    划重点:

    主键用来表示一个特定的行,没有主键,更新或删除表中特定行就极为困难。

    表中的任何列都可以作为主键,只要它满足如下操作:

    任意两行都不具有相同的主键值;

    每一行都必须具有一个主键值(主键列不允许NULL值);

    主键列中的值不允许修改或更新;

    主键值不能重用。

    vendors表中vend_id被设定为主键,之后会详细讲到。

    2.检索数据:

    检索数据使用的是MySQL中SELECT关键字(Tips,在使用MySQL的过程中,为了使语句更有美感,MySQL的关键字建议大写,操作的表名和列名等等建议小写,虽然说MySQL关键字大小写的效果是一样的,但这样更加美观实用)。

    常用语句:

    1)检索单个列

    SELECT vend_name(列名) FROM vendors(表名);

    2)检索多个列

    SELECT vand_id, vend_name, vend_city FROM vendors;

    3)  检索所有列

    SELECT * FROM vendors;

    4)检索不同的值(返回的结果去掉相同的值)

    SELECT  DISTINCT vend_id FROM vendors;

    5) 限制检索的结果

    下面表示从行3开始的4行。(MySQL从行0开始检索需要注意!)

    SELECT vend_name FROM vendors LIMIT 3 , 4; (或者 SELECT vend_name FROM vendors LIMIT 4 OFFEST 3;)

    此外,任何程序都需要注释,在MySQL中可以使用以下三种形式进行注释

    -- 这是一条注释

    # 这是一条注释

    /* 这是一条注释 */

    3. 排序检索数据:

    排序检索主要使用的是ORDER BY关键字。

    1)单列排序

    使用如下句子进行检索

    SELECT prod_name FROM products;可以得知结果呈现出无序的排列

    使用SELECT prod_name FROM products ORDER BY prod_name; # 根据prod_name来排序输出结果

     2)多个列排序

    SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price, prod_name; (先按prod_price排序,前者相同后按prod_name排序)

    3)  指定排序方向

    默认是升序,DESC是降序。

    SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;(先按prod_price降序排序,前者相同后按prod_name升序排序)

    3. 过滤数据:

    过滤数据主要使用WHERE关键字。

    1) 使用WHERE关键字

    WHERE子句的操作符

    =                          等于

    <>                       不等于

    !=                        不等于

    <                         小于

    <=                      小于等于

    >                        大于

    >=                      大于等于

    BETWEEN        在指定的两个数之间

    例子: SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;

    2) 组合WHERE关键字

    2-1)AND操作符

    SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;

    2-2) OR操作符

    SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1002 OR vend_id = 1003;

    2-3)IN操作符

    SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id IN (1002,1003) ORDER BY  prod_name;

    2-4) NOT 操作符

    SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name;

    3) LIKE操作符

    3-1)%通配符(一次可以匹配多个字符)

    SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 'jet%';

     SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '%anvil%';

     SELECT prod_id, prod_name FROM products WHERE prod_name LIKE 'S%E';

     3-2) _ 通配符(一次只能匹配一个字符)

    SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '_ ton anvil';

    SELECT prod_id, prod_name FROM products WHERE prod_name LIKE '__ ton anvil';

     4)正则表达式

    MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定正则表达式,过滤SELECT检索出的数据。
    4-1)基本字符匹配

     SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;

     SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name; ('.' 可以表示任意一个字符)

     4-2)OR匹配

    SELECT  prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;

     4-3) 匹配几个字符之一

     SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;

      SELECT prod_name FROM products WHERE prod_name REGEXP '[^123] Ton' ORDER BY prod_name;

     4-4)匹配范围

    SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;

     4-5)匹配特殊字符

    SELECT vend_name FROM vendors WHERE vend_name REGEXP '\.' ORDER BY vend_name;

     4-6)匹配字符类

    字符表如下所示

     SELECT prod_name FROM products WHERE prod_name REGEXP '[[:digit:]]{4}' ORDER BY prod_name;

     4-7)匹配多个实例

     SELECT prod_name FROM products WHERE prod_name REGEXP '\([0-9] sticks?\)'ORDER BY prod_name;

     4-8)定位符

     SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\.]' ORDER BY prod_name;

     4.创建计算字段:

    1)拼接

    Concat()

    SELECT Concat(vend_name, '(', vend_country,')') FROM vendors ORDER BY vend_name;

     2)算术计算

    SELECT prod_id, quantity, item_price FROM orderitems WHERE order_num = 20005;

     5.数据处理函数:

    函数的使用会导致代码的可移植性降低。

    1)文本处理函数

     

     Soundex()函数

     SELECT cust_name, cust_contact FROM customers WHERE cust_contact = 'Y.Lie';

     SELECT cust_name, cust_contact FROM customers WHERE Soundex(cust_contact) = Soundex('Y Lie');

     2)日期和时间处理函数

     SELECT cust_id, order_num FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';

    3)数值处理函数

     SELECT Pi();

     4)聚集函数

     SELECT MIN(prod_price) AS min_price FROM products;

     SELECT COUNT(*) AS num_items, MIN(prod_price) AS price_min, MAX(prod_price) AS price_max, AVG(prod_price) AS price_avg FROM products;

     6.数据分组:

    主要使用GROUP BY子句和HAVING子句。

    SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;

    SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id HAVING COUNT(*) >= 3;

     7. 数据子查询

    在涉及到不同的表之间的数据联合查询时使用。

     

  • 相关阅读:
    实验6 多态性
    js实现图片轮播
    xcode 4.6 使用NSURLConnection 获取网页内容(iOS6.1,纯手工编码,无xib,无storyboard)
    蓝牙API
    php使用microtime(true)查看代码执行时间
    clover无缘无故隐藏书签栏原因
    RedisGEO
    mysql 新特性之geometry
    mysql中geometry类型的简单使用
    微软Windows Phone 7新特性详解 狼人:
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12398586.html
Copyright © 2011-2022 走看看