简单学习三、Mysql语句之表内容操作

秒速五厘米 2022-05-27 03:14 259阅读 0赞

表内容的操作

1、增

  1. insert into (列名,列名...) values (值,值,值...)
  2. insert into (列名,列名...) values (值,值,值...),(值,值,值...)

70

  1. insert into (列名,列名...) select 列名,列名... from

70 1

2、删

  1. #删除表
  2. drop table 表名 #先清空表
  3. #清表数据
  4. delete from 表名
  5. delete from 表名 where 条件1 and 条件2

70 2

3、改

  1. update set 列名 '值' where 条件

70 3

4、查

  1. select * from
  2. select * from where 条件
  3. select 列名1,列名2,列名3 as 新列名 from where 条件 #as 更改列名3显示的列名

70 4

5、其他(条件、通配符、分页、排序、连表、组合、分组)

A、按条件
  1. mysql> select * from a;
  2. +-----+------------+------+----------+
  3. | nid | name | age | part_nid |
  4. +-----+------------+------+----------+
  5. | 1 | zhangsan | 18 | 2 |
  6. | 2 | wanwu | 18 | 2 |
  7. | 3 | lisi | 19 | 3 |
  8. | 4 | zhangfei | 22 | 5 |
  9. | 5 | wuhua | 12 | 1 |
  10. | 6 | laohu | 33 | 4 |
  11. | 7 | houyi | 23 | 2 |
  12. | 8 | zhengzheng | 33 | 5 |
  13. +-----+------------+------+----------+
  14. 8 rows in set (0.00 sec)
  15. ~~~A.a~~~ select * from where 条件1 and 条件2 and 条件3;
  16. mysql> select * from a where age = 23 and part_nid = 2;
  17. +-----+-------+------+----------+
  18. | nid | name | age | part_nid |
  19. +-----+-------+------+----------+
  20. | 7 | houyi | 23 | 2 |
  21. +-----+-------+------+----------+
  22. 1 row in set (0.00 sec)
  23. ~~~A.b~~~ select * from where nid between 2 and 5; #nid等于2到5范围内
  24. mysql> select * from a where nid between 2 and 5;
  25. +-----+----------+------+----------+
  26. | nid | name | age | part_nid |
  27. +-----+----------+------+----------+
  28. | 2 | wanwu | 18 | 2 |
  29. | 3 | lisi | 19 | 3 |
  30. | 4 | zhangfei | 22 | 5 |
  31. | 5 | wuhua | 12 | 1 |
  32. +-----+----------+------+----------+
  33. 4 rows in set (0.00 sec)
  34. ~~~A.c~~~ select * from where nid in (1,3,4) #nid 等于1或3或4
  35. mysql> select * from a where nid in (1,3,4);
  36. +-----+----------+------+----------+
  37. | nid | name | age | part_nid |
  38. +-----+----------+------+----------+
  39. | 1 | zhangsan | 18 | 2 |
  40. | 3 | lisi | 19 | 3 |
  41. | 4 | zhangfei | 22 | 5 |
  42. +-----+----------+------+----------+
  43. 3 rows in set (0.00 sec)
  44. ~~~A.e~~~ select * from where id not in (11,22,33)#id 不等于134
  45. mysql> select * from a where nid not in (1,3,4);
  46. +-----+------------+------+----------+
  47. | nid | name | age | part_nid |
  48. +-----+------------+------+----------+
  49. | 2 | wanwu | 18 | 2 |
  50. | 5 | wuhua | 12 | 1 |
  51. | 6 | laohu | 33 | 4 |
  52. | 7 | houyi | 23 | 2 |
  53. | 8 | zhengzheng | 33 | 5 |
  54. +-----+------------+------+----------+
  55. 5 rows in set (0.00 sec)
  56. ~~~A.f~~~ select * from where nid in (select nid from 表) #nid 是否包含在nid里
  57. #b表nid只有1-6
  58. mysql> select * from a where nid in (select nid from b);
  59. +-----+----------+------+----------+
  60. | nid | name | age | part_nid |
  61. +-----+----------+------+----------+
  62. | 1 | zhangsan | 18 | 2 |
  63. | 2 | wanwu | 18 | 2 |
  64. | 3 | lisi | 19 | 3 |
  65. | 4 | zhangfei | 22 | 5 |
  66. | 5 | wuhua | 12 | 1 |
  67. | 6 | laohu | 33 | 4 |
  68. +-----+----------+------+----------+
  69. 6 rows in set (0.00 sec)
