Mysql基本知识

一、临时表

        1、查询出来的结果是一个临时表,可以给临时表重命名,方便联合查询或者多层嵌套查询的时候用

       

        2、查询结果如果没有重命令,也可以当做值直接用

       有两个表:student 和id 表 如下:  查询出  sid与在 id表中id相同的所有 学生姓名

             

        select name from student where sid in (select id from id);   注意后面 不加 as a,如果加了的话, (select id from id)就变成一个新的表,会报语法错误

        虽然 select id from id,在界面上显示的是只含有id一列的表,但是 不给重命名 就是两个id值, 可以跟 in、not in、=等结合使用

                                                                                                                    如果重命名了,就是一个表,当表来使用

 

 

 

二、联合查询

       最重要的是消除笛卡尔积,连接概念

       内连接inner joinjoin    查询出两个表符合条件的记录

       select* from test1 inner join test2 on test1.id=test2.id  等同于    select*from test1 ,test2 where test1.id=test2.id

       题目:有两个表 score成绩表、course课程表,查询出所有报名物理课程同学的学号

      

                  1、 select student_id,cname from score,course where course_id=cid and cname='wuli';,查询结果:

      

 

                 2、 select student_id,cname from score inner join course on course_id=cid and cname='wuli';,查询结果同上

 

       外链接:left join    查询出两个表符合条件的记录,同时保留左表所有数据行

                     right join  查询出两个表符合条件的记录,同时保留右表所有数据行 

                     full join    全外连接是在等值连接的基础上将左表和右表的未匹配数据都加上    

 

三、分组

  select avg(number) avg,student_id from score group by student_id having avg>60

       group by 列名 :将该列下相同值分为一组

       having:分组后条件过滤

       group by 一般和分组函数一起使用,常见的分组函数有

                     count:统计记录条数

      sum:求和

      avg:平均值

      max:最大值

      min:最小值

        如果group不跟分组函数一起使用,那么该列取值相同的记录为一组,但是只显示该组的第一条记录。

 

四、显示所有的数据库、显示所有的表

      show databases、show tables

五、创建数据库、创建表

       创建数据库: create database oldboy;

       创建表: create table score(

      id int(10) primary key not null,

      name varchar(10) unique

      );

六、数据的增删改

       插入数据:

       插入指令列数据:insert into 表名(列名1,列名2) values(值1,值2)

                      插入所有列数据:inser into 表名 values()

       删除:delete from 表名 where ................

       改:update 表名 set name=‘宋晓楠’ where  ...........

七:删除库  删表

       drop database 库名

       drop table  表名

 八、模糊查询

        like:“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)

        

      为了找出以“b”开头的名字:

      mysql> SELECT * FROM pet WHERE name LIKE "b%";

 

      为了找出以“fy”结尾的名字:

      mysql> SELECT * FROM pet WHERE name LIKE "%fy";

 

      为了找出包含一个“w”的名字:

      mysql> SELECT * FROM pet WHERE name LIKE "%w%";

 

      为了找出包含正好5个字符的名字,使用“_”模式字符:

      mysql> SELECT * FROM pet WHERE name LIKE "_____";

 九、修改表结构 alter

         给表增加列: alter table 表名 add column(‘column’可加可不加) 列名 列属性

                               加一列:alter table id add  name varchar(10);

                               加多列:alter table id add address varchar(2), add name varchar(2);                                                                                                                      

    删除表的列:alter table 表名 drop column(‘column’可加可不加)列名; 

                               删一列:alter table id drop address;

           删多列:alter table id drop address,drop name;

 十、运算符

   算数运算符:”+”   ”-”    “*”     ”/”     ”%”

        比较运算符: =   等于

                              != 或者 <>    不等于

                              < 小于

                              > 大于

                             <= 小于等于

         >=大于等于

        between and   闭区间

        in ()  值存在于列表中

        not in ()  值不存在于列表中

        is null、 is  not null  是否为空

        LIKE   参考标题八

        逻辑运算符: 与   and 或者&&

                              或   or 或者 ||

                              非   not 或者!

十一、排序

    asc:升序

    desc:降序

      select student_id,avg(number) avg from score group by student_id order by avg asc;

 

十二。count()

         查询数据库中有多少条记录,只返回数字: select count(*) from table

        

posted @ 2017-08-18 17:36  3456425171  阅读(141)  评论(0编辑  收藏  举报