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);