B、通配符
  1. ~~~B.a~~~ select * from where 列名 like 'zh%' - zh开头的所有(多个字符串)
  2. mysql> select * from a where name like 'zhang%';
  3. +-----+----------+------+----------+
  4. | nid | name | age | part_nid |
  5. +-----+----------+------+----------+
  6. | 1 | zhangsan | 18 | 2 |
  7. | 4 | zhangfei | 22 | 5 |
  8. +-----+----------+------+----------+
  9. 2 rows in set (0.00 sec)
  10. ~~~B.b~~~ select * from where 列名 like 'zhangsa_' - zhengsa开头的所有(一个字符)
  11. mysql> select * from a where name like 'zhangsa_';
  12. +-----+----------+------+----------+
  13. | nid | name | age | part_nid |
  14. +-----+----------+------+----------+
  15. | 1 | zhangsan | 18 | 2 |
  16. +-----+----------+------+----------+
  17. 1 row in set (0.00 sec)
  18. ~~~B.c~~~ select * from where 列名 like '%ng%' - 列里面所有包含ng
  19. mysql> select * from a where name like '%ng%';
  20. +-----+------------+------+----------+
  21. | nid | name | age | part_nid |
  22. +-----+------------+------+----------+
  23. | 1 | zhangsan | 18 | 2 |
  24. | 4 | zhangfei | 22 | 5 |
  25. | 8 | zhengzheng | 33 | 5 |
  26. +-----+------------+------+----------+
  27. 3 rows in set (0.00 sec)
C、分页
  1. ~~~C.a~~~ select * from limit 2; - 2
  2. mysql> select * from a limit 2;
  3. +-----+----------+------+----------+
  4. | nid | name | age | part_nid |
  5. +-----+----------+------+----------+
  6. | 1 | zhangsan | 18 | 2 |
  7. | 2 | wanwu | 18 | 2 |
  8. +-----+----------+------+----------+
  9. 2 rows in set (0.00 sec)
  10. ~~~C.b~~~ select * from limit 2,5; - 从第2行开始的5
  11. select * from limit 5 offset 2 - 从第2行开始的5 #2种写法一样 尽量用这种
  12. mysql> select * from a limit 5 offset 2;
  13. +-----+----------+------+----------+
  14. | nid | name | age | part_nid |
  15. +-----+----------+------+----------+
  16. | 3 | lisi | 19 | 3 |
  17. | 4 | zhangfei | 22 | 5 |
  18. | 5 | wuhua | 12 | 1 |
  19. | 6 | laohu | 33 | 4 |
  20. | 7 | houyi | 23 | 2 |
  21. +-----+----------+------+----------+
  22. 5 rows in set (0.01 sec)
D、排序
  1. ~~~D.a~~~ select * from order by asc - 根据 “列” 从小到大排列
  2. mysql> select * from a order by part_nid;
  3. +-----+------------+------+----------+
  4. | nid | name | age | part_nid |
  5. +-----+------------+------+----------+
  6. | 5 | wuhua | 12 | 1 |
  7. | 1 | zhangsan | 18 | 2 |
  8. | 2 | wanwu | 18 | 2 |
  9. | 7 | houyi | 23 | 2 |
  10. | 3 | lisi | 19 | 3 |
  11. | 6 | laohu | 33 | 4 |
  12. | 4 | zhangfei | 22 | 5 |
  13. | 8 | zhengzheng | 33 | 5 |
  14. +-----+------------+------+----------+
  15. 8 rows in set (0.00 sec)
  16. ~~~D.b~~~ select * from order by desc - 根据 “列” 从大到小排列
  17. mysql> select * from a order by part_nid desc;
  18. +-----+------------+------+----------+
  19. | nid | name | age | part_nid |
  20. +-----+------------+------+----------+
  21. | 4 | zhangfei | 22 | 5 |
  22. | 8 | zhengzheng | 33 | 5 |
  23. | 6 | laohu | 33 | 4 |
  24. | 3 | lisi | 19 | 3 |
  25. | 1 | zhangsan | 18 | 2 |
  26. | 2 | wanwu | 18 | 2 |
  27. | 7 | houyi | 23 | 2 |
  28. | 5 | wuhua | 12 | 1 |
  29. +-----+------------+------+----------+
  30. 8 rows in set (0.00 sec)
  31. ~~~D.c~~~ select * from order by 1 desc,列2 asc - 根据 “列1 从大到小排列,如果相同则按列2从小到大排序
  32. mysql> select * from a order by age desc,age asc;
  33. +-----+------------+------+----------+
  34. | nid | name | age | part_nid |
  35. +-----+------------+------+----------+
  36. | 6 | laohu | 33 | 4 |
  37. | 8 | zhengzheng | 33 | 5 |
  38. | 7 | houyi | 23 | 2 |
  39. | 4 | zhangfei | 22 | 5 |
  40. | 3 | lisi | 19 | 3 |
  41. | 1 | zhangsan | 18 | 2 |
  42. | 2 | wanwu | 18 | 2 |
  43. | 5 | wuhua | 12 | 1 |
  44. +-----+------------+------+----------+
  45. 8 rows in set (0.00 sec)
