-- 创建作业数据库
CREATE  DATABASE homework;-- 创建学生表CREATE TABLE t_student(s_id INT PRIMARY KEY AUTO_INCREMENT,s_name VARCHAR(10),s_sex VARCHAR(5),s_birthday DATE,s_grade INT,s_class VARCHAR(10)
);INSERT INTO t_student (s_name,s_sex,s_birthday,s_grade,s_class) VALUES ('张无忌','男','1988-01-05',99,'T120'),('赵敏','女','1988-09-05',79,'T121'),('刘基','男','1988-04-05',89,'T120'),('李小璐','女','1978-01-05',59,'T120'),('王建国','男','1988-05-15',39,'T120'),('唐伯虎','男','1988-10-25',69,'T120'),('黎波','女','1990-12-14',91,'T120'),('张伯伦','男','1984-02-13',24,'T120'),('蔡国庆','男','1982-11-15',88,'T120'),('吉拉','女','1978-05-23',35,'T121'),('赵晓','女','1988-04-23',55,'T121'),('李连杰','男','1968-03-13',77,'T121'),('王国平','男','1972-02-03',88,'T121'),('王建','男','1989-01-16',92,'T121');-- 1.把刘基的名字修改为刘伯温
UPDATE t_student SET s_name='刘伯温' WHERE s_name='刘基';-- 2.删除姓名为唐伯虎的学生
DELETE FROM t_student WHERE s_name='唐伯虎'; -- 3.查询出所有姓名包括'伯'的所有的人员的信息
SELECT * FROM t_student WHERE s_name LIKE '%伯%';-- 4,查询T120班所有的女生。
SELECT * FROM t_student WHERE s_sex='女' AND s_class='T120';-- 5,查询前5条80后的学生的信息
SELECT * FROM t_student WHERE s_birthday>='1980-01-01' LIMIT 0,5;-- 6,查询T120班,所有不及格的学生
SELECT * FROM t_student WHERE s_grade<60 AND s_class='T120';-- 7、查询所有的班级
SELECT DISTINCT s_class FROM t_student;-- 8、查询所有缺考学生
SELECT * FROM t_student WHERE s_grade IS NULL;-- 9、将T121班的学生,按成绩降序排列显示
SELECT * FROM t_student WHERE s_class='T121' ORDER BY s_grade DESC;-- 10、查询所有成绩在80分以上的90后学生。
SELECT * FROM t_student WHERE s_grade>80 AND s_birthday>='1990-01-01';-- 给指定条件的学生全部加分
UPDATE t_student SET s_grade=s_grade+5 WHERE s_class='T121';-- 显示所有学生的成绩并且追加评价
-- ts 表示这个表的别名 ,case when 表示赛选条件  类似于 java switch 语句
-- 别名是来区分多个表,例如我要查询一个表中的价格,和另外一个表中的编号
SELECT ts.*,(CASE WHEN s_grade>=90 THEN '优秀'WHEN s_grade>=80 AND s_grade <90 THEN '良好'WHEN s_grade>=60 AND s_grade<80 THEN '一般'ELSE  '很差'END
)  '评价',(CASE WHEN s_birthday >='1970-01-01' AND s_birthday <'1980-01-01' THEN '七0后'WHEN s_birthday>='1980-01-01' AND s_birthday <'1990-01-01' THEN '80后'WHEN s_birthday>='1990-01-01' AND s_birthday<'2000-01-01' THEN '90后'ELSE '其他年代'END
)'年代' FROM t_student ts;-- 给列写别名
SELECT s_id '编号',s_name '学生名字' FROM t_student;SELECT ts.*,(CASE WHEN s_birthday >='1970-01-01' AND s_birthday <'1980-01-01' THEN '70后'WHEN s_birthday>='1980-01-01' AND s_birthday <'1990-01-01' THEN '80后'WHEN s_birthday>='1990-01-01' AND s_birthday<'2000-01-01' THEN '90后'ELSE '其他年代'END
)AS'年代' FROM t_student  AS ts;INSERT INTO t_student (s_name,s_sex,s_birthday,s_class) VALUES ('张小花','女','1986-02-12','T120');-- 给T120 加2分 给T121 减去2分 其他不变
UPDATE  t_student SET s_grade=(CASE WHEN s_class='T120' THEN s_grade+2WHEN s_class='T121' THEN s_grade-2ELSE s_gradeEND
);
-- count() 颜色粉色,里面是*表示所有行,里面有具体的列名,表示统计该列所有非null的行数
SELECT COUNT(*),COUNT(s_grade) FROM t_student ;
-- sum() 统计某一列总和
SELECT SUM(s_grade) FROM t_student;
-- avg() 求某一列的 平均分( avg 不会把值为null 的加入计算中)
-- 如果要计算为null值的元素 sum(s_grade)/count(*)
SELECT AVG(s_grade)AS '参考人员平均分',SUM(s_grade)/COUNT(*) AS '总体平均分' FROM t_student;
-- 计算最高分和最低分 max() min()
-- 需要注意的是,函数和后面的括号之间不要有空格
SELECT MAX(s_grade)AS'最高分',MIN(s_grade)AS '最低分' FROM t_student;
-- 统计属于某个组的所有人
SELECT s_class,COUNT(*) FROM t_student GROUP BY s_class;
-- 统计每个班的最高分和最低分
SELECT s_class,MAX(s_grade),MIN(s_grade) FROM t_student GROUP BY s_class;
-- 统计某个范围内的总人数, 在then后面必须要加一个东西,1 '',都行
SELECT s_class,COUNT(CASE WHEN s_grade>=90 THEN '' END)AS '统计90以上',COUNT(CASE WHEN s_grade>=80 AND s_grade<90 THEN '' END)AS '统计80-90',COUNT(CASE WHEN s_grade IS NULL THEN '' END)AS '缺考' FROM t_student GROUP BY s_class;-- 找出人数大于8个人的班级 ,having 和 where 都是过滤条件,但是 where 在group by 前执行
-- having 在group by 后执行
SELECT s_class FROM t_student GROUP BY s_class HAVING COUNT(*)>=8;-- SQL 执行顺序, from-->where-->group by--> select -->having -->order by
-- 因为执行属性 可以直接用别名来使用 下列的 count(*) c,c是别名,因为select 在having前执行 所以可以 c>=8
SELECT s_class,COUNT(*) c FROM t_student GROUP BY s_class HAVING c>=8;-- 在分组查询中,只能是分组字段和聚合函数 count sum,avg max min ,因为where运行在分组前,所以不能使用聚合函数

