zoukankan      html  css  js  c++  java
  • java学习笔记之mysql2

    mysql

    #-----sql指令的查询----------(重点)
    #1 排序(order by) ASC:升序 DESC:降序
    #SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
    #按照价格进行升序排列
    SELECT * FROM product ORDER BY price ASC;
    SELECT * FROM product ORDER BY price; #默认是升序
    #按照价格进行降序排列
    SELECT * FROM product ORDER BY price DESC;
    SELECT price FROM product ORDER BY price DESC;
    #去除重复的数据
    SELECT DISTINCT price FROM product ORDER BY price DESC;
    SELECT * FROM product ORDER BY price DESC;
    
    #先按照价格降序排序,如果价格一样,则按照category_id降序
    SELECT * FROM product ORDER BY price DESC, category_id DESC;
    #按照category_id进行降序排列
    SELECT * FROM product ORDER BY category_id DESC; #字符串按照字典顺序与排列
    
    #2 聚合函数: 函数:function 方法:method
    #count(): 统计 sum():求和 max() min() 最大和最小值 avg():平均值
    #统计有多少种商品名
    SELECT COUNT(pname) FROM product; #该函数不会统计NULL值
    #统计商品的条数目
    SELECT COUNT(*) FROM product; # 只要有一列不是NULL,则就会统计
    #查询价格大于200商品的总条数
    # from ---> where --->count ---->select
    SELECT COUNT(*) FROM product WHERE price > 200;
    
    #查询分类为'c001'的所有商品价格的总和
    #求和都是数值类型,其他类型没有意义
    SELECT SUM(price) FROM product WHERE category_id = "c001";
    #查询分类为'c002'所有商品的平均价格
    SELECT AVG(price) FROM product WHERE category_id = "c002";
    #查询商品的最大价格和最小价格
    SELECT MAX(price)"最大价格",MIN(price)"最小价格" FROM product;
    
    #字符串的最大值和最小值是按照字典顺序的最大值和最小值来定的
    SELECT MAX(category_id),MIN(category_id) FROM product;
    #3 分组查询(group by)
    #SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段 HAVING 分组条件;
    # 统计各个分类商品的个数
    #from --->GROUP BY --->count --->select
    SELECT category_id, COUNT(*) FROM product GROUP BY category_id;
    
    #统计各个分类商品的个数,且只显示个数大于2的信息
    #mysql固定,如果分组之后,对分组后的结果再进行条件判断,不能使用where,要使用having
    SELECT category_id, COUNT(*) "c" FROM product GROUP BY category_id HAVING c >2;
    #4 分页查询(LIMIT)
    # SELECT 字段1,字段2... FROM 表名 LIMIT M,N
    #M:表示从哪一行开始显示(行索引:从0开始)
    #N: 表示要显示多少行(固定)
    SELECT * FROM product LIMIT 0, 5; # 1- 5
    SELECT * FROM product LIMIT 5, 5; # 6- 10
    
     
    
    
    
    #--- 表与表之间的关系--------
    #1 一对一关系:A,B A表的一行对应B表一行
    #由于1对1关系可以合并成一张表,所以很少用
    #2 一对多关系:A,B A表的一样对应B表多行
    
    #3 多对多关系: A,B A表的一行对应B表多行,B表一行对应A的多行
    
    
    
    
    #一对多的关系
    #1 建立主表(分类表)
    CREATE TABLE category(
    cid INT PRIMARY KEY AUTO_INCREMENT,
    cname VARCHAR(20)
    );
    #2 建立从表(商品表)
    CREATE TABLE product(
    pid INT PRIMARY KEY AUTO_INCREMENT,
    pname VARCHAR(20),
    price DOUBLE,
    category_id INT #外键列:类型必须和主表的主键类型一致
    );
    #3 建立外键关联 (foreign key)
    # alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名)
    # references 主表 (主表的主键);
    ALTER TABLE product ADD FOREIGN KEY(category_id) REFERENCES category(cid);
    
    #4 给主表添加数据(随意)
    INSERT INTO category VALUES(1,'电子'),(2,'服装');
    
    #5 给从表添加数据(受主表的限制)
    INSERT INTO product VALUES(NULL,'联想',5000,1);
    INSERT INTO product VALUES(NULL,'耐克',300,2);
    INSERT INTO product VALUES(NULL,'汽车',300,3);
    
    #主表和从表的数据关系
    #1 如果主表的数据被从表关联,则主表的数据不能删除,除非把从表的数据先删除
    #2 主表的数据可以随意添加,从表的数据必须依赖主表
    
    
    #多对多关系
    #6 建立订单表(主表)
    CREATE TABLE orders(
    oid INT PRIMARY KEY AUTO_INCREMENT,
    money DOUBLE 
    );
    #7 建立中间表 (从表)
    CREATE TABLE product_orders(
    pid INT ,
    oid INT
    );
    #8 建立外键关联(2次)
    ALTER TABLE product_orders ADD FOREIGN KEY(pid) REFERENCES product(pid);
    ALTER TABLE product_orders ADD FOREIGN KEY(oid) REFERENCES orders(oid);
    
    #9 给订单表添加数据(随意)
    INSERT INTO orders VALUES(1,8000),(2,5000);
    #10 给中间表添加数据(受限)
    INSERT INTO product_orders VALUES(1,1),(1,2);
    INSERT INTO product_orders VALUES(1,3);
    
     
  • 相关阅读:
    算法导论6.33习题解答
    最短子序列(最短摘要)
    算法导论83(b)习题解答(trie树)
    算法导论61习题解答
    算法导论8.24习题解答(计数排序)
    算法导论8.34习题解答(基数排序)
    算法导论6.57习题解答
    算法导论63习题解答(Young氏矩阵)
    算法导论6.58习题解答(最小堆K路合并)
    算法导论6.17习题解答
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8146587.html
Copyright © 2011-2022 走看看