上一篇笔记写了对表的常用操作,现在继续写对数据的常见操作。
下面创建一张 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 intoinsert 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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




