1. 表操作的指令

  1. -- 创建一个数据库
  2. -- CREATE DATABASE stu_system CHARACTER SET utf8 COLLATE utf8_general_ci;
  3. -- 创建一个数据表
  4. -- CREATE TABLE stu_info(
  5. -- si_id INT,
  6. -- si_name VARCHAR(30),
  7. -- si_score INT,
  8. -- si_start_time DATETIME
  9. -- );
  10. -- 删除一个表
  11. -- DROP TABLE stu_info;
  12. -- 给已经存在的表格,添加一个新的字段
  13. -- ALTER TABLE 表名 ADD 字段名 类型 [FIRST] [AFTER 字段名]
  14. -- 我要在分数的后面添加一个班级的字段
  15. -- ALTER TABLE stu_info ADD si_class INT AFTER si_score;
  16. -- 修改字段的类型
  17. -- ALTER TABLE stu_info MODIFY si_score DOUBLE;
  18. -- 查看表的创建信息
  19. SHOW CREATE TABLE stu_info
  20. -- 创建一个数据库
  21. -- CREATE DATABASE stu_system CHARACTER SET utf8 COLLATE utf8_general_ci;
  22. -- 创建一个数据表
  23. -- CREATE TABLE stu_info(
  24. -- si_id INT,
  25. -- si_name VARCHAR(30),
  26. -- si_score INT,
  27. -- si_start_time DATETIME
  28. -- );
  29. -- 删除一个表
  30. -- DROP TABLE stu_info;
  31. -- 给已经存在的表格,添加一个新的字段
  32. -- ALTER TABLE 表名 ADD 字段名 类型 [FIRST] [AFTER 字段名]
  33. -- 我要在分数的后面添加一个班级的字段
  34. -- ALTER TABLE stu_info ADD si_class INT AFTER si_score;
  35. -- 修改字段的类型,这个只能修改类型
  36. -- ALTER TABLE stu_info MODIFY si_score DOUBLE;
  37. -- 修改字段的名称和类型
  38. -- ALTER TABLE stu_info CHANGE si_score si_stu_score INT;
  39. -- 查看表的创建信息
  40. -- SHOW CREATE TABLE stu_info;

2. 数据增 删改的指令

  1. -- 添加
  2. -- 为表中添加一条数据
  3. -- INSERT INTO 表名 VALUES(数据,数据,数据)
  4. -- INSERT INTO stu_info VALUES
  5. -- (1,"xiaoming",98,1,"2021-8-27 08:55:25");
  6. -- 为指定的字段添加一条数据
  7. -- 不指定的字段,需要能够为空
  8. -- INSERT INTO 表名(字段名,) VALUES(数据,)
  9. -- INSERT INTO stu_info ( si_id, si_name )
  10. -- VALUES
  11. -- ( 2, "xiaohong" );-- 一次性的添加多条数据
  12. INSERT INTO stu_info
  13. VALUES
  14. ( 3, "xiaobai","男", 75, 2, "2021-8-27 08:55:25" ),
  15. ( 4, "xiaolv","男", 80, 3, "2021-8-27 08:55:25" ),
  16. ( 5, "xiaolan","男", 65, 5, "2021-8-27 08:55:25" ),
  17. ( 6, "xiaohei", "男", 55, 3, "2021-8-27 08:55:25" ),
  18. ( 7, "xiaoqing","男", 78, 2, "2021-8-27 08:55:25" ),
  19. ( 8, "daming", "男", 95, 1, "2021-8-27 08:55:25" );
  20. -- 修改数据
  21. -- UPDATE 表名 SET 字段 = 数值 WHERE 条件。、
  22. -- 修改小红的信息
  23. -- UPDATE stu_info SET
  24. -- si_stu_score = 83,si_class=3,si_start_time="2021-8-27 08:55:25"
  25. -- WHERE si_name = "xiaohong"
  26. -- ;
  27. -- -- 将所有的3班的人数据都变为75
  28. -- UPDATE stu_info SET
  29. -- si_stu_score = 75
  30. -- WHERE si_class = 3;
  31. -- 删除数据
  32. -- DELETE FROM stu_info WHERE si_name = "xiaohong";
  33. -- 关于约束
  34. -- 主键 非空 唯一 默认数据
  35. DROP TABLE stu_info;
  36. -- 约束有两种添加方式:
  37. -- 第一种 创建表的时候添加
  38. CREATE TABLE stu_info
  39. (
  40. -- 创建ID字段,主键约束,自动增长
  41. si_id INT PRIMARY KEY AUTO_INCREMENT,
  42. -- 姓名字段,唯一约束,不为空
  43. si_name VARCHAR(30) UNIQUE NOT NULL ,
  44. -- 以下字段,都不能为空
  45. si_sex VARCHAR(2) NOT NULL DEFAULT "男",
  46. si_score INT NOT NULL,
  47. si_class INT ,
  48. si_start_time DATETIME
  49. );
  50. INSERT INTO stu_info ( si_id, si_name,si_score )
  51. VALUES
  52. ( 2, "xiaohong",95);
  53. -- 第二种 创建表之后,进行修改
  54. -- ALTER TABLE 表名 CHANGE COLUMN 字段 字段+信息 约束
  55. ALTER TABLE stu_info CHANGE COLUMN si_class si_class INT NOT NULL;

