Mysql笔记(二)

添加数据

insert指令

注意:SQL语句不区分大小写,也就是大小写一致!!

# 语法结构
insert into  表名称[(字段1 [,字段2, ……])] {values|value}(字段值, [……]) [,()];
​
​
# 注意:如果主键自增,可以使用null或者default关键字填充
# 其他字段,如果存在默认值,则使用default关键字填充
INSERT INTO t_user values(null, "武洋", 20, "陕西西安", "110", default);
# 也可以自己指定默认值存在项
INSERT INTO t_user values(7, "武洋", 20, "陕西西安", "110", 30);
​
INSERT INTO t_user value(8, "苏运鑫", 25, "陕西安康", "120", 25);
​
insert into t_user(name) values ("川崎");

删除数据

DELETE指令

注意:where关键字,必须存在条件时才能出现

SQL中,单引号和双引号是一样的

delete from 表名称 [where 一个或者多个条件];

truncate指令

该指令也可以删除数据,注意:这种数据删除不通过数据字典,是无法恢复的,请慎用!!!!

主要使用场景:清除测试数据!!!!

增加数据

update指令

update 表名称 set 字段名称=新的值 [,字段=xxx [,……] [where 条件];

replace语句

replace语句结构和insert的语法结构一模一样

replace into 表名称[(字段1 [,字段2, ……])] {values|value}(字段值, [……]) [,()];
​

注意:replace 的sql语句,是集更新和插入于一体的一个SQL。

如果插入的数据不存在(主键、unqiue修饰的字段),执行insert执行

如果插入的数据存在(主键、unqiue修饰的字段),则先执行删除语句,再执行insert语句。

查询语句(select)

使用select查询数据库表中的某些数据。

select 语法结构

select {字段|函数|其他} from 表名称 [where]
​
​

select的特殊使用

select 可以用来计算数据,在开发中,如果数据类那些个不是数值,注意,从第一个位置它会尽可能转换为数值。

select 100 + 200;
​
select '100' + 200;
select '100' + '200';
​
select 100 + "武洋";
​
select 100 + "200武洋";
​
select 100 + "武洋200";
​
select 'a' + "b";   # 0
​
select null + 30 + '武洋';   # 只要其中一个为NULL,则结果为NULL

select也支持函数使用。

select user();      # 查询当前登录用户
select database();  # 查询所属的数据库
select uuid()       # 生成一个UUID值, uuid值的特点是,永不重复的一个字符串

select查询数据

select 字段  from 表名称
​
​
select * from user;
select id, name from user;
select id, name, gender, address, age from user;
select条件查询
select * from t_user;
select id, name, age from t_user;
​
# 等值条件 =
select address from t_user where id = 1;
select age from user where name="刘建宏";
​
# 关系条件
-- >  <  >= <= != =   <>
​
​
# 判断是否为空
# is关键字  is null  is not null
select * from user where address is NULL;
select * from user where address is not NULL;
​
# <=> 符号
# 充当等号的作用
# 可以用来判断空
select * from user where age <=>18;
select * from user where gender <=> null;
​
# 多个条件
# 逻辑运算符 
# and   并且
# or    或者
# not   不是,取反
​
select * from user where age = 18 and gender = "男" and id > 10;
select * from user where age = 18 or gender = "女";
select name from user where gender is not null;
select name from user where not gender = "男";
​
# 范围
update user set age = 25 where id >= 6 and id <= 10;
update user set age = 16 where id between 12 and 15;
 select * from user where not (age < 20 or age > 25);
 
 # 注意:条件的执行顺序问题!!!
 select * from user where not age < 20 or age > 25;
 
 # 列举 in not in
 select * from user where id in (1,3,8,10);
 select * from user where id not in (1,3,8,10);
 
 # 去重效果
 # 使用distinct关键字去掉重复值
 select distinct age from user;

日期的格式:使用字符串来表示

"yyyy-mm-dd"    如  '2000-03-30'
‘yyyy/mm/dd’    如   '2024/5/11'
'hh:mm:ss'      如   ‘12:12:21’
​
"yyyyy-mm-dd hh:mm:ss"  ‘2020-3-4 16:05:30’

模糊查询

使用like关键字进行模糊匹配

% 匹配0到多位

_ 匹配一个具体的位

select * from user where name like "%亮";
select * from user where name like "%亮%";
select * from user where name like "%张%";
select * from user where name like "张%";
​
# 表示第二个字是“绣”
select * from user where name like "_绣%";

正则查询
select * from user where name regexp "^张";
select * from user where name regexp "亮$";

复杂查询

分组查询

将数据相同的,会放在同一个组中,也就是,不会出现重复数据。往往是用来做数据分析。

select 字段
from  表名
[where 条件]
group by 字段 [, 字段 [,……]]
​

案例

-- 统计不同性别的人数
select count(gender), gender from user group by gender;
​
having语句

having语句,是配合分组使用,是分组后的筛选!!!!

select 字段
from  表名
[where 条件]
group by 字段 [, 字段 [,……]]
having 筛选条件

案例:

select gender, count(gender) from user group by gender having count(gender) > 8;
​
select gender, count(gender) from user where age >= 18 group by gender having count(gender) > 5;

聚会函数-count

统计数据

select count(id) from user;
select count(gender) from user;
select count(id) from user;
select count(1) from user;
select count(1) from user where gender="男";

排序

order by 字段 [{asc | desc }]

如果存在排序,必须是在分组之后

select 字段
from  表名
[where 条件]
[group by 字段 [, 字段 [,……]] ]
[having 筛选条件]
order by 字段 [{asc |  desc  }]  [, 字段 [{asc |  desc  }]]

案例

select * from user order by age ;
select * from user order by age desc;
select * from user order by age asc;
​
select * from user order by age , id desc;
​
​
别名的使用

别名(alias ),就是将原有名称,重新赋予一个新的名称

在查询SQL时,可以将查询的结果重新设置名称(字段、表名称)。

字段 as 别名 ,as可以省略

select count(*) as count from user;
​
select count(*) count from user;

分页查询

查询非常多,此时全部展示是不现实的,因此,需要通过分页展示部分数据

注意:不同的关系型数据库,实现分页效果,可能SQL不一样!!!

MySQL使用 limit关键字实现分页!!!

select 字段
from  表名
[where 条件]
[group by 字段 [, 字段 [,……]] ]
[having 筛选条件]
order by 字段 [{asc |  desc  }]  [, 字段 [{asc |  desc  }]]
​
limit num [, num2]; 

limit num :表示要截取num条数据。

limit num1, num2 :表示num1为起始位【从0开始】, num2表示一页共显示多少数据。

分页实现时的几个关键变量:

当前页:默认为1,用户决定这个值 pageNow

页面的条数:一般有开发者定义 pageSIze

共有多少页:这个是需要算出来 pageCount

总条数:查询得到 allCount

select * from user limit  pageSize * (pageNow - 1) , pageSize;

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值