数据库的一些基本语法一相关推荐

  1. 数据库 SQL语法一

    建立表语句 CREATE TABLE TABLENAME(COL_NAME1 TYPE,COL_NAME2 TYPE,......); 常用TYPE说明 INT 正数 CHAR(LENGTH) 定长字 ...

  2. mysql数据定义语句有哪些_MySQL语法一:数据定义语句 钓鱼翁

    MySQL语句语法主要分为以下三大类: 一.数据定义语句DDL(CREATE,ALTER,DROP,DECLARE) 数据定义语句是用于修改表结构的. 一).语法提炼: 二).由上图可知,数据定义语句 ...

  3. SQL语句的基本语法一

    一.SELECT语句的完整语法为: SELECT[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table. ...

  4. 从零开始学 Web 之 ES6(三)ES6基础语法一

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  5. 数据库简介、SQL 语的增加删除修改查询命令

    一.数据库简介 1.使用数据库的必要性 A.结构化存储大量数据,便于高效的检索和访问 B.有效地保持数据信息的一致性.完整性,降低数据冗余 C.满足数据共享和安全方面的要求 2.数据 描述事物的符号记 ...

  6. python基础语法有哪些-Python基础语法一

    一.变量与数据类型 Python语言是面向对象编程语言,可以说在Python中一切皆对象.对象是某类型具体实例中的某一个实例,每个对象都有身份.类型和值. 身份(Identity)与对象都是唯一对应关 ...

  7. 【学习笔记】JS进阶语法一document对象

    内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:write()方法和writeln()方法区别 <!DOCTYPE html> <html& ...

  8. 【学习笔记】JS进阶语法一window对象

    内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:打开/关闭新窗口 <!DOCTYPE html> <html><head> ...

  9. 【学习笔记】JS进阶语法一DOM进阶

    内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:为元素设置属性 <!DOCTYPE html> <html><head>& ...

最新文章

  1. C#如何判断线程池中所有的线程是否已经完成(转)
  2. C++模板:模板简述,函数模板详细说明【C++模板】(56)
  3. 360极速浏览器使用postman
  4. HTML5表格简单应用案例之[招聘需求表]
  5. django 的请求处理部分----WSGIHandler 源码分析 django1.5.5
  6. php 基础系列之 php快速入门
  7. [计蒜客]T1853 非常男女
  8. 聊聊、Spring WebApplicationInitializer
  9. php pdf 生成分页,关于XSL生成PDF分页的问题
  10. 微信好友检测助手App
  11. linux服务器系统时间和bios时间,Linux系统时间, 硬件BIOS时间的校准与同步
  12. 虚拟机无法重启服务器,windows2019虚拟机管理服务无法启动
  13. sql 创建学生表 课程表 成绩表
  14. 宝塔远程桌面助手linux密码不知道,宝塔远程桌面助手的教程
  15. 店铺与品牌的关键字搜索——wand(wead and)算法简介与改造
  16. vue项目实现摇一摇h5
  17. C语言结构体的1字节对齐(代码实现)
  18. JAVAEE面试指导
  19. 一个家庭幸不幸福,80%以上取决于女主人。有一种女人嫁给谁都幸福
  20. IMX8MP录像功能测试

热门文章

  1. OJ---腐烂的橘子
  2. phpstudyv8集成环境下,用Dwcs6链接数据库失败并显示:your php server doesnot have the Mysql module……
  3. java将silk文件转换成MP3
  4. 由 UWP 版网易云音乐闪退引发的博文
  5. 为什么我会性格懦弱?如何改变懦弱的性格?
  6. 华为官方模拟器eNSP_B500高速网盘下载——带CE系统
  7. win10系统服务器错误怎么解决方法,分享win10系统提示内部服务器错误的解决方案...
  8. WEB安全——CS中Beacon的使用
  9. Kb/s,KB/s 究竟如何换算
  10. wi-fi 频宽设置_为客人设置Wi-Fi的10种方法