10分钟学会MySQL

mysql数据库的读写分离

10分钟学会MySQL,其实只是个标题。10分钟肯定不能让大家从小白变成高手,但入门足够了。

因为最近公司招聘遇到了一个做了4年PHP开发,薪资要求1.2k/月。本身是没打算面试mysql这些题目的,毕竟太基础,不合适。所以先问了下缓存架构算法之类的。结果一问三不知。所以最后问题就变成了两个。一个是用PHP给[1,3,5,2,4,6,10,9,8]排个顺序,从小到大或从大到小均可。另外一道题就是有两个数据库表,需要查出picture字段不为空时的数据。

面试结果真是让人很无语。所以今天分享一篇博客。把MySQL常用的查询语句为大家列一下,基础不好或刚刚入门的朋友可以收藏下。

  1. #### SELECT 常用语句####
  2. #查询年龄在18-19的学生
  3. #select * from student where Sage between 18 and 19;
  4. #查询年龄不在18-19的学生
  5. #select * from student where Sage not between 18 and 19;
  6. #查询计算机科学系(CS系),数学系(MA系)和信息系(IS)学生
  7. #select * from student where Sdept in('CS','MA','IS');
  8. #查询既不是计算机系(IS系),也不是信息系(MA系)和信息系(IS系)学生
  9. #select * from student where Sdept not in('CS','MA','IS');
  10. #查询姓刘的学生
  11. #select * from student where Sname like '刘%';
  12. #查询姓欧阳,且全名为三个汉字的学生
  13. #select *from student where Sname like '欧阳_';
  14. #查询名字中第二个字为晨的学生
  15. #select * from student where Sname like '_晨';
  16. #查询不姓刘的学生
  17. #select * from student where Sname not like '刘%';
  18. #查询缺少成绩的学生的学号和相对的课程号
  19. #select sno,cno from sc where grade is null;
  20. #查询所有有成绩的学生的学号和课程号
  21. #select sno,cno from sc where grade is not null;
  22. #查询选修了3号课程的学生的学号,姓名和分数,按成绩降序排序
  23. #select sc.sno,student.sname,sc.grade from student,sc where cno=3 and student.sno=sc.sno order by grade desc;
  24. #查询全体学生,按所在系升序排序,同一个系按年龄降序
  25. #select * from student order by sdept asc,sage desc ;
  26. #查询学生总人数
  27. #select count(*) from student;
  28. #查询选修了课程的学生总人数
  29. #select count(distinct sno) from sc ;
  30. #计算3号课程的平均分
  31. #select avg(grade) from sc where cno=2;
  32. #查询学号201215121 选修课程的总分数
  33. #select sum(grade) from sc where sno='201215121';
  34. #查询每个学生及其选修课的情况
  35. #select * from student, sc where student.sno = sc.sno;
  36. #查询选修了2号课程且成绩在90分以上的所有学生
  37. #select * from sc where cno=2 and grade>90;
  38. #左外连接
  39. #select student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade from student left outer join sc on (student.sno = sc.sno);
  40. #多表连接
  41. #select student.sno,sname,cname,grade from student, sc, course where student.sno = sc.sno and course.cno = sc.cno
  42. #嵌套查询-查询选修了2号课程的学习姓名
  43. #select sname from student where sno in (select sno from sc where cno='2');
  44. #查询与刘晨在同一系学习的学生
  45. #select * from student where sdept = (select sdept from student where sname = '刘晨');
  46. #select * from student where sdept in (select sdept from student where sname = '刘晨');
  47. #select * from student s1,student s2 where s1.sdept = s2.sdept and s1.sname = '刘晨';
  48. #查询选修了信息系统的学生
  49. #select * from student,sc,course where sc.sno = student.sno and sc.cno = course.cno and course.cname = '信息系统'; ;
  50. #select * from student where sno in (select sno from sc where cno = ( select cno from course where cname  = '信息系统' ));
  51. #找出每个学生超过其选修平均成绩的课程号
  52. #select * from sc where grade > (select avg(grade) from sc where sno = sc.Sno);
  53. #查询非计算机科学系中比计算机科学系任意一个学生年龄小的学生
  54. #select * from student where sage < any (select sage from student) and sdept != 'cs';
  55. #select * from student where sage < (select max(sage) from student) and sdept != 'cs';
  56. #查询非计算机系中比计算机系所有年龄都要小的学生
  57. #select * from student where sage < all (select sage from student ) and sdept != 'cs';
  58. #select * from student where sage < (select min(sage) from student);
  59. #查询选修了2号课程的学生
  60. #select * from student where exists (select * from sc where cno = 2 and sc.sno = student.sno);
  61. #select * from student where sno in (select sno from sc where cno = 2);
  62. #查询没有选修2号课程的学生
  63. #select * from student where not exists (select * from sc where cno = 2 and sc.sno = student.sno);
  64. #select * from student where student.sno not in (select sc.sno from sc where sc.sno = 2);
  65. #查询选修了全部课程的学生
  66. -- select * from student where not exists 
  67. -- (
  68. --  select * from course where not exists  
  69. --  (
  70. --      select * from sc where sc.sno = student.sno and cno = course.cno
  71. --  )
  72. -- ) 
  73. -- select sno from 
  74. -- (
  75. --  select sno,count(*) as sum from sc group by sno  having sum = 
  76. --  (
  77. --      select count(*) from course
  78. --  )
  79. -- ) as A 
  80. # 集合查询 UNION (或,并集)
  81. #select * from student where Sname = '罗琪' UNION select * from student where Sname = '刘言曌';
  82. #select * from student where Sname = '罗琪' or Sname = '刘言曌';
  83. #找出每个学生超过自己选修课程平均成绩的课程号
  84. -- select * from sc,
  85. -- (
  86. --  select sno,avg(grade) as avg_grade from sc group by sno
  87. -- ) as A
  88. -- where A.sno = sc.sno and sc.grade > A.avg_grade;
  89. #### INSERT 常用语句 ####
  90. #将一个新学生插入到 Student 表中
  91. #insert into Student value(201215128, '曹志雄', '男', 20, 'MA');
  92. #insert into student(sno,sname,ssex,sage,sdept) values (201215207, '曹阿瞒','男',19, 'IS');
  93. #### UPDATE 常用语句 ####
  94. #修改某一个元组的值
  95. #将罗琪的年龄-1
  96. #update student set Sage = '18' where Sname = '罗琪'
  97. #修改多个元组的值
  98. #将所有的学生年龄-1
  99. #update Student set Sage = Sage - 1;
  100. #带子查询的修改语句
  101. #将计算机系的学生成绩+5
  102. -- update sc  
  103. -- set grade = grade + 5
  104. -- where sno in
  105. -- (select sno from student where sdept = 'CS');
  106. #### DELETE 常用语句 ####
  107. #先添加一条学生记录,然后删除他
  108. #insert into student value(201215130,'张三','男',19,'IS');
  109. #delete from student where sno = '201215130';
  110. #删除多条记录
  111. ##delete from sc;
  112. #### 空值的处理 ####
  113. #空值产生
  114. #添加一个学生,学院为NULL
  115. #insert into student value(201215208, '春日风','女',18,NULL);
  116. #将曹志雄的学院设置为NULL
  117. #update student set sdept = NULL where sname = '曹志雄';
  118. #空值判断
  119. #查询没有先行课的课程
  120. #select * from course where cpno is null;
  121. #查询有先行课的课程
  122. #select * from course where cpno is not null
  123. #### 视图常用语句 ####
  124. #创建一个男生视图
  125. -- create view is_boy 
  126. --  as 
  127. -- select * from student where ssex = '男';
  128. #查询视图
  129. #select * from is_boy where sage < 19
  130. #更新视图
  131. #update is_boy set sage = sage +1 where sname = '刘中江'
  132. #删除视图
  133. #drop view is_boy;

以上的MySQL语句对于开发人员来讲基本上都是很常见的。同时如果想把基础打牢,最好还是建议大家把MySQL内置的一些函数、语法仔细看一遍。不说能倒背如流,最起码在遇到问题时知道搜什么。

 

 

波波

发表评论

您必须 登录 才能发表留言!