MySQL常见操作

转载请注明转载地址:https://www.cnblogs.com/mr-zhao/p/9097980.html

一、SQL语句分类

  • 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
  • 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。关键字:insert,delete,update等
  • 数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户
  • 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等

二、数据库操作

  • 创建数据库(create)

    • 直接创建:
      • create database 数据库名;
    • 创建特定编码的数据库:
      • create database 数据库名 character set 字符集;
  • 查看数据库

    • 查看数据库中:
      • show databases;
    • 查看数据库定义信息:
      • show create database 数据库名;
  • 使用数据库

    • 查看正在使用的数据库:
      • select database();
    • 其他的数据库操作命令:
      • use 数据库名;

三、表的操作

  • 创建表:
    • create table 表名(字段名 类型(长度) [约束], 字段名 类型(长度) [约束],
      ...);
  • 查看表:
    • 查看数据库中的所有表:
      • show tables;
    • 查看表结构:
      • desc 表名;
  • 删除表:
    • drop table 表名;
  • 修改表结构格式:
    • 修改表添加列:
      • alter table 表名 add 列名 类型(长度) [约束];
    • 修改表修改列的类型长度及约束:
      • alter table 表名 modify 列名 类型(长度) 约束;
    • 修改表修改列名:
      • alter table 表名 change 旧列名 新列名 类型(长度) 约束;
    • 修改表删除列:
      • alter table 表名 drop 列名;
    • 修改表名:
      • rename table 表名 to 新表名;
    • 修改表的字符集:
      • alter table 表名 character set 字符集(了解);
  • 插入表记录:
    • 向表中插入某些字段:
      • insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);
      • insert into 表 values (值1,值2,值3..);
  • 注意:
    • 值与字段必须对应,个数相同,类型相同
    • 值的数据大小必须在字段的长度范围内
    • 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
    • 如果要插入空值,可以不写字段,或者插入 null。
  • 修改表
    • 更新所有记录的指定字段
      • update 表名 set 字段名=值,字段名=值,...;
    • 注意:
      • 列名的类型与修改的值要一致.
      • 修改值得时候不能超过最大长度.
      • 除了数值类型外,其它的字段类型的值必须使用引号引起.
  • 删除记录
    • 单单删除记录
      • delete from 表名 [where 条件];
    • 初始化表
      • truncate table 表名;

四、约束

  • 主键约束
    • PRIMARY KEY
      • 主键必须包含唯一的值。
      • 主键列不能包含 NULL 值。
      • 每个表都应该有一个主键,并且每个表只能有一个主键。
    • 添加主键约束
      • 创建表时,在字段描述处,声明指定字段为主键
        • crtea table 表名 (字段名 字段类型 primary key,字段名 字段类型 ....);
      • 创建表时,在constraint约束区域,声明指定字段为主键
        • crtea table 表名 (字段名 字段类型,字段名 字段类型 .... ,constraint 主键名 primary key(字段1,字段2...));
      • 创建表之后,通过修改表结构,声明指定字段为主键
        • alter table 表名 add primary key(字段1,字段2...);
    • 删除主键约束
      • alter table 表名 drop primary key;
  • 自动增长列
    • auto_increment
    • 一般是主键
    • create table 表名 (字段1 字段类型 primary key auto_increment,字段2 字段类型 .....);
  • 非空约束
    • not null
    • create table 表名 (字段1 字段类型 nut null,字段2 字段类型 .....);
  • 唯一约束
    • unique
    • 方式一
      • create table 表名 (字段1 字段类型 unique,字段2 字段类型 .....);
    • 方式二
      • create table 表名 (字段1 字段类型 ,字段2 字段类型 ..... , constranit 约束名 unique(字段));
    • 方式三
      • alter table 表名 add constraint 约束名 unique(字段);
    • 删除唯一约束
      • alter table 表名 drop index 约束名;
  • 外键约束
    • 从表外键的值是对主表主键的引用。
    • 从表外键类型,必须与主表主键类型一致。
    • 声明外键约束
      • alter table 从表 add [constraint] [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键);
      • [外键名称] 用于删除外键约束的,一般建议“_fk”结尾
    • 使用外键目的:
      • 保证数据完整性

五、表数据的查询

  • 简单查询
    • select [distinct] * | 列名[as 别名],列名 from 表名 [as 别名] where 条件;
      • distinct 去重
      • as 别名 也可以省略 as
      • 查询字段可以当做参数进行运算(字段+1...)
  • 条件查询
    • 比较运算符
      • 大于、小于、大于(小于)等于、不等于

        • < <= >= = <> !=

      • 显示在某一区间的值(含头含尾)

        • BETWEEN ...AND...
      • 显示在in列表中的值

        • IN(值1,值2,...)
      • 模糊查询,Like语句中,%代表零个或多个任意字符,_代表一个字符

        • LIKE '....'
      • 判断是否为空

        • IS NULL
    • 逻辑运算符
      • 多个条件同时成立
        • and
      • 多个条件任一成立
        • or
      • 不成立
        • not
  • 排序查询
    • SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
      • ASC 升序 (默认) |
        DESC 降序
  • 聚合查询
    • count:统计指定列不为NULL的记录行数;
    • sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
    • max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
    • min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
    • avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
    • SELECT 聚合函数名(字段名) FROM 表名;
  • 分组查询
    • SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;
    • having与where的区别:
      • having是在分组后对数据进行过滤
      • where是在分组前对数据进行过滤
      • having后面可以使用分组函数(统计函数)
      • where后面不可以使用分组函数
  • 多表查询
    • 交叉连接查询(基本不会使用-得到的是两个表的乘积)
      • select * from A,B;
    • 内连接查询(使用的关键字 inner join , inner可以省略)
      • 隐式内连接:select * from A,B where 条件;
      • 显示内连接:select * from A inner join B on 条件;
    • 左外连接:
      • left outer join
        select * from A left outer join B on 条件;
    • 右外连接:
      • right outer join
        select * from A right outer join B on 条件;
posted @ 2018-05-27 22:59  鶸丶  阅读(112)  评论(0)    收藏  举报