mysql基础

一、DBMS 数据库管理系统

二、DB 数据库DataBase

三、SQL

结构化查询语言(Structured Query Language),是关系数据库的标准语言,它的特点是:简单、灵活、功能强大。

1SQL的分类:

DQL:数据查询语言

DML:数据操作语言(数据的增删改)

DDL:建表语句:库,表的维护语句

2表的约束:

非空(NOT NULL)

主键约束(PRIMARY KEY):非空且唯一

自然主键:使用具有业务含义的列。(不推荐)

代理主键:使用没有业务含义的列。ID(推荐)

3DQL:查询(单表)

①简单查询

SELECT 列名1,列名2,列名3 FROM (表,视图,子查询) 数据源;

SELECT id,salePrice FROM product;

SQL 执行的方式

1.右键 选择->执行已选择的

2.右键 选择-》ctrl+shift+r

: 查询商品的分类编号(看看有哪些分类)

SELECT dir_id FROM product;

②去重 DISTINCT

SELECT DISTINCT dir_id FROM product;

③数学运算:

查询所有货品的id,名称和批发价(批发价=卖价*折扣)

SELECT dir_id,productName,salePrice*cutoff FROM product;

查询所有货品的id,名称,和各进50个的成本价(成本=costPrice)

SELECT dir_id,productName,costprice*50 FROM product;

查询所有货品的id,名称,各进50个,并且每个运费1元的成本

SELECT dir_id,productName,(costPrice+1)*50 FROM product;

④设置别名,隐藏复杂的表达式

SELECT dir_id,productName,(costPrice+1)*50 AS tradePrice FROM product;

⑤java和MySQL常用类型对照:

JAVA Java备注 MYSQL MYSQL备注

Int 短整型 int 短整型

long 长整型 bigint 长整型

bigdecimal 金融数据 decimal 金融数据

String 字符串 char 不可变字符串

varchar 可变字符串

⑥条件查询

SELECT 列名1,列名2,列名3 FROM (表,视图,子查询) 数据源 WHERE 条件;

查询货品零售价为119的所有货品信息;

SELECT * FROM product WHERE salePrice = 119;

查询货品名为罗技G9X的所有货品信息;

SELECT * FROM product WHERE productName = '罗技G9X';

查询货品名 不为 罗技G9X的所有货品信息;

SELECT * FROM product where productName != '罗技G9X';

查询分类编号不等于2的货品信息;

SELECT * FROM product WHERE dir_id != 2;

查询货品名称,零售价小于等于200的货品;

SELECT * FROM product WHERE salePrice <= 200;

查询id,货品名称,批发价大于350的货品;

SELECT dir_id,productName,salePrice FROM product WHERE salePrice > 350;

条件查询之逻辑运算(AND OR NOT)

选择id,货品名称,批发价在300-400之间的货品;

SELECT dir_id,productName,salePrice*cutoff FROM product WHERE salePrice*cutoff>=300 AND salePrice*cutoff<=400;

选择id,货品名称,分类编号为2,4的所有货品;

SELECT dir_id,productName FROM product WHERE dir_id= 2 OR dir_id = 4;

选择id,货品名词,分类编号不为2的所有商品;

SELECT dir_id,productName FROM product WHERE NOT dir_id= 2;

选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200;

SELECT dir_id,productName FROM product WHERE salePrice >= 250 OR costPrice >=200;

范围查询(BETWEEN AND)

选择id,货品名称,批发价在300-400之间的货品;

SELECT dir_id,productName,salePrice*cutoff FROM product WHERE salePrice*cutoff BETWEEN 300 AND 400;

选择id,货品名称,批发价不在300-400之间的货品;

SELECT dir_id,productName,salePrice*cutoff FROM product WHERE salePrice*cutoff NOT BETWEEN 300 AND 400;

集合(IN):IN指的是只选择这个值对应的记录

选择id,货品名称,分类编号为2,4的所有货品;

SELECT dir_id,productName FROM product WHERE dir_id IN (2,4);