E、分组 group by 必须在where之后,order by之前
  1. ~~~E.a~~~ select 列名1 from group by 列名1
  2. mysql> select part_nid from a group by part_nid;
  3. +----------+
  4. | part_nid |
  5. +----------+
  6. | 1 |
  7. | 2 |
  8. | 3 |
  9. | 4 |
  10. | 5 |
  11. +----------+
  12. 5 rows in set (0.00 sec)
  13. ~~~E.b~~~ select 列名1,列名2 from group by 列名1,列名2
  14. mysql> select part_nid,age from a group by part_nid,age;
  15. +----------+------+
  16. | part_nid | age |
  17. +----------+------+
  18. | 1 | 12 |
  19. | 2 | 18 |
  20. | 2 | 23 |
  21. | 3 | 19 |
  22. | 4 | 33 |
  23. | 5 | 22 |
  24. | 5 | 33 |
  25. +----------+------+
  26. 7 rows in set (0.00 sec)
  27. ~~~E.c~~~ select 列名1,列名2 from where 条件1 group by 列名,列名1 order by 列名1 desc
  28. mysql> select part_nid,age from a where age < 30 group by part_nid,age order by age desc;
  29. +----------+------+
  30. | part_nid | age |
  31. +----------+------+
  32. | 2 | 23 |
  33. | 5 | 22 |
  34. | 3 | 19 |
  35. | 2 | 18 |
  36. | 1 | 12 |
  37. +----------+------+
  38. 5 rows in set (0.00 sec)
  39. ~~~E.d~~~ select 列名1,count(列名2) from group by 列名1
  40. mysql> select part_nid,count(age) from a group by part_nid;
  41. +----------+------------+
  42. | part_nid | count(age) |
  43. +----------+------------+
  44. | 1 | 1 |
  45. | 2 | 3 |
  46. | 3 | 1 |
  47. | 4 | 1 |
  48. | 5 | 2 |
  49. +----------+------------+
  50. 5 rows in set (0.00 sec)
  51. ~~~E.e~~~ select 列名1 from group by 列名1 having max(列名2) > 条件
  52. mysql> select part_nid from a group by part_nid having max(age) > 30;
  53. +----------+
  54. | part_nid |
  55. +----------+
  56. | 4 |
  57. | 5 |
  58. +----------+
  59. 2 rows in set (0.00 sec)

