1、SQL关键字优先级
查询零售价总和大于1500的商品分类编号以及总零售价和 要求:商品的零售价大30
商品的名称不能为null 每页数据取5条(第一页)并且结果按照降序排列
SELECT dir_id,SUM(IFNULL(salePrice,0)) AS ZH FROM product WHERE salePrice>30 AND productName IS NOT NULL GROUP BY dir_id LIMIT 0,5 HAVING ZH>1500 ORDER BY ZH DESC;
mysql关键字执行顺序: from where select GROUP BY limit HAVING ORDER BY
2、外键约束(FOREIGN KEY)(真实开发一般不用:效率比较低;后面用框架保真数据的准确性)
1.外键用于约束数据的准确性
2.外键用作数据的关联
3、笛卡尔积(在SQL里面叫做无条件的内连接)
1. 没有连接条件的表关系返回的结果(表之间数据组合的结果)。
2. 多表查询会产生笛卡尔积:
假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)}
3.在内连接、外链接、自查询、子查询中我们使用等值查询来避免笛卡尔积(on字句里面)
4、内连接(有条件)(当有一方数据为null时,这两个数据都会丢弃)
语法格式:SELECT 列 FROM 表1 INNER(可省略) JOIN 表2 ON 等值条件 INNER(可省略) JOIN 表3 on 等值条件
查询货品id,货品名称,货品所属分类名称
SELECT product.id,productName,productdir.id
FROM product INNER JOIN productdir
ON product.dir_id = productdir.id;
查询零售价大于200的无线鼠标
SELECT *
FROM product JOIN productdir
ON product.dir_id = productdir.id
where salePrice>200 AND productdir.id = 3;
5、外链接查询
SELECT 列 FROM 表1 LEFT JOIN 表2 ON 等值条件 LEFT JOIN 表3 on 等值条件
特点:数据是左边表为准,当右边的数据不匹配时 使用 null 来填充
查询每种商品分类的名称和包含的商品库存总数:
SELECT p.productName,d.dirName,s.store_num
FROM product p LEFT JOIN product_dir d ON p.dir_id=d.id LEFT JOIN product_stock s ON s.product_id =p.id
IFNULL(expr1,expr2):第一个值为需要填充的列,第二个值为需要填充的值,IFNULL(expr1,expr2)表示填充列的值,也就是填充列的数据
6、自查询(表自身具有等级,查询时将自身分为两个表)
查询员工编号大于其领导编号的每个员工的姓名、职位、领导名称。
SELECT A.ENAME,A.JOB,D.ENAME
FROM (SELECT EMPNO,ENAME,JOB,MGR FROM EMP) A LEFT JOIN(SELECT EMPNO,ENAME FROM EMP) D
ON A.MGR = D.EMPNO
WHERE A.EMPNO>D.EMPNO;
7、子查询(一个查询语句嵌套在另一个查询语句中,内层查询的结果可以作为外层查询条件。
一般的,嵌套在WHERE或者FROM字句中)
查询零售价比罗技MX1100更高的所有商品信息。
SELECT * FROM product where saleprice>(SELECT saleprice FROM product where productName='罗技MX1100')
DMl(数据操作:增删改)
8、插入数据:
方式一:
INSERT INTO tableName(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...) ,(值1,值2,...)
方式二:
INSERT INTO tableName VALUES(值1,值2,...)
方式三: 插入查询的结果
INSERT INTO tableName(列名1,列名2,...) SELECT 语句
9、修改数据
UPDATE tableName SET 列=值,列=值 WHERE 筛选条件(如果没有筛选条件,则会修改全部)
10、删除数据
DELETE FROM tableName WHERE 筛选条件(如果不加筛选条件,则会删除所有数据)
11、备份与恢复(工具(拷贝)与命令)
命令:
导出数据:
mysqldump -uroot -p密码 -h ip -P端口 库>本地地址
导入命令
mysql -uroot -p密码 -h ip -P端口 库<本地文件地址