MySQL之SQL语句

SQL语句 

DDL(数据定义语言) 

   1、概述:

        DDL(数据定义语言):用于定义数据库、表等。

2、常见DDL的SQL语句:

     2.1   数据库    

                查看所有数据库    show databases;

                创建数据库           create database  [IF NOT EXISTS]    数据库名    [CHARSET=utf8]

                                            IF NOT EXSTS:表示如果不存在。用于本SQL语句的意思是:如果不存在则创建该数据库

                                            Charset:用于指定该数据库的编码

                删除数据库            drop  database  [IF EXISTS] 数据库名

                                            IF EXISTS:表示如果存在

                使用该数据库        use    数据库名

                修改数据库编码:alter database    数据库名    character   set    UTF-8

    2.2数据库中的表(table)

                查看数据库中的表        show tables

                查看某一个表的表结构        desc    表名

                创建表            create table if    not    exists    表名(列名    列类型,列名    列类型,......)

                删除表            drop    table    if    exists    表名

                修改表         

                        (A):修改列的类型

                                      alter    table    表名    modify    列名    新类型

                        (B):修改列

                                      alter    table     表名    change    旧列名    新列名       新类型

                        (C):更改表名称

                                      alter    table     表名    rename    to    新表名

                        (D):添加列

                                      alter    table    表名       add    列名    类型      

                        (E):删除列     

                                        alter     table    表名    drop    列名        

            

DML(数据操作语言)

DML(数据操作语言):用来定义数据库记录(数据)。增、删、改

 

增:

            (A):指定列的增加单行记录

                insert into  表名(列名,....)values(值,.....)

            (B):不指定列(默认全部列)的增加单行记录

                insert    into 表名     values(值,.....)

            (C):指定列增加多行记录

                         insert  [ignore] into  表名(列名,....)values(值,.....),(值,.....)

 

            (D):不指定列增加多行记录

                         insert  [ignore] into  表名     values(值,.....),(值,.....)

            (E):注意:ignore是属于MySQL特有。

                        作用是:忽略导致错误的行,其余行插入。

删:

            delete from 表名    where  条件   

改:

            update [ignore]   表名        set    列名=值     where 条件

                ignore作用:忽略错误行,继续更新

 

DCL(数据库控制语言)

        DCL(数据控制语言):用来定义访问权限和安全级别。

         创建用户

                    create user  用户名@ip地址    identified   by ‘密码’

                            ip地址:指定该用户名能在哪个ip地址访问。

          删除用户        drop    user    用户名@ip地址

          获得权限        grand    权限列表    on    数据库.表名    to    用户名@IP地址

           撤销权限        revoke    权限列表    on    数据库.表名    from    用户名@IP地址

            查看权限:   show grants    for    用户名@IP地址

 

DQL(数据库查询语言)

    DQL(数据查询语言)用来查询记录(数据)。

    1.构成关键字

            select(必须)    from(必须)    join    where    group by    having    order by    limit            

     2.语句

            2.1 select

            select   *      from     表名            查看表中所有列 ,*表示所有列  

                         例子:     SELECT * FROM demot;

 

            select    列名,....    from    表名        查询表中指定列数据

                        例子:     SELECT ea,eb,ec comm FROM demot;

 

            select   distinct    *    from    表名     查询表中非重复列     

                        例子: SELECT DISTINCT ea,eb FROM demot;

                  2.1.1 关于列的运算

                            算术运算 / +-*

                                select ea+100 from demot;

                            将NULL转换为其他值(一般转换为0)

                                select  IFNULL(ec,0) from demot;

                            起别名可以省略AS

                                select  IFNULL(ec,0)  sdf from demot;

           2.2 where子句        

                    where子句,用于过滤数据(UPDATE和Delete都可以用Where子句)

                        2.2.1where相关运算符

                        where后面加条件,where子句不可以使用聚合函数。

                        用于where的比较运算符        =、!=、<>、<、>、<=、>=

                                    select  *  from  demot  where   ea=1;

                        and 和 OR运算符

                                    select  * from  demot   where   ea !=1 And  eb >=100;

                        IN 和not IN运算符

                                    select  *  from  demot   where   ea in (1,2,10,50);

                        beween ....   and.....   

                                        select  *  from  demot   where    eb  between 10  and 100

                                        select  *  from   demot  where   eb >=10  and   eb<=100    //等价于上面那句

                            

                        LIKE和 not Like运算符    用于模糊查询  %匹配0-N个字符;_匹配0-1个字符。

                                    select   *  from    demot   where   ee  like   ‘张_’

                                     select   *  from  demot  where  ee  not like  '李%'

                        IS Null和IS not null    判断空和非空

                                    select  *  from   demot  where ef is not  null;   

           2.3 Limit子句

                            指定查询结果集的行数

                            语法:

                                        1、 limit     offset    count    

                                                    offset指定第一个返回记录行的偏移量。

                                                    count    指定返回的最大行数

                                            例子: select  *  from   demot  limit  2,5     //查看第3到7行数据

                                        2、 limit    N        //指定返回前几行数据

                                            例子:select    *  from  demot  limit  5      //查询前五行数据

 

              2.4 order  by 子句

                            用于排序。 ASC是升序(默认)        DESC是降序

                            单个数据排序

                                    select   *  from   demot  order  by  ea ASC   //根据ea升序排序;asc可以省略 

                            多个数据

                                    select   *  from demot order by ea asc,eb desc  //根据ea升序排序,若ea相等,则按照eb降序排序。

 

               2.5 group by和having

                            用于分组,通过列或者表达式的值将查询到的行分组为几个小分组。

                            group常与聚合函数一起使用(聚合函数详见后期博文)

                            例子

                                    select *  from  t1 group by   st   having  条件     // (   条件用于筛选每组数据)

 

 

             2.6多表查询

                    2.6.1 子查询

                            出现位置where 之后作为条件存在

                            出现在from作为表存在,

                    2.6.2连接查询

                           A: 内连接 inner join

                                返回表中连接字段相同的行。除去不匹配的行。

                                select * from A inner join  b on a.id=b.id

                            B:  笛卡尔积cross join

                                返回两表的笛卡尔积

                                select * from  tableA cross  join tableB

                            C:外连接

                                    C-1:左外连接left Join   

                                        返回左表中的所有记录和右边中的联结字段(左表中无匹配的行,用null值表示)

                                        select * from A  left join  B  on  A.id=B.id

                                    C-2:右外连接 right join

                                        返回右表中的所有记录和左边中的联结字段(右表中无匹配的行,用null值表示)

                                        select * from A  right join  B  on  A.id=B.id

                                    C-3全外连接 Full join

                                        就是左外连接和右外连接的并集。Mysql无此语法、实现方式如下:

                                         select * from A  right join  B  on  A.id=B.id

                                         union

                                         select * from A  left join  B  on  A.id=B.id

                                        

                    2.6.3 union 和  union all                                    

                                将两个或者多个结果集合并在一起

                                union :去除重复行

                                union all:不去除重复行

                                (注意:两个结果集必须具有相同的数量的列和相似的数据类型)

            

                                            

                

    

 

 

 

    

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值