• 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

            

  • 相关阅读:
    连接数据库的URL等于多少?
    警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:20160928' did not find a matching property
    jsp页面中的问题:Date cannot be resolved to a type
    无法找到类:java.lang.ClassNotFoundException: com.tt.javaweb.HttpServletRequest问题解决
    Tomcat无法启动:org.apache.catalina.LifecycleException: Failed to start component 问题解决
    No Suitable Driver Found For Jdbc_我的解决方法
    "aa".equals(name)这种写法为什么就可以避免空指针
    Eclipse迁移到Android studio步骤如下:
    Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
    Android 内存管理 &Memory Leak & OOM 分析
  • 原文地址:https://www.cnblogs.com/songxiaonan/p/7364320.html
Copyright © 2020-2023  润新知