insert into t_order (goods_name,goods_count) VALUES ("小本","2")
批量插入:各个值之间用逗号隔开
insert into t_order (goods_name,goods_count) VALUES ('小ja','3'),('小卡','4');
update t_order set goods_name='haha' where id=12
批量更新:各个值之间用逗号隔开
update t_order set goods_name='销售',goods_count='3' where id=62
如果更新所有的字段的话就不需要where
DELETE from t_order where goods_count='3'
select
字段列表
from
表名列表
where
条件列表
group by
分组列表
having
分组后的条件列表
order by
排序字段列表
limit
分页
DISTINCT关键字将查询出来的重复数据进行去重
as进行设置别名
select DISTINCT goods_count as 'count' from t_order;
条件:
> | 大于 |
---|---|
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
<>或!= | 不等于 |
between and | 在某个范围之内(含最大、最小) |
in(…) | 在in之后的列表中的值,多选一 |
like | 模糊匹配(_匹配单个字符,%匹配任意字符) |
IS NULL | 是null |
and 或 && | 并且 |
OR | 或 |
not | 非,不是 |
查询商品价格等于400的数据:
select * from t_order where goods_price=400;
查询商品价格等于629的数据:
select * from t_order where goods_price<=629;
查询商品价格不等于629的数据:
select * from t_order where goods_price<>629;
查询没有商品id的信息:
select * from t_order where goods_id is null;
查询有商品id的信息:
select * from t_order where goods_id is not null;
查询价格在600-800(包含600、800)
select * from t_order where goods_price BETWEEN 600 and 800;
select * from t_order where user_id=150 and goods_id=2;
select * from t_order where goods_id=3 or goods_id=2;
select * from t_order where goods_id in(1,2,5);
查询姓名为两个字的员工
select * from t_order where goods_name LIKE '__';//两个下划线
保证最后字段以pro结束
select * from t_order where goods_name LIKE '%pro';
select count(*) FROM t_order
计算平均价格
select avg(goods_price) FROM t_order
select min(goods_price) FROM t_order
select sum(goods_price) FROM t_order where user_id=150
select * from 表名 where group by 分组字段名 [having 分组后过条件]
根据性别分组,统计男员工和女员工的数量
select count(*),gender from emp group by gender
根据性别进行分组,统计男性员工和女性员工的平均年龄
select avg(age),gender from emp group by gender
查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select addr from emp where age<45 group by addr having count(*) >=3;
注意
排序方式:
根据年龄对公司的员工进行升序排序
select * from emp order by age asc;
select * from emp order by age desc; //降序
根据年龄对公司的员工进行升序排序,年龄相同,在按照入职时间进行降序排序
select * from emp order by age asc,addr_time desc
select 字段列表 from 表名 limit 起始索引,查询记录数
注意:
查询第1页员工数据,每页展示10条记录
select * from emp limit 0,10
查询第二页的员工数据,每页展示10条记录
select * from emp limit 10,10
![IMG_0612(20220614-103939)](C:\Users\win10\Documents\Tencent Files\907167912\FileRecv\MobileFile\IMG_0612(20220614-103939).PNG)
select * from emp where age in(20,21,22,23);
select * from emp where gender='男' and age between 20 and 40 and name like "___"//姓名是三个字
select gender,count(*) from emp where age<60 group by gender;
select * from emp where age<=35 order by age asc,work_time desc;
select * from emp where age between 20 and 40 and gender='男' order by age asc,,work_time desc limit 0,5;
函数 | 功能 |
---|---|
concat | |
lower | |
upper | |
lpad | |
rpad | |
trim | |
substring |
select CONCAT('hello,','mama');
select LOWER('CDDDDD')
select UPPER('ssafc')
select LPAD('01',4,'-') //将-填充到左边保证长度为4
select RPAD('01',4,'-')
select TRIM(' ff dfss ')
select SUBSTRING('dsds',1,3) //截取到的是dsd
案列:由于业务需求的变更,企业员工的工号统一为5位数,目前不足5位数的全部在前面补0。比如1号员工应该为00001
update emp set workno=lpad(workno,5,'0');
update t_order set goods_id=lpad(goods_id,3,'1');
函数 | 功能 |
---|---|
ceil(x) | 向上取整 |
floor(x) | 向下取整 |
mod(x,y) | 返回x/y的模 |
rand() | 返回0-1内的随机数 |
round(x,y) | 求参数x的四舍五入的值,保留y位小数 |
select ceil(3.2) //4
select FLOOR(3.2) //3
select MOD(3,4) //3
select RAND()//生成数是0~1
select ROUND(2.43,1) //2.4
案例:通过数据库的函数,生成一个六位数的随机验证码
select RPAD(ROUND(RAND()*1000000,0),6,'0')
函数 | 功能 |
---|---|
curdate() | 返回当前日期 |
curtime() | 返回当前时间 |
now() | 返回当前日期和时间 |
year(date) | 获取指定的date的年份 |
month(date) | 获取指定的date的月份 |
day(date) | 获取指定的date的日 |
date_add() | |
datediff() |
select CURDATE(); //2022-06-14
select CURTIME(); //15:18:44
select now(); //2022-06-14 15:19:02
select YEAR(now())
select month(now())
select day(now())
select DATE_ADD(NOW(),INTERVAL 2 day) //向后推2天
select DATEDIFF(NOW(),'2022-1-12') //两个日期的差数:第一个日期-第二个日期
案列:查询所有员工的入职,并根据入职天数,并根据入职天数倒序排序
select name,datediff(curdate(),entrydate) from emp order by datediff(curdate(),entrydate) desc
流程函数也是很常用的一类函数,可以在sql语句中实现条件筛选,从而提高语句效率
select if(true,'ok','error') //ok
select IFNULL('ok','default') //ok
select IFNULL(null,'default') //default
case when then else end
需求:查询emp表的员工姓名和工作地址(北京/上海—>)
select name,
(case addr when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from emp
概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据
目的:保证数据库中数据的正确,有效性和完整性
约束 | 描述 | 关键字 |
---|---|---|
非空约束 | 该字段不能为空 | not null |
唯一约束 | 保证该字段的所有数据都是唯一,不重复 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
默认约束 | 保存数据是,如果未指定该字段的值,则采用 | default |
检查约束 | 保证字段值满足某一个条件 | check |
外键约束 | 用来让两张表的数据之间建立连接,保证数据的一致性和完整性 | foreign key |