F、连表

  1. mysql> select * from a;
  2. +-----+------------+------+----------+
  3. | nid | name | age | part_nid |
  4. +-----+------------+------+----------+
  5. | 1 | zhangsan | 18 | 2 |
  6. | 2 | wanwu | 18 | 2 |
  7. | 3 | lisi | 19 | 3 |
  8. | 4 | zhangfei | 22 | 5 |
  9. | 5 | wuhua | 12 | 1 |
  10. | 6 | laohu | 33 | 4 |
  11. | 7 | houyi | 23 | 2 |
  12. | 8 | zhengzheng | 33 | 5 |
  13. +-----+------------+------+----------+
  14. 8 rows in set (0.00 sec)
  15. mysql> select * from b;
  16. +-----+-----------+
  17. | nid | caption |
  18. +-----+-----------+
  19. | 1 | it |
  20. | 2 | 驯兽师 |
  21. | 3 | 飞行员 |
  22. | 4 | 清洁员 |
  23. | 5 | 所长 |
  24. | 6 | 经理 |
  25. +-----+-----------+
  26. 6 rows in set (0.00 sec)
  27. ~~~F.a~~~ 关联显示
  28. select A.列名1, A.列名2, B.列名2
  29. from A,B
  30. Where A.列名3 = B.列名3
  31. mysql> select a.nid,a.name,a.age,b.caption from a,b where a.part_nid = b.nid;
  32. +-----+------------+------+-----------+
  33. | nid | name | age | caption |
  34. +-----+------------+------+-----------+
  35. | 5 | wuhua | 12 | it |
  36. | 1 | zhangsan | 18 | 驯兽师 |
  37. | 2 | wanwu | 18 | 驯兽师 |
  38. | 7 | houyi | 23 | 驯兽师 |
  39. | 3 | lisi | 19 | 飞行员 |
  40. | 6 | laohu | 33 | 清洁员 |
  41. | 4 | zhangfei | 22 | 所长 |
  42. | 8 | zhengzheng | 33 | 所长 |
  43. +-----+------------+------+-----------+
  44. 8 rows in set (0.00 sec)
  45. ~~~F.b~~~ 无对应关系则不显示
  46. select A.列名1, A.列名2, B.列名2
  47. from A inner join B
  48. on A.列名3 = B.列名3
  49. mysql> select a.nid,a.name,a.age,b.caption from a inner join b where a.part_nid = b.nid;
  50. +-----+------------+------+-----------+
  51. | nid | name | age | caption |
  52. +-----+------------+------+-----------+
  53. | 5 | wuhua | 12 | it |
  54. | 1 | zhangsan | 18 | 驯兽师 |
  55. | 2 | wanwu | 18 | 驯兽师 |
  56. | 7 | houyi | 23 | 驯兽师 |
  57. | 3 | lisi | 19 | 飞行员 |
  58. | 6 | laohu | 33 | 清洁员 |
  59. | 4 | zhangfei | 22 | 所长 |
  60. | 8 | zhengzheng | 33 | 所长 |
  61. +-----+------------+------+-----------+
  62. 8 rows in set (0.00 sec)
  63. ~~~F.c~~~ A表所有显示,如果B中无对应关系,则值为null
  64. select A.列名1, A.列名2, B.列名2
  65. from A left join B
  66. on A.列名3 = B.列名3
  67. mysql> select a.nid,a.name,a.age,b.caption from a left join b on a.part_nid = b.nid;
  68. +-----+------------+------+-----------+
  69. | nid | name | age | caption |
  70. +-----+------------+------+-----------+
  71. | 5 | wuhua | 12 | it |
  72. | 1 | zhangsan | 18 | 驯兽师 |
  73. | 2 | wanwu | 18 | 驯兽师 |
  74. | 7 | houyi | 23 | 驯兽师 |
  75. | 3 | lisi | 19 | 飞行员 |
  76. | 6 | laohu | 33 | 清洁员 |
  77. | 4 | zhangfei | 22 | 所长 |
  78. | 8 | zhengzheng | 33 | 所长 |
  79. +-----+------------+------+-----------+
  80. 8 rows in set (0.00 sec)
  81. ~~~F.e~~~ B表所有显示,如果B中无对应关系,则值为null
  82. select A.列名1, A.列名2, B.列名2
  83. from A right join B
  84. on A.列名3 = B.列名3
  85. mysql> select a.nid,a.name,a.age,b.caption from a right join b on a.part_nid = b.nid;
  86. +------+------------+------+-----------+
  87. | nid | name | age | caption |
  88. +------+------------+------+-----------+
  89. | 1 | zhangsan | 18 | 驯兽师 |
  90. | 2 | wanwu | 18 | 驯兽师 |
  91. | 3 | lisi | 19 | 飞行员 |
  92. | 4 | zhangfei | 22 | 所长 |
  93. | 5 | wuhua | 12 | it |
  94. | 6 | laohu | 33 | 清洁员 |
  95. | 7 | houyi | 23 | 驯兽师 |
  96. | 8 | zhengzheng | 33 | 所长 |
  97. | NULL | NULL | NULL | 经理 |
  98. +------+------------+------+-----------+
  99. 9 rows in set (0.00 sec)

G、组合

  1. ~~~G.a~~~ 组合,自动处理重合
  2. select 列名 from A union select 列名 from B
  3. mysql> select nid from a union select nid from b;
  4. +-----+
  5. | nid |
  6. +-----+
  7. | 1 |
  8. | 2 |
  9. | 3 |
  10. | 4 |
  11. | 5 |
  12. | 6 |
  13. | 7 |
  14. | 8 |
  15. +-----+
  16. 8 rows in set (0.00 sec)
  17. ~~~G.b~~~ 组合,不处理重合
  18. select 列名 from A union all select 列名 from B
  19. mysql> select nid from a union all select nid from b;
  20. +-----+
  21. | nid |
  22. +-----+
  23. | 1 |
  24. | 2 |
  25. | 3 |
  26. | 4 |
  27. | 5 |
  28. | 6 |
  29. | 7 |
  30. | 8 |
  31. | 1 |
  32. | 2 |
  33. | 3 |
  34. | 4 |
  35. | 5 |
  36. | 6 |
  37. +-----+
  38. 14 rows in set (0.00 sec)

发表评论

表情:
评论列表 (有 0 条评论,259人围观)

还没有评论,来说两句吧...

相关阅读