读书笔记1 MYSQL必知必会

第三章 使用数据库

//    选择数据库

USE crashcourse;

//    查看有多少数据库

SHOW DATABASES

//    查看一个数据库内可用的表

SHOW TABLES;

//    查看一个表内的列

SHOW COLUMNS FROM customers;    //    DESCRIBE customers;

//    显示数据库状态信息;

SHOW STATUS;

//    显示创建特定数据库或表的MYSQL语句

SHOW CREATE DATABASE;

SHOW CREATE TABLE;

//    用来显示授予用户的安全权限

SHOW GRANTS;

//    用来显示服务器错误或警告消息

SHOW ERRORS

SHOW WARNINGS

第四章    检索数据

//    检索单个列

SELECT prod_name FROM products;

//    检索多个列

SELECT prod_id, prod_name, prod_price FROM products;

//    检索所有列

SELECT * FROM products;

//    检索不同的行

SELECT DISTINCT vend_id FROM products;

//    限制结果

SELECT prod_name FROM products LIMIT 5;

SELECT prod_name FROM products LIMIT 5,5;

//    使用完全限定的表名

SELECT products.prod_name FROM products;

SELECT products.prod_name FROM crashcourse.products;

 第五章    排序检索数据

//    排序数据
SELECT prod_name FROM products ORDER BY prod_name;
//    按多个列排序
SELECT prod_id,prod_name,prod_price FROM products ORDER BY prod_price,prod_name;
//    制定排序方向
SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC;
//    多个列降序
SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC,prod_name;
//    ORDER和LIMIT结合
SELECT prod_price FROM products ORDER BY prod_price DESC LIMIT 1;


//    第六章    过滤数据

//    检查单个值
SELECT prod_name,prod_price FROM products WHERE prod_price = 2.50;
//    =    <>    !=    <    >    <=    >=    BETWEEN
SELECT prod_name,prod_price FROM products WHERE prod_name='fuses';
//    不匹配检查
SELECT vend_id,prod_name FROM products WHERE vend_id <> 1003;
//    范围检查
SELECT prod_name,prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
//    空值检查
SELECT prod_name FROM products WHERE prod_price IS NULL;


//    第七章    数据过滤

//    组合WHERE子句    AND    OR
SELECT prod_id,prod_price,prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;    
SELECT prod_price,prod_name FROM products WHERE vend_id = 1002 OR vend_id = 1003;
//    错误提醒    如果没有括号的话会出现错误
SELECT prod_name,prod_price FROM products
WHERE(vend_id = 1002 OR vend_id = 1003) AND prod_price >= 10;
//    IN操作符
SELECT prod_name,prod_price FROM products
WHERE vend_id IN (1002,1003) ORDER BY prod_name;
//    IN和OR很像,但是有以下优点:1.更清楚直观;2.比OR快;3.可以包含其他SELECT语句,使得能够更动态地创建WHERE子句;
//    NOT
SELECT prod_name,prod_price FROM products
WHERE vend_id NOT IN (1002,1003) ORDER BY prod_name;


//    第八章    用通配符进行过滤

//    %表示任何字符出现任意次数 0 1 多次
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'jet%';
//    _    匹配单个
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '_ton anvil';


//    第九章    用正则表达式进行搜索

//    基础字符匹配    包含1000
SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;
//    .    匹配任意一个字符
SELECT prod_name FROM products WHERE prod_name REGEXP '.1000' ORDER BY prod_name;
//    进行OR匹配
SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;
//    匹配几个字符串之一
SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton' ORDER BY prod_name;
//    匹配范围
SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;
//    匹配特殊字符    \\前置
SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;
//    *    0个或多个匹配    +    1个或多个匹配等于{1,}    ?    0个或1个匹配等于{0,1}
//    {n}        {n,}    {n,m}
SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name;
//    定位符    ^文本地开始        $文本地结束        [[:<:]]词的开始        [[:>:]]词的结尾
SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name;    


//    第十章    创建计算字段

//    拼接
SELECT Concat(vend_name,'(',vend_country,')') FROM vendors ORDER BY vend_name;
//    使用别名
SELECT Concat(vend_name,'(',vend_country,')') AS vend_title FROM vendors ORDER BY vend_name;
//    执行算数计算
SELECT prod_id,quantity,item_price quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 2005;


//    第十一章    使用数据处理函数

//    文本处理函数
SELECT vend_name, Upper(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;
//    日期和时间处理函数
SELECT cust_id,order_num FROM orders WHERE Date(order_data) BETWEEN '2005-09-01' AND '2005-09-30';
//    数值处理函数


//    第十二章    汇总数据

//    聚集函数    运行在行组上,计算和返回单个值的函数
SELECT AVG(prod_price) AS avg_price FROM products;
SELECT AVG(prod_price) AS avg_price FROM products WHERE vend_id = 1003;
SELECT COUNT(*)    AS num_cust FROM coustomers;
SELECT COUNT(cust_email)    AS num_cust FROM coustomers;
SELECT MAX(prod_price) AS max_price FROM products;
SELECT MIX(prod_price) AS mix_price FROM products;
SELECT SUN(quantity) AS items_ordered FROM orderitems WHERE order_num = 2005;
SELECT SUN(item_price*quantity) AS total_price FROM orderitems WHERE order_num = 2005;
//    聚合不同值
SELECT AVG(DISTINCT prod_price) AS avg_price FROM products WHERE vend_id = 1003;
//    组合聚集函数
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;

        
//    第十三章    分组数据

//    创建分组
SELECT vend_id,COUNT(*) AS num_prods FROM products GROUP BY vend_id;
//    过滤分组
SELECT cust_id, COUNT(*) AS orders FROM orders GROUP BY cust_id HAVING COUNT(*) >= 2;
SELECT vend_id,COUNT(*) AS num_prods FROM products WHERE prod_price >= 10 GROUP BY vend_id HAVING COUNT(*) >= 2;
SELECT order_num,SUM(quantity*item_price) AS ordertotal FROM orderitems
        GROUP BY order_num HAVING SUM(quantity*item_price) >= 50 ORDER BY ordertotal;
//    SELECT子句顺序    SELECT    FROM    WHERE    GROUP BY    HAVING    ORDER BY    LIMIT


//    第十四章    使用子查询

//    利用子查询进行过滤
1    SELECT order_num FROM orderitems WHERE prod_id = 'TNT2';
2    SELECT cust_id FROM orders WHERE order_num IN (2005,207);
//    子查询由内到外查询
SELECT cust_id FROM orders WHERE order_num IN (SELECT order_num FROM orderitems WHERE prod_id = 'TNT2');
SELECT cust_name,cust_status,(SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id) AS orders FROM customers;


//    第十五章    联结表

SELECT vend_name,prod_name,prod_price FROM vendors,products WHERE vendors.vend_id = products.vend_id ORDER BY vend_name,prod_name;
//    笛卡尔积
SELECT vend_name,prod_name,prod_price FROM vendors, products ORDER BY vend_name,prod_name;
//    内连接
SELECT vend_name,prod_name,prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id;
//    联结多个表
SELECT prod_name,vend_name,prod_price,quality FROM orderitems,products,vendors WHERE products.vend_id = vendors.vend.id
    AND orderitems.prod_id = products.prod_id AND order_num = 20005;
    



猜你喜欢

转载自blog.csdn.net/dote2r/article/details/78370546