选择id,货品名称,分类编号不为2,4的所有货品;

SELECT dir_id,productName FROM product WHERE dir_id NOT IN(2,4);

空值查询(IS NULL)

查询商品名为NULL的所有商品信息;

SELECT * FROM product WHERE productName IS NULL;

查询商品名为NULL的所有商品信息;

SELECT * FROM product WHERE productName NOT IS NULL;

一般来说NOT都是放在where后面的条件之前,但是IS NULL 这个是放在它俩中间,如下:

SELECT * FROM product WHERE productName IS NOT NULL;

模糊查询(LIKE)

匹配的规则:

_ :匹配任意的一个字符

% :匹配任意的多个字符

查询id,货品名称,货品名称匹配'%罗技M9_';

SELECT dir_id,productName FROM product WHERE productName LIKE '%罗技M9_';

正则表达式查询(REGEXP)

需求:查询包含字母的商品信息;

SELECT * FROM product WHERE productName REGEXP '[a-z]';

排序(ORDER BY)

SELECT 列 FROM tableName ORDER BY 排序的列 排序的规则;

默认是升序排列 ASC;

降序是 DESC;

选择id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序;

SELECT id,productName,dir_id,salePrice FROM product ORDER BY dir_id,salePrice;

选择id,货品名称,分类编号,零售价并且按零售价降序排序;

SELECT id,productName,dir_id,salePrice FROM product ORDER BY salePrice DESC;

查询M系列并按照批发价排序(加上别名);

SELECT *,salePrice*cutoff AS tradePrice FROM product WHERE productName LIKE '%M%' ORDER BY tradePrice;

查询分类为2并按照批发价排序(加上别名);

SELECT *,salePrice*cutoff AS tradePrice FROM product WHERE dir_id = 2 ORDER BY tradePrice;

分页(LIMIT)

分页的关键字 LIMIT(开始的索引,每页的条数);

分页设计:

假分页(逻辑分页): 把数据全部查询出来,存在于内存中,翻页的时候,直接从内存中去截取.

真分页(物理分页): 每次翻页都去数据库中去查询数据.

假分页: 翻页比较快,但是第一次查询很慢,若数据过大,可能导致内存溢出.

真分页: 翻页比较慢,若数据过大,不会导致内存溢出.

分页:一页有五条数据,假如是从0开始的,name第n页索引为(n-1)*5 --- n*5-1

第三页

SELECT * FROM product LIMIT 10,5;

第四页

SELECT * FROM product LIMIT 15,5;

⑮聚合函数

最大值:max(列名称)

最小值:min(列名称)

平均值:AVG(列名称)

总和:  SUM(列名称)

总记录数:count(列名称)

查询有多少条商品信息

SELECT count(productName) from product;

查询所有商品平均零售价

select AVG(salePrice) FROM product;

查询商品总记录数(注意在Java中必须使用long接收)

SELECT count(*) FROM product;

查询分类为2的商品总数

SELECT count(*) FROM product WHERE dir_id = 2;

查询商品的最小零售价,最高零售价,以及所有商品零售价总和

SELECT min(salePrice),MAX(salePrice),SUM(saleprice) FROM product;

分组(GROUP BY 一般和聚集函数一起使用)

查询每个商品分类编号和每个商品分类各自的平均零售价;

SELECT dir_id,AVG(salePrice) FROM product GROUP BY dir_id;

查询每个商品分类编号和每个商品分类各自的商品总数;

SELECT dir_id,count(*) FROM product GROUP BY dir_id;

查询每个商品分类编号和每个商品分类中零售价大于100的商品总数;

SELECT dir_id,count(*) FROM product WHERE salePrice > 100 GROUP BY dir_id;

查询零售价总和大于1500的商品分类编号以及总零售价和;

where  条件后面不能使用聚集函数,HAVING后面可以使用聚合函数

SELECT dir_id,sum(salePrice) AS total FROM product GROUP BY dir_id HAVING total > 1500;

原文地址:https://www.cnblogs.com/limengkun/p/10781058.html