上一篇笔记写了对表的常用操作,现在继续写对数据的常见操作。
下面创建一张 students 表和一张 teachers 表来举例说明:
create table students(
stuid int(3) auto_increment,
name varchar(20) not null,
age int(2),
sex char(2),
phone char(11),
tid int,
tname varchar(20),
primary key (stuid),
foreign key (tid) references teachers (id)
);
除此之外,我们再建一张 teachers表,建表语句如下:
create table teachers(
tid int(4) not null,
name varchar(4) not null,
sex char(2),
class char(3),
grade char(2),
primary key (tid)
);
一、查询数据
sql查询中最简单的是查询整张表:
select * from students;
如果需要加入查询条件,则在后面加上 where 语句
1.在where条件中可以使用的等式有:
# 等于 = / 不等于 <> / 大于 > / 大于等于 >= / 小于 < / 小于等于 <=
# 如 查询名字为“张一”的学生
select * from students where name = "张一";
# between .. and .. 查询某个区间范围
# 如 查询5-10岁的学生信息
select * from students where age between 5 and 10;
# like 模糊查询
# 如 查询姓张的学生
select * from students where name like "张%";
# in 查询某个集合
# 如 查询5岁和7岁的学生
select * from students where age in (5,7);
在上面的语句中,第9行中的 '%' 是一个通配符,常用的通配符有:
%:替代0个或多个字符
_:替代1个字符
[char]:字符列中任何单一字符
[^char]:不在字符列中的任何单一字符
2.需要将多张表联合起来查询
# join
# 如 查询学生与老师的对应关系(不包含新来的学生与老师)
select students.name,teachers.name from students join teachers on students.tname = teachers.name;
# left join 左连接,保留左表中的内容
# 如 查询所有学生及他们对应的老师的名字
select students.name,teachers.name from students left join teachers on students.tname = teachers.name;
# right join 右连接,保留右表中的内容
# 如 查询所有老师及他们所教的学生名字
select students.name,teachers.name from students right join teachers on students.tname = teachers.name;
# union 合并多个结果集,并去掉重复值
select tname from students union select name from teachers;
# union all 保留重复值
3.对结果进行过滤
# distinct
# 查询已经分配了班级的老师名字
select distinct tid,tname from students;
# order by 排序,默认升序(ASC),降序为DESC
# 查询学生名字,按年龄降序排序
select name,age from students order by age desc;
# group by 对一列或多列结果集进行分组
# as
4. sql语句中常用的函数
# 求平均值
avg()
# 求行数
count()
# 返回第一个记录的值
first()
# 返回最后一个记录的值
last()
# 返回最大值
max()
# 返回最小值
min()
# 返回和
sum()
# 筛选分组后的数据
having
# 将字段的值转换为大写/小写
ucase()
lcase()
# 返回当前系统的日期和时间
now()
# 对字段进行格式化
format()
# 返回子字符串在字符串中的位置
position(substring in str)
二、插入数据
# insert into
insert into students (name,sex,age,phone) values ('李三','女',10,'16598746543');
三、修改数据
update students set phone='12345674567' where name='李三';
四、删除数据
delete from students where name='李三';
最后修改时间:2019-12-16 10:37:10
文章转载自我和软件测试,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。