MySql的DDL和DML和DQL的基本语法

       在Mysql的学习过程中,比较常用就是:DML,DDL和DQL,下面就对这几个常用语句进行详细的介绍,三种语言常用的命令如下图所示: 

一、DDL(数据自定义语句)

        1.creat:通常用这个命令来创建一个数据库或者创建一个数据表,语法如下:

        ①create  database  数据库名;         --创建一个数据库

        ②create  table  表名(

                字段名   数据类型   属性   约束条件,

                字段名   数据类型   属性   约束条件, 

                .....

                字段名  数据类型   属性

        );

       我们在建立数据表的时候,语句里面有几个需要注意的地方:

        a.属性和约束条件不是必须的,可以省略

        b.最后一个字段后面是没有   ,   的

        c.同一张表中,字段名是不能相同的

        这两个语句的用法如下图所示(关于语句中的属性和约束,后面我会发文章详细描述:

 2.drop:通常会用这个命令来删除数据表,也会和其他命令一起使用来删除表中的字段,常用命令如下:

        ①drop  table  表名  -- 删除数据表

3.alter:通常用这个命令来修改表的结构

        ①alter  table  旧表名   rename  as   新表名; --修改表名

        ②alter  table  表名   modify  字段名  列类型【属性】; --修改字段属性

        ③alter  table  表名   change  旧字段名   新字段名  列类型  【属性】  --修改字段名和属性

        需要注意的是上面modify和change两个语句都可以修改字段的属性,不同的是change同时可以修改字段的名称,但是modify不行

        ④alter  table  表名  drop   字段名;     --删除字段

        ⑤alter  table  表名  add   字段名  类型   属性;   -- 添加字段

以上几条语句的简单用法如下图所示:

 二、DML(数据操作语句)

        1.insert:通常用这条语句来新增数据,下面就来给学生表中新增一些数据

        ①insert  into  表名(字段1,字段2.....)values  (字段1对应类型的值,字段2对应类型的值.....);

        -- 新增数据(这里需要注意的一点是我们在新增日期类型数据时要用字符串表示)

        2.update:修改数据

        ①update  表名 set  字段名=值(注意是修改后的值)  where  条件;   -- 修改数据

        3.detele:删除数据

        ① delete  from  表名  where  条件;

         ②truncate  【table】 表名;-- 这个语句很简单就是清空一张表的数据,其中table可以省略

三、DQL(数据查询语句) 这个语句在数据库中是比较重要的,具体语句如下:

单表查询:

1.简单查询语法

        ①select  字段/*  from  表名; --从一张表里查询相应的数据(*表示全部数据)

        ②select  字段 新字段名  from  表名:  --在查询字段数据时可以给字段起别名

        ③select  distinct  字段名   from  表名;   --可以对查询出来的数据做去重处理

        

     2.DQL条件查询语法(关于条件查询有几个关键字,下面这些例子就是这些关键字的简单用法)

        ①where关键字(条件查询)

                select   字段名  from    表名    where   条件;

        ② like关键字(模糊查询):经常会和%(表示若干个字符)_(表示一个字符)一起使用

                select   字段名   from   表名  where  字段 like   条件;       

          ③in关键字(范围查询)

                select  字段名   from   表名   where   字段  in  (值1,值2....);

        

         ③null值查询:这里需要注意的是,对null值查询的关键字要用is

         ④group by分组查询和having(分组查询):经常会和聚合函数一起使用

        select  字段  from  表名   group  by  字段名   having   条件;

        常用的聚合函数:    avg(字段名)——求平均值,sum(字段名)——求和 ,max(字段名)——求最大值, min(字段名)——求最小值,  count(字段名)——求总和,这五个聚合函数的是用的比较频繁的,用法也不是很复杂,下面就举一个和分组查询相结合的例子:

        ⑤order by(排序):这里需要主要的是在排序时要搭配两个关键字  asc(升序排序,可以省略)和desc(降序排序,不可省略,如果省略系统会默认为升序)

        select  字段   from  表名  order  by  字段名   desc/asc;

         ⑥limit(限制查询关键字):通常用来限制查询页数

        select  字段  from  表名  limit n,m;--通俗的讲就是查询从第n(不包含n)条数据开始,长度为m的几条数据,经常会用这个关键字来实现数据的分页查询,此时n和m的值就可以用公式来表示

n=(页码-1)*每页显示的数据数量,m=每页显示的数据数量

 3.DQL高级查询语句

        ①多表联查

        非等值查询:select  *  from  表1,表2;--需要注意的是这种不加判断的查询方法,查询出来的数据会有重复,可能得不到想要的数据,所以大多数情况下我们会采用等值联查的方式查询数据。

        等值查询:

              a.内联查询:

                        写法一:SELECT 字段名 FROM 表名... where 条件判断 AND 条件判断

                       写法二:select  *  from   表名   inner   join   表名  on  等值条件判断  where   条件;

以上两种写法都可以达到同样的查询效果,我们可以根据自己的需要来选择使用哪种查询方式

          b. 外联查询:

                     select  * from 表名  left  join  表名   on   等值判断条件   where   判断条件;--左联查

                     select  * from 表名  right  join  表名   on   等值判断条件   where   判断条件;--右联查

外联查询和内联查询,虽然都可以拿到我们想要查询的数据,他俩还是有一些区别:            

如上图所示:

a.内联查询:select  *  from   表A  inner  join  表B   on  等值判断条件;

                这条内联查询语句其实就是查询 表A 和 表B 共有的数据 集C

b.左外查询:select  *  from   表A  left  jion  表B   on   等值判断条件;

                这条左联查询语句其实就是将  jion  左边的表A作为主表,先拿出表A所有的数据,然后        再根据等值判断条件,查询出表A和表B共有的数据集  C,所以查询的结果就是图中:表A数据集+C数据集  

c.右联查询:select  *  from  表A  right  join  表B on  等值判断条件;

                这条右连结查询语句的原理和左连接差不多,只是把join右边的表B作为主表,先查询出表B中所有的数据,然后在根据判断条件查询出表B和表A共有的数据集C,所以得到的结果就是图中: 表B数据集+C数据集

 再强调一点,左联和右联的判断依据是jion关键字的左边和右边作为主表。

②子查询

        a.where子查询(把查询出来的数据集作为where后面的条件判断)

        如下图所示,将学号最大的学生查询出来作为where判断的条件,where子查询的写法

        b.from子查询(把内层的查询结果当成一个临时表,供外层的查询来用,临时表在使用时最好要起个别名)

        c. exist子查询(exists后面跟上内层查询,如果这个内层查询成立,外层查询才会生效,最终查出的结果是外层查询的数据)

        d.any/some(这两种子查询必须和条件判断符一起使用)

        select  *  from  表名  where  a>any(2,3,4);    这条语句相当于下面这条

        select  *  from  表名  where  a>2  or  a>3  or  a>4;

        some和any的用法是一模一样的,只是名字不同

        e.all子查询(这种子查询和any类似,只是后面的需要满足全部的条件判断)

        select  *  from  表名  where  a>all(2,3,4);    这条语句相当于下面这条

        select  *  from  表名  where  a>2  and  a>3  and  a>4;        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值