您的位置:首页 > 数据库 > MySQL

Mysql常用语句和案例介绍

2016-04-09 21:24 337 查看

1.创建表

create table student(id int primary key auto_increment,name varchar(20),subject varchar(20),score int);



2.添加数据关键字 insert into

insert into 表名 values(添加的值);

例如:

insert into student values

(null,'大三','语文',81),

(null,'大三','数学',75),

(null,'小四','语文',76),

(null,'小四','数学',90),

(null,'小行','语文',100),

(null,'小行','数学',88),

(null,'小行','英语',81);




3.修改关键字 update set

修改id为2 的name

update 表名set 设置修改列的值 where 条件;

例如:

update student set name='李五' where id='2';



4.删除关键字 delete

删除id为2的

delete from student where id='2';

5.插入id为2的一组数据

insert into student values (2,'大三','数学',75);

6.查询所有字段

select * from  表名;



“*”可以表示所有的字段,只有按照表中字段的顺序进行排列,不能改变字段的排列顺序

查询指定记录

select * from 表名 where id=6;


7.查询每门课都大于80分的学生姓名

关键字distinct  not in

解释:如果某个栏位有重复的,而你又不想要重复的就需要用distinct。

not in 是用在where 中的,如果你要查询某个值不等于'A','B','C'的,你可以用not in.

select distinct name from student where name not in

(

select distinct name from student where score<=80

) ;


8.以..分组加条件输出

关键字group by(分组依据) 属性名 having(语句条件)范围;

group by 和having解释:前提必须了解sql语言中一种特殊的函数:聚合函数, group
by 字句通常和SUM, COUNT, MAX, AVG等聚合函数一起使用,这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

WHERE关键字在使用集合函数时不能使用,所以在集合函数中加上了HAVING来起到测试查询结果是否符合条件的作用。

 

以分数进行分组并计算个数,条件大于80分的输出

select score,count(*) from student group by scorehaving score>80 ;



9.以..进行排序,降序或者升序

关键字order by(以..排序) ASC(升序)或者 DESC(降序);

以分数进行降序排序

select * from student order by score
desc;



 10.查询条件                                   符号或关键字

       比较                          =、<、<=;>、>=、!=、<>、!>、!<

       指定范围                      between  and、not  between and

       指定集合                      in 、 not in

       匹配字符                      like、not like

       是否为空值                    is null、is not null

       多个查询条件                  and、or

       表中,“< >”表示不等于,等价于!=;

“!>”表示不大于,等价于“<=”;

in关键字可以判断某个字段的值是否在指定的集合中。

select * from student where id in(1,2,3);




between and 关键字可以判断读某个字段的值是否在指定的范围内,如果字段的值在指定范围内,则满足查询条件,该记录将被查询出来。

select * from student where score  between 80 and 100;




like关键字可以匹配字符串是否相等

[not] like “字符串”

“字符串”是用来指定用来匹配的字符串,该字符串必须加单引号或者双引号。

“字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符,但是%和_有很大的差别:

“%”可以代表任意长度的字符串,长度可以为0,例如,b%k表示以字母b开头,以字母k结尾的任意长度的字符串。该字符串可以代表bk、buk、book、b*******k等字符串。

“_”只能表示单个字符。例如,b_k表示以字母b开头,以字母k结尾的3个字符。中间的"_"可以代表任意一个字符,字符串可以代表bok、bak、buk等字符串。

注意:因为一个汉字是两个字符,而一个“_”符号只能代表一个字符,匹配的字符串应该为“张_  _”,必须是两个"_";

 

and关键字可以用来联和多个条件进行查询,使用and关键字时,只有同时满足所有查询条件的记录会被查询出来。

查询名字为小行和分数为88的数据。

select * from student where name='小行' and score like '88';

 









group by 关键字和group_concat()函数一起使用表示每个分组中指定字段值都显示出来


or关键字时,只要满足这几个查询条件的其中一个,这样的记录就会被查询出来



group by关键字与集合函数一起使用



group by关键字与having一起使用

注意:"where 条件表达式"作用于表或试图,是表和试图的查询条件,"having 条件表达式"作用于分组后的记录,用于选择满足条件的组.



连接查询

         连接查询是将两个或两个以上的表按某种条件联系起来,从中选取需要地数据。连接查询是同时查询两个或两个以上的表示使用的.

内连接查询

         当两个表中存在相同一样的字段时,可以通过该字段来连接这两个表,当该字段的值相等时,就查询出该记录

说明:2个表中相同意义的字段可以是指父表的主键和子表的外键

Select  score,sex  from student,studinfo  where  student.name=studinfo.name;


子查询:内层查询语句的查询结果,可以为外层查询语句提交查询条件

in关键字的子查询

一个查询语句的条件可能落在另一个select语句的查询结果中

查询student表中的记录,这些记录的name字段的值必须在studinfo表中出现过

select * from studinfo where name in(selectname from student);

 


exists关键字表示存在,使用exists关键字时,内存查询语句不返回查询的记录。而是返回一个真假值,如果内层查询语句查询到条件的记录,就返回一个真值(true),否则,返回一个假值(false)。当返回一个true时,外层查询语句将进行查询;当返回false时,外层查

询语句不进行查询或者查询不出任何记录.



注意:exists关键字与前面的关键字很不一样,使用exists关键字时,内层查询语句只返回true和false,如果内层查询语句查询到记录,那么返回true,否则,将返回false,如果返回true,那就可以执行外层查询语句.



同时我也要感谢一个人,都是她的功劳!

如果你是湖南的 欢迎加入 湖南人在深圳-Java群:557651502
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: