美文网首页我爱编程
5 select 等基本操作

5 select 等基本操作

作者: 沈婷_bbf1 | 来源:发表于2018-05-25 20:38 被阅读14次

Replace into stu values ( 2 李四)

将原来表中2对应的数据改成了李四(原来2对应的是张三)

Truncate t ;清空所有记录。

1 Select sname 姓名,sgender 性别from student    2 selectsgender, sname from student

1是左边图,2是右边图,发现1对结果重新命名了。但是2没有



查询其它数据库中的表(当前数据库在mysql要查询aaa数据库中的表)

Select sgender,sname,sagefrom aaa.stu.

或者在aaa stu上面都加单引号’aaa’.’stu’.

Select sname 姓名,ifnull(sgender,’保密’)保密from stu;


Ifnull(sgender ,‘保密’)的意思是如果sgender有数值就显示正常的数值,如果没有数值就显示为保密,效果如上图。

!=在mysql中可以表示不等于,当然不等于在mysql中还有其它表示如<>.

模糊查询

在mysql中%代表0个或者多个任意字符。

Select * from

student where sname like ‘李%‘;

在student 表中姓李的所有人的信息

注意这样的查询查不出小李这样的称呼,如果想查出用 ‘%l李%’   就可以。

在mysql中下划线-代表一个字符,一个下划线一个字符,两个下划线两个字符,如果like’__’表示查询两个字符的。

Select * from stu where sname =’李%‘;

表示在stu中查找李%这个人,注意只有like才认李%,把%当作0个或者多个字符,但是=是不认的,%就是%没有其它意思。

Select * from student where sname not like

‘李%‘;

表示不是姓李的都取出来,反向取数据。

注意%不能匹配null,即使是where name like ‘%’;也不可匹配null.

注意尾空格会干扰通配符匹配,例如,在保存nn的时候后面加了一个空格,则where name like ‘%nn’;是没有办法匹配它们,因为在nn后面有个空格,要解决这个问题的一个简单办法就是在搜索模式后附加一个%,还有使用函数去掉首尾空格。

通配符搜索的处理一般要比其它搜索花时间更加长,不要过度使用通配符,在确实需要使用通配符时,除非有必要,否则不要把它们用在搜索模式的开始出。

Between and not between and

Select * from stu where score between 60and 70;

Select * from stu where score >=60andscore<=70;

以上两个语句相等,都是想查询成绩在60-70(包含60-70)之间的数据

Between and 区间 ,一般只有时间和数字才有区间。

Not between 60 and 80; 这里表示<60 或者> 80的,不包括60和80,要注意两个的区间。

Is null   not is null

select * from stu2 where sex is notnull;         

注意,当空值是是is null,不是=null。

In() not in()

Select * from stu where address in(‘北京’,’文化路’);

Select * from stu where address=’北京‘,or address=‘文化路’;

列出家庭地址是北京或者文化路的

Select * from stu where address not  in(‘北京’,’文化路’);

Select * from stu where address ! =’北京‘and address<>‘文化路’;

排序

Select * from stu  order by score desc,gender asc;

Score降序,asc升序排列。

如果不说升降排序就是默认升序,比如order by score.

Select * from student where gender=’男’ order by score desc limit 2;

查询成绩前两名的男生信息。

Order by rand() limit 2.

随机查询两条信息。不推荐使用

Rand()函数表示0-1之间的随机小数

关系型数据库中不能把集合性函数直接用于查询,可以用子查询

比如这个是错误的

Select * from student wherescore=max(score);

子查询

Select * from student where score=(selectmax (score)from student)

或者写成Select * from student where score  in  (selectmax (score)from student)

把=换成in

 集合性函数有

Max()    min()    avg()    count ()  sum()


Select distinct name from student;

消除重复姓名

除了distinct消除重复外还有一个方法,用union

Select name,gender score from student where gender=’男’ union select name,gender,score from student where gender=’女’

这样会消除重复值,名字,性别和成绩一样的重复值。但是如果加上了唯一值id,就没有办法消除重复值了



等值查询的两种方法

1 select s.id, s.name, t.name from students, teacher t where s.tid =t.id;

2 select s.id, s.name, t.name from students join teacher t  on s.id=t.id.

推荐使用第二种,因为性能比较优化,如果在大型项目中第一种还需要做优化。


笛卡尔交集查询

Select * from teacher ,student .

相关文章

网友评论

    本文标题:5 select 等基本操作

    本文链接:https://www.haomeiwen.com/subject/dcoujftx.html