MySQL常用语句

一、常用语句分类:

  (1DDL:数据定义语言:用来定义数据库对象:创建库,表,列等;

  (2DML:数据操作语言:用来操作数据库中的记录;

  (3DQL:数据查询语言:用来查询数据库;

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

二、DDL定义:

  1、操作数据库:

    1)查询所有库:show databases;

    2)使用库:use 数据库名;

    3)创建库:CREATE DATABASE 数据库名 CHARACTER SET utf8;

    4)删除库:DROP database 库名;

  2、操作表:

    1)查询所有表:show tables;

    2)查询表字段:DESC 表名;

    3)创建表:CREATE TABLE 表名(列名1 列的类型 [约束]列名2 列的类型 [约束]);

CREATE TABLE USER ( id BIGINT PRIMARY KEY auto_increment, NAME VARCHAR ( 20 ), age INT );

    4)删除表:DROP TABLE 表名;

    5)修改表名:RENAME TABLE 原始表名 TO 要修改的表名;

    6)修改表的字符集:ALTER TABLE 表名 CHARACTER SET 字符集名称;

        --------------------------------------------------------------------------

    7)修改表中列的字段类型:ALTER TABLE 表名 MODIFY 字段名 数据类型;

    8)修改表中的字段名:ALTER TABLE 表名 CHANGE 原始列名 新列名 数据类型;

    9)添加一列:ALTER TABLE 表名 ADD 列名 数据类型;

    10)删除一列:ALTER TABLE 表名 DROP 字段名;

三、DML操作:

  1、插入操作:INSERT INTO 表名 (列名1,列名2) VALUES(列值1,列值2),(列值1,列值2);

INSERT INTO user (name,age) VALUES ("zs",12),("ls",15),("ws",18);

  2、更改操作:UPDATE 表名 SET 列名1=修改后的列值1,列名2=修改后的列值2 。。。 WHERE 列名=值;

UPDATE user set name="ww",age=100 WHERE name="zs";

  3、删除操作:

    1)DELETE FROM 表名 WHERE 列名=值;

    2)TRUNCATE TABLE 表名;

    //DELETE删除表中的数据,表结构还在,数据可以找回;

    //truncate 直接用DROP把表删除,再创建一个同样的新表,数据不能找回,执行速度快;

 四、DQL查询:

  1、条件查询WHERE:后面可加运算符和关键字;

    1) =   !=    <>    <    <=    >    >=;

    2)BETWEEN…AND; 值在什么范围,包含首尾;例:between 值1 and 值2;

    3)IN(SET);固定的范围值;例:in(值1,值2,值3);

    4)IS NULL:为空;IS NOT NULL:不为空;//性能差,用isnull()函数;

    5)AND;与;

    6)OR;或;

    7)NOT;非;

    8)+ - * % %;算术运算符;//性能极差,千万别用;

   2、模糊查询LIKE:后面可加通配符;

    注释:like后面需要单引号括起来;

SELECT * FROM user where age LIKE '%'

    通配符:

      (1) _:任意一个字母;

      (2) %:任意0-n个字母;

    举例:1)%s%:包含s;2) _s%:第二个字母是s;

  3、字段控制查询:

    1)去重:SELECT DISTINCT 列名 FROM 表名;

    2)把查询的字段结果进行运算,值必须是数值型:

      (1) SELECT *,字段1+字段2 FROM 表名;

      (2) 当查询结果为null时:SELECT *,字段1+IFNULL(字段2,0) FROM 表名;

    3)对查询结果起别名:关键字:AS;

      例: SELECT *,字段1+字段2 AS 别名 FROM 表名;

      注释:(1)as可以省略;(2)不能加引号;

  4、排序:

    1)关键字:ORDER BY;

    2)排序类型:

      (1) 升序:ASC;

      (2)降序:DESC

      例:select * from 表名 order by 列名1 asc,列名2 desc;

   5、聚合函数:

    1)COUNT():统计指定列不为NULL的记录行数;select count(*/列名),count() from 表名;

    2)MAX():计算最大值,如果是字符串,则使用字符串排序运算;

    3)MIN():计算最小值,如果是字符串,则使用字符串排序运算;

    4)SUM():计算和,如果不是数值类型,则为0;//select sum(列名) from 表名;

    5)AVG():计算平均数,如果不是数值类型,则为0;

    //结果是一个可能不存在的数据,因此无法和表中的数据进行比对;

    //聚合函数是对记录的一个压缩的过程,得到的是一个数值;

   6、分组查询:

    1)关键字:GROUP BY;例:select 列名1 from 表名 group by 列名1

    2)显示组内集合:group_concat();例:select 列名1group_concat(列名2) from 表名 group by 列名1

    3)group by+聚合函数;

    4)分组后条件查询:group by +having;例:select 列名1,group_concat(列名2),sum(列名2) from test GROUP BY 列名1 having sum(列名2)>12;

    书写顺序:select    from    where    group by   having    order by    limit

    执行顺序:from    where    group by   having    select    order by    limit

  7、LIMIT:

    1)LIMIT参数1,参数2

      参数1:从哪一行开始;

      参数2:一共查几行;

    2)角标从0开始;

    3)分页思路:

      int curPage=1//当前页

      int pageSize=3//每页数据;

      --当前页为1第一页从0开始(1-1*3=0

      --当前页为2第一页从3开始(2-1*3=3

      --当前页为3第一页从6开始(3-1*3=6

      select * from 表名 limit (curPage-1)*pageSize,pageSize

 

五、多表查询:

 

1.合并结果集:

 

  (1)方式:1)UNION去除重复记录;2)UNION ALL不去除;

 

  (2)格式:1)select * from 表1 UNION select * from 表2;2)select * from 表1 UNION ALL select * from 表2;

 

2.笛卡尔积:select * from 表1,表2;

  两表查询:select * from 表1,表2 where 表1.id=表2.id;

 

  三表查询:select * from 表1,表2,表3 where 表1.id=表2.id and 表2.id=表3.id;

 

3.连接查询:

 

   1.内连接(查左右相等):select * from 表1 as 别名 INNER JOIN 表2 as 别名 ON 表1.id=表2.id;112

 

    三表查询:select * from 表1 join 表2 on 表1.id=表2.id join 表3 on 表2.id=表3.id;

 

   2.外连接:

 

    (1)左外连接(查左右相等,加左表数据):left outer jion;

 

    (2)右外连接(查左右相等,加右表数据):right outer jion;//没人用;

 

  3.非等值连接:在等职连接的基础上,用运算符;

 

  4.自然连接:natural join;

 

    注释: 

 

    (1)使用自然连接必须有列名一致,否则产生笛卡尔集;

 

    (2)两行列名一样,则两列数据都相等才会被查出;

 

4.子查询:把一个select语句的结果,当作另一个select的条件值或者表(where或者from后面);

 

5.自连接:如果需要查同一个表两次,可以给表起别名两次来查询;

 

 

 

 

 

 

 

 

posted @ 2019-07-31 23:24  开拖拉机的拉风少年  阅读(168)  评论(0编辑  收藏  举报