
数据库基础-MySql8.0(第二篇)--DML和DQL
发布日期:2021-05-06 03:20:48
浏览次数:24
分类:原创文章
本文共 4050 字,大约阅读时间需要 13 分钟。
MySql基础篇
数据操纵语言DML
/*插入数据 方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n); 方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n; 方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n); 方式4:INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配)*/INSERT INTO student(NAME,sex,birthday,grade,score,phone,address,reg_time) VALUE('tom','男','2000-1-2',1,98,'15929101866','xian',NOW())INSERT INTO student SET NAME='张三',sex='男',birthday='2020-1-3',grade=2,score=97,phone='15959421585',address='陕西',reg_time=NOW()INSERT INTO student(NAME,sex,birthday,grade,score,phone,address,reg_time) VALUES('李四','男','2000-1-2',3,98,'15929101899','咸阳',NOW()), ('王五','女','2000-1-4',3,98,'15929101888','咸阳',NOW()), ('李六','男','2000-1-5',3,98,'15929101877','咸阳',NOW())-- 表名后不描述,表示向表中所有的列插入数据 值得数量应与列的数量相匹配 INSERT INTO stu(num,NAME,sex,birthday,grade,score,phone,address,reg_time) SELECT * FROM student -- 修改表数据 UPDATE student SET NAME = '李四',sex='男'-- 添加条件 UPDATE student SET NAME = '赵六',sex='女' WHERE num =2233 -- 删除语句 DELETE FROM student WHERE num = 2237 -- 清空表数据 TRUNCATE TABLE student ALTER TABLE student MODIFY num INT AUTO_INCREMENT
DQL数据查询语句
-- select 查询结果 from 表 where 条件 [分组][分组条件] 排序/* 关键字查询 函数查询 单行函数 字符 数字 日期 分组函数 条件查询*/-- 查询结果是常量 SELECT 100 -- 表达式 SELECT 10+10 SELECT grade+1 FROM student -- 函数 SELECT VERSION() #查询版本 SELECT NOW() #查询时间 -- 查询整张表数据 SELECT * FROM student -- 查询特定列 SELECT num,NAME,sex FROM student -- 去除重复数据(多行数据所有列相同)只针对查询出来的结果去重 SELECT DISTINCT sex FROM student -- 算术运算符+(简单的加法运算,没有字符拼接功能) - * / SELECT grade+score FROM student-- 所有人班级+1 SELECT grade+1 FROM student -- 单行函数(对每行进行处理)-- LENGTH(列名) 返回字符字节数量长度 SELECT LENGTH(NAME) FROM student -- 字符函数-- CHAR_LENGTH(NAME) 以字符为单位 SELECT CHAR_LENGTH(NAME) FROM student -- 拼接 CONCAT (tr1,str2) SELECT CONCAT ('aa','bb','cc') SELECT CONCAT (NAME,'是',sex) FROM student -- 转大写 SELECT UPPER(NAME) FROM student SELECT UPPER('abc') -- 转小写 SELECT UPPER('ABC') -- 字符串截取 SUBSTRING(列名,开始位置,截取长度) SELECT SUBSTRING(NAME,1,1) FROM student -- 指定字符串首次出现位置查找 INSTR(列名,str) SELECT INSTR(NAME,'o') FROM student -- 去前后空格 TRIM(列名) SELECT TRIM(NAME) FROM student-- 去前后指定字符 TRIM(str from 列名) SELECT TRIM('o' FROM NAME) FROM student -- 填充字符到指定长度 LPAD(列名,补充到指定长度,填充内容) SELECT LPAD(NAME,6,'z') FROM student -- 将列中替换成指定的字符 REPLACE(列名 ,旧字符串,新字符串) SELECT REPLACE(NAME , 'a','z') FROM student -- 逻辑处理-- case when 条件 then 成立的结果 else 不成立的额结果 END from tableSELECT CASE WHEN score>=90 THEN 'A' ELSE 'B' END FROM student SELECT NAME, (CASE WHEN score>=90 THEN 'A' WHEN score>=80 AND score<90 THEN 'B' WHEN score>=70 AND score<80 THEN 'C' ELSE 'D' END ) score # 定义查询出结果的别名 FROM student -- IFNULL(判断为空的列,如果为空的默认值) 别名SELECT IFNULL(phone,'未登记手机号') Moblie FROM studentSELECT IFNULL(phone,NAME) Moblie FROM student-- IF(条件,满足结果,不满足结果)SELECT IF(score>=90,'优秀','良好')score FROM student-- 数学函数-- round四舍五入SELECT ROUND(5.9)-- ceil 向上取整SELECT CEIL(5.4)-- floor 向下取整SELECT FLOOR(5.9)-- 保留指定小数位数,不进位SELECT TRUNCATE(5.5363,2)-- mod取余SELECT MOD(10,3)-- rand 获取0-1 之间的随机数SELECT RAND()-- 日期处理函数SELECT NOW() #返回当前系统的时间+日期SELECT CURDATE() #返回当前系统的日期SELECT CURTIME() #返回当前系统的时间-- 日期格式化-- 只获取年份SELECT YEAR(reg_time ) FROM student-- 只获取月份SELECT MONTH(reg_time ) FROM student-- 将字符串格式转换为数据库中的日期格式SELECT STR_TO_DATE('1999-5-23','%Y-%m-%d')-- 日期格式转指定格式的字符串SELECT DATE_FORMAT(reg_time,'%Y年%m月%d日')m FROM studentSELECT COUNT(*),DATE_FORMAT(reg_time,'%Y年%m月%d日')m FROM student GROUP BY m-- 计算两个日期的时间差SELECT DATEDIFF(reg_time,NOW()) FROM student-- 组函数,聚合函数,统计函数/*分类:sum求和,avg平均值,max最大值,min最小值,count计数1.sum,avg一般用于处理数值型; max,min,count可以处理任何类型2.已上分组函数都忽略null值3.可以和distinct搭配实现去重的运算4.count函数的一般使用count(*)用做统计行数*/-- 求总和SELECT SUM(score) FROM student SELECT SUM(DISTINCT score) FROM student -- 求平均SELECT AVG(score) FROM student-- 最大值SELECT MAX(score) FROM student-- 最小值SELECT MIN(score) FROM student-- 统计数量SELECT COUNT(*) FROM studentSELECT COUNT(DISTINCT score) FROM student
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月15日 15时13分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
两款用于检测内存泄漏的软件
2019-03-04
王爽 《汇编语言》 读书笔记 三 寄存器(内存访问)
2019-03-04
JDK 内置的多线程协作工具类的使用场景
2019-03-05
Java 中哪些对象可以获取类对象
2019-03-05
11.2.6 时间值的小数秒
2019-03-05
Redis源码分析(七)--- zipmap压缩图
2019-03-05
自定义Hive Sql Job分析工具
2019-03-05
【MySQL】(九)触发器
2019-03-05
Oracle 11G环境配置
2019-03-05
【Python】(十二)IO 文件处理
2019-03-05
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
2019-03-05
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
2019-03-05
C语言的数值溢出问题(上)
2019-03-05
BottomNavigationView控件item多于3个时文字不显示
2019-03-05
函数指针的典型应用-计算函数的定积分(矩形法思想)
2019-03-05
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
2019-03-05
用 wxPython 打印你的 App
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05