数据库的一些基本语法一
-- 创建作业数据库
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运行在分组前,所以不能使用聚合函数
数据库的一些基本语法一相关推荐
- 数据库 SQL语法一
建立表语句 CREATE TABLE TABLENAME(COL_NAME1 TYPE,COL_NAME2 TYPE,......); 常用TYPE说明 INT 正数 CHAR(LENGTH) 定长字 ...
- mysql数据定义语句有哪些_MySQL语法一:数据定义语句 钓鱼翁
MySQL语句语法主要分为以下三大类: 一.数据定义语句DDL(CREATE,ALTER,DROP,DECLARE) 数据定义语句是用于修改表结构的. 一).语法提炼: 二).由上图可知,数据定义语句 ...
- SQL语句的基本语法一
一.SELECT语句的完整语法为: SELECT[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table. ...
- 从零开始学 Web 之 ES6(三)ES6基础语法一
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- 数据库简介、SQL 语的增加删除修改查询命令
一.数据库简介 1.使用数据库的必要性 A.结构化存储大量数据,便于高效的检索和访问 B.有效地保持数据信息的一致性.完整性,降低数据冗余 C.满足数据共享和安全方面的要求 2.数据 描述事物的符号记 ...
- python基础语法有哪些-Python基础语法一
一.变量与数据类型 Python语言是面向对象编程语言,可以说在Python中一切皆对象.对象是某类型具体实例中的某一个实例,每个对象都有身份.类型和值. 身份(Identity)与对象都是唯一对应关 ...
- 【学习笔记】JS进阶语法一document对象
内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:write()方法和writeln()方法区别 <!DOCTYPE html> <html& ...
- 【学习笔记】JS进阶语法一window对象
内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:打开/关闭新窗口 <!DOCTYPE html> <html><head> ...
- 【学习笔记】JS进阶语法一DOM进阶
内容整理自<从0到1Javascript快速上手>下半部分-进阶语法篇 示例:为元素设置属性 <!DOCTYPE html> <html><head>& ...
最新文章
- C#如何判断线程池中所有的线程是否已经完成(转)
- C++模板:模板简述,函数模板详细说明【C++模板】(56)
- 360极速浏览器使用postman
- HTML5表格简单应用案例之[招聘需求表]
- django 的请求处理部分----WSGIHandler 源码分析 django1.5.5
- php 基础系列之 php快速入门
- [计蒜客]T1853 非常男女
- 聊聊、Spring WebApplicationInitializer
- php pdf 生成分页,关于XSL生成PDF分页的问题
- 微信好友检测助手App
- linux服务器系统时间和bios时间,Linux系统时间, 硬件BIOS时间的校准与同步
- 虚拟机无法重启服务器,windows2019虚拟机管理服务无法启动
- sql 创建学生表 课程表 成绩表
- 宝塔远程桌面助手linux密码不知道,宝塔远程桌面助手的教程
- 店铺与品牌的关键字搜索——wand(wead and)算法简介与改造
- vue项目实现摇一摇h5
- C语言结构体的1字节对齐(代码实现)
- JAVAEE面试指导
- 一个家庭幸不幸福,80%以上取决于女主人。有一种女人嫁给谁都幸福
- IMX8MP录像功能测试
热门文章
- OJ---腐烂的橘子
- phpstudyv8集成环境下,用Dwcs6链接数据库失败并显示:your php server doesnot have the Mysql module……
- java将silk文件转换成MP3
- 由 UWP 版网易云音乐闪退引发的博文
- 为什么我会性格懦弱?如何改变懦弱的性格?
- 华为官方模拟器eNSP_B500高速网盘下载——带CE系统
- win10系统服务器错误怎么解决方法,分享win10系统提示内部服务器错误的解决方案...
- WEB安全——CS中Beacon的使用
- Kb/s,KB/s 究竟如何换算
- wi-fi 频宽设置_为客人设置Wi-Fi的10种方法