1. 不要用select * 代替所有的select XX,XX字段,增加代码可读性
2. And优先级高于or,所以要or得先加小括号。否则会出现andxx再or的这种情况发生select detail_id as id, product_name as name, product_price as pricefrom order_detail where product_price>100 and (detail_id=66 or detail_id=77);
3. Like %A%,模糊查询,_A,占位符
4. Order by 排序 desc,降序,asc,升序
5. 多个字段的Order by,优先级从左到右,用,隔开
select detail_id as id, product_name as name, product_priceas price from order_detail order by product_name,detail_id;
6. Rand() 范围:0-1
7. Count(*) 是包含了null值,count(字段)不计算null值
8. distinct 去重 selectdistinct product_name,product_price from order_detail;
9. group by 分组 取得每个组最大值。selectproduct_name ,max(product_price) as maxprice from order_detail group by product_name;
10. having 符合要求的部分用having函数,跟group by一起使用 selectjob,avg(sal) as maxsal from emp group by job having maxsal>2000;
11. SQL语句如下:selectxxx from xxx where xxx group by xxx having xxx order by xxx
12. 笛卡尔积若两张表连接查询没有任何条件限制,最终查到是两张表记录的乘积
13. 表的内(左,右)连接select e.ename,d.dname from emp e inner(left,right) join deptd on e.deptno=d.deptno;
14. 内连接时,相应的有条件的会给连接上,但是如果在B表没找到条件时,A表的数据会丢失。左外连接则A表的数据都有,B表有的数据则显示,没有则显示null。
15. 自连接,select a.ename as yuangongename,b.ename as laobanename from emp as aleft join emp as b on a.mgr=b.empno order by b.ename;
16. 全连接多个表与A表相互关联,各自去连接即可select a.ename,d.dname,b.ename,s.grade from emp a left joindept d on a.deptno=d.deptno left join emp b on a.mgr=b.empno left join salgrades on a.sal between losal and hisal;
17. 子查询把查询结果当成一个表select t.avgsal,s.grade from (select e.deptno,avg(e.sal) asavgsal from emp e group by e.deptno) t left join salgrade s on t.avgsal betweens.losal and s.hisal order by grade asc
18. Union 并集
19. Limit 取得前N个,以下是从第一行开始,取得前3行数据select t.avgsal,s.grade from (select e.deptno,avg(e.sal) asavgsal from emp e group by e.deptno) t left join salgrade s on t.avgsal betweens.losal and s.hisal limit 0,3;
20. VARCHAR和CHAR CHAR静态分配空间,VARCHAR动态分配空间
21. Create table xxx(); 创建表
22. Drop table xxx;删除表
23. create table emp_copy as select* from emp; 复制表
24. 插入数据insert into t_student(no,name,gender,birth,email) values(1,'zxw','1',str_to_date('2018-5-17','%%Y-%m-%d'),'zxw@qq.com');
25. 更新数据update t_student set name='w' where no=1;
26. 删除数据delete from t_student where no=1;
27. Alter table 修改表(新增字段,删除字段,修改字段数据长度,修改字段名,)alter table t_student add cell int(16);alter table t_student dropcell;alter table t_student modify name varchar(16);alter table t_student changename myname varchar(16);
28. 非空约束 not null
29. 唯一约束,可以列约束,也可以联合约束。 unique
30. 非空且唯一 not null unique
31. 主键效果与not null unique,但多了索引功能。Primary key
32. 主键自增 auto_increment
33. 外键约束在一对多的情况下,在多的表加上外键约束,减少数据冗余
34. On delete cascade 外键级联删除
35. On update cascade 外键级联更新
36. 存储引擎 MYSQL特有的!show engines; 查询数据库的存储引擎
37. Alter table xxx engine=存储引擎名称 来修改表的存储引擎
38. 创建索引create (unique) index 索引名 on 表名(列名)
39. 创建视图create view myview as select * from t_stu;
40. 视图作用隐藏表的实现细节
41. 视图作用提高检索的效率
42. 建表关系设计多对多,用第三张表来对应关系;一对多,在多的表上加外键约束;一对一,分两张表存储,外键唯一
43. 开启事务start transaction xxx xxx commit(rollback);