南京市高淳区住房与城乡建设局网站,深圳电商代运营公司排名,移动云服务器租用,网站前端后端分开做可以吗目录
1 基本查询
1.1 查询相关列 (select * / 列名)
1.2 别名 (as)
1.3 去重 (distinct)
1.4 对列中的数据进行运算 (、-、*、/)
2 条件查询 (where)
2.1 等值查询 ()
2.2 非等值查询 (、、、、!、)
2.3 逻辑判断 (and、or、not)
2.4 区间判…目录
1 基本查询
1.1 查询相关列 (select * / 列名)
1.2 别名 (as)
1.3 去重 (distinct)
1.4 对列中的数据进行运算 (、-、*、/)
2 条件查询 (where)
2.1 等值查询 ()
2.2 非等值查询 (、、、、!、)
2.3 逻辑判断 (and、or、not)
2.4 区间判断 (between and)
2.5 NULL 值判断 (is null、is not null)
2.6 in 运算符
2.7 模糊查询 (like)
3 分支查询
4 排序 (order by)
5 日期和时间函数 1 基本查询 goods 表 drop table if exists goods;
create table goods (
id int(10) primary key auto_increment,
name varchar(14),
netprice float(7,2),
saleprice float(7,2),
weight float(7,2),
stockdate date
)charsetutf8; #单条插入
insert into goods(name,netprice, saleprice, weight, stockdate) values(香蕉, 2.5, 3.8, 24, 2024-02-13);#多条插入
insert into goods(name,netprice, saleprice, weight, stockdate) values
(苹果, 4.5, 7.2, 15, 2024-02-12),
(苹果, 4.5, 7.5, 65, 2024-02-14),
(橘子, 3.2, 4.5, 52, str_to_date(02-12-2024, %m-%d-%Y)),
(橘子, 2.8, 4.5, 76, 2024-02-13),
(橘子, 3.1, 5.2, 63, 2024-02-14),
(葡萄, 2.1, 4.7, 26, str_to_date(2024/02/14, %Y/%m/%d));
1.1 查询相关列 (select * / 列名) 生产环境下优先使用列名查询。* 的方式虽然看起来便捷但实际上需要转换成全列名效率低可读性差 select * from goods;
select id, name, stockdate from goods; 关键字顺序 select ... from ... 以上语句执行顺序: fromselect
1.2 别名 (as) 通过 as 可以对列名取别名as 可以省略列名和别名之间用空格隔开 select id as 商品id, name as 商品名, netprice 进价, saleprice 售价 from goods;
1.3 去重 (distinct) 通过 distinct 将查询结果中的重复行去除 select name from goods;
select distinct name from goods;
1.4 对列中的数据进行运算 (、-、*、/) 可以对列中的数据进行加 、减 -、乘 *、除 / select id 商品id, name 商品名, (saleprice - netprice) * weight as 利润 from goods;
2 条件查询 (where) 通过 where 进行条件查询 关键字顺序 select ... from ... where ... 以上语句执行顺序: fromwhereselect 2.1 等值查询 () select * from goods where name 苹果;
2.2 非等值查询 (、、、、!、) # 从商品中选择 weight 52 的商品
select id, name, netprice, saleprice, weight from goods where weight 52;# 从商品中选择 weight 52 的商品
select id, name, netprice, saleprice, weight from goods where weight 52;# 从商品中选择 weight 52 的商品
select id, name, netprice, saleprice, weight from goods where weight 52;# 从商品中选择 weight 52 的商品
select id, name, netprice, saleprice, weight from goods where weight 52;# 从商品中选择 weight ! 52 的商品此外 ! 还可以这样用如 name ! 苹果
select id, name, netprice, saleprice, weight from goods where weight ! 52;# 从商品中选择 weight 52 的商品 等价于 !
select id, name, netprice, saleprice, weight from goods where weight 52;2.3 逻辑判断 (and、or、not) # 选择 weight 52 且 name ! 苹果 的商品
select id, name, netprice, saleprice, weight from goods where weight 52 and name ! 苹果;# 选择 weight 52 或 not name 苹果 的商品not name 苹果 等价于 name ! 苹果
select id, name, netprice, saleprice, weight from goods where weight 52 or not name 苹果;
2.4 区间判断 (between and) # 选择 24 weight 50 的商品
select id, name, netprice, saleprice, weight from goods where weight between 24 and 50;
2.5 NULL 值判断 (is null、is not null) # 查询表 goods 中 weight 为 null 的商品
select * from goods where weight is null;# 查询表 goods 中 weight 不为 null 的商品
select * from goods where weight is not null;
2.6 in 运算符 in 运算符语法 where 列名 in (value1, value2, ...)where 列名 not in (value1, value2, ...)只要列值在列表项 (value1, value2, ...) 中则该行符合条件in 列表项不仅支持数字也支持字符甚至时间日期类型等并且可以将这些不同类型的数据项混合排列而无须跟 column列 的类型保持一致如 in (1, 2,str)in 可以和 and、or、、 等运算符结合使用in 列表项可以是子查询如果 in 的列表项是确定的那么可以用多个 or 来代替。一般认为如果是对索引字段进行操作使用 or 效率高于 in但对于列表项不确定的时候如需要子查询得到结果就必须使用 in 运算符。另外对于子查询表数据小于主查询的时候也是适用 in 运算符的select id, name, netprice, saleprice from goods where name in (苹果, 香蕉);
2.7 模糊查询 (like) “_” 表示单个任意字符“%” 表示任意个任意字符 0 ~ n 个任意字符 # 查询表 goods 中 stockdate 为 2024-02-x4 的商品
select id, name, stockdate from goods where stockdate like 2024-02-_4;# 查询表 goods 中 saleprice 为 7.xx 的商品
select id, name, saleprice from goods where saleprice like 7.%;# 查询表 goods 中 name 不为 苹x 的商品
select id, name stockdate from goods where name not like 苹_;3 分支查询 分支查询语法 case when 条件1 then 结果1 when 条件2 then 结果2 ... else 结果n end select id, name, stockdate,casewhen stockdate 2024-02-12 then 前天when stockdate 2024-02-13 then 昨天when stockdate 2024-02-14 then 今天else 不知道end as time
from goods;
4 排序 (order by) order by 列名 asc / desc; asc 表示升序desc 表示降序默认是升序 关键字顺序 select ... from ... where ... order by ... 以上语句执行顺序: fromwhereselectorder by # 按照 weight 重量升序
select id, name, netprice, saleprice, weight from goods order by weight;
# 按照 weight 重量降序
select id, name, netprice, saleprice, weight from goods order by weight desc;
先按照 netprice 进价降序如果 netprice 相等则按照 id 降序
select id, name, netprice, saleprice, weight from goods order by netprice desc, id asc; 5 日期和时间函数 时间函数描述sysdate()获得当前系统时间年、月、日、时、分、秒curdate()获得当前日期curtime()获得当前时间week(date)获得指定日期是一年中的第几周year(date)获得指定日期的年份month(date)获得指定日期的月份day(date)获得指定日期是月份的第几天hour(date)获得指定时间的小时值minute(date)获得指定时间的分钟值second(date)获得指定时间的秒值datediff(enddate,startdate) 获得两个时间相隔的天数 enddate - startdate 注意和 SQL Server 中的 datediff(datepart,startdate,enddate) 不同 adddate(date,n)在指定日期后面加 n 天str_to_date(str,fmt)将不同时间格式的字符串转为的特定格式的日期 (%Y-%m-%d)date_format(date,fmt)将时间转为不同时间格式的字符串 时间格式描述%Y年4 位%y年2 位%X年其中的星期日是周的第一天4 位与 %V 使用%x年其中的星期一是周的第一天4 位与 %v 使用%b缩写月名%c 月数值 %M月名%m 月数值(00-12) %j年的天 (001-366)%D带有英文前缀的月中的天%d月的天数值(00-31)%e 月的天数值(0-31) %U周 (00-53) 星期日是一周的第一天%u周 (00-53) 星期一是一周的第一天%V周 (01-53) 星期日是一周的第一天与 %X 使用%v 周 (01-53) 星期一是一周的第一天与 %x 使用 %w 周的天 0星期日, 6星期六 %a缩写星期名%W星期名%T 时间24-小时 (hh:mm:ss) %r 时间12-小时hh:mm:ss AM 或 PM %pAM 或 PM%H小时 (00-23)%h小时 (01-12)%I小时 (01-12)%k小时 (0-23)%l小时 (1-12)%i分钟数值(00-59)%S秒(00-59)%s秒(00-59)%f微秒# 获得当前系统时间、当前日期、当前时间
select sysdate(), curdate(), curtime();# 获得指定日期是一年中的第几周、指定日期的年份、月份、指定日期是月份的第几天
select week(2024-02-14) week, year(2024-02-14) year, month(2024-02-14) month, day(2024-02-14) day;# 获得指定时间的小时值、分钟值、秒值
select hour(16:33:24),minute(16:33:24), second(16:33:24);# 获得两个时间之间相隔的天数只计算日期这里是2024-03-02 减去 2024-02-29 得到两天
select datediff(2024-03-02 08:00:00,2024-02-29 10:00:00) day;# 将不同时间格式的字符串转为的特定格式的日期
select str_to_date(2024/02-13 13:4356,%Y/%m-%d %H:%i%s);# 将时间转为不同时间格式的字符串
select date_format(sysdate(), %Y/%m/%d %H:%i:%s);# 在 2024-02-28 23:59:59 加 1 / 2 天
select adddate(2024-02-28 23:59:59,1);
select adddate(2024-02-28 23:59:59,2);