3. 查询指令

  1. -- -- 查询出所有的数据
  2. -- SELECT * FROM stu_info;
  3. --
  4. -- -- 只查询姓名和班级
  5. -- SELECT si_name,si_class FROM stu_info;
  6. --
  7. -- -- 只想知道有哪些班级
  8. -- -- 类似于这样的需求,通常都不用全部显示,可以去重
  9. -- SELECT DISTINCT si_class FROM stu_info;
  10. --
  11. -- -- 对于查询到的结果还可以运算
  12. -- SELECT DISTINCT si_class+2 FROM stu_info;
  13. --
  14. -- -- 我们可以给查询到的表头起一个别名
  15. -- SELECT DISTINCT si_class+2 as 班级加2 FROM stu_info;
  16. --
  17. -- SELECT DISTINCT si_name as 姓名,si_class as 班级 FROM stu_info;
  18. --
  19. -- -- 带条件的查询
  20. --
  21. -- -- 查及格的同学的姓名
  22. -- SELECT si_name as 姓名,si_score as 分数 FROM stu_info WHERE
  23. -- si_score >=60;
  24. -- -- 查询分数段再7080之间的同学
  25. -- SELECT si_name as 姓名,si_score as 分数 FROM stu_info
  26. -- WHERE
  27. -- si_score BETWEEN 70 AND 80;
  28. -- -- (si_score>=70)AND(si_score<=80);
  29. -- -- 查询1班和3班同学的姓名和分数
  30. -- SELECT si_name as 姓名,si_score as 分数,si_class FROM stu_info
  31. -- WHERE
  32. -- si_class =1 OR si_class=3;
  33. -- -- 查询姓 "xiao"的同学
  34. -- -- like 是模糊匹配
  35. -- SELECT si_name as 姓名,si_score as 分数,si_class FROM stu_info
  36. -- WHERE
  37. -- si_name like "xiao%"
  38. -- -- 查询名字中含有l的同学
  39. -- SELECT si_name as 姓名,si_score as 分数,si_class FROM stu_info
  40. -- WHERE
  41. -- si_name like "%l%"
  42. -- -- 查询以第2个字母是i的同学
  43. -- SELECT si_name as 姓名,si_score as 分数,si_class FROM stu_info
  44. -- WHERE
  45. -- si_name like "_i%"
  46. --
  47. --
  48. -- -- 对查询的结果进行排序
  49. -- -- ORDER BY DESC降序 ASC 升序 默认是升序
  50. -- SELECT * FROM stu_info ORDER BY si_score DESC;
  51. --
  52. -- -- 内置函数
  53. -- -- COUNT 获取计数
  54. -- -- 获取一下3班有多少个同学
  55. -- select COUNT(*) as 3班学生数 FROM stu_info WHERE si_class =3;
  56. --
  57. -- -- MAX 获取最大值
  58. -- -- 获取全校第一名
  59. -- select MAX(si_score) FROM stu_info ;
  60. -- -- SUM 获取和
  61. -- select SUM(si_score) FROM stu_info ;
  62. -- -- AVG 获取平均值
  63. -- select AVG(si_score) FROM stu_info ;
  64. -- -- NOW 获取当前时间
  65. -- select NOW();
  66. -- 分组 GROUP BY
  67. -- 我们对于某一个字段进行分组
  68. -- 就是把相同的数据作为一组,我们可以对一组中某些字段 做函数操作
  69. -- 从而获取出属于这一组的信息。
  70. SELECT si_class,AVG(si_score), COUNT(*) FROM stu_info GROUP BY si_class;
  71. -- 多表查询,在两张表中进行查询
  72. -- 分别查询两个表
  73. select * FROM stu_info;
  74. select * FROM class_info;
  75. -- 直接多表查,得到的是笛卡尔积矩阵乘法
  76. select * FROM stu_info,class_info;
  77. -- 查询学生信息,以及它对应的班级信息
  78. select * FROM stu_info,class_info WHERE
  79. stu_info.si_class = class_info.ci_id;
  80. -- 我要查询xiaobai的老师是谁
  81. -- 在多表查询的结果中,按照条件去筛选
  82. select si_name,ci_teacher_name FROM stu_info,class_info
  83. WHERE
  84. stu_info.si_class = class_info.ci_id AND
  85. si_name = "xiaobai";
  86. -- 子查询
  87. -- IN EXISTS ANY ALL
  88. -- 想要获取所有女教的学生
  89. -- 先获取出所有的女老师
  90. INSERT INTO class_info VALUES
  91. (5,"hanmeimei",7,"女");
  92. -- (1,"dunlaoshi",1,"男"),
  93. -- (2,"dunlaoshi",3,"男"),
  94. -- (3,"gailaoshi",4,"男"),
  95. -- (4,"dahong",5,"女");
  96. SELECT* FROM stu_info WHERE
  97. si_class IN
  98. (SELECT ci_id FROM class_info WHERE ci_sex = "女");
  99. -- 在一个查询中,需要用到另外一个查询的结果
  100. -- -- 获取全校第一名
  101. -- 先获取了最高分,然后把分数去最高分的结果中去匹配,然后就能够
  102. -- 获取出全部信息。
  103. SELECT * FROM stu_info WHERE si_score IN
  104. (select MAX(si_score) FROM stu_info);