31.mysql学习心得

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'),'[email protected]');

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

 

 

猜你喜欢

转载自blog.csdn.net/u014590757/article/details/80359708