MySQL基础知识

MySQL基础知识总结

数据库基本概念:

  • DB database 数据库

    DBMS database management system 数据库管理系统

    SQL Structure Query Language

    table 表

    column 列 表中的一个字段

MySQL的语言规范:

  • 不区分大小写,但建议关键字大写、表名、列名小写

    每条命令用分号

    每条命令、根据需要,可以进行缩进或换行

    注释解释说明 单行注释 #注释文字 多行注释 /**/

字段类型:

  1. int 整数类型
  2. double( m,d ) 双精度浮点数 小数类型
  3. char ( ) 长度不可变
  4. varchar ( ) 长度可变
  5. datatime xxxx-xx-xx 00:00:00
  6. date xxxx-xx-xx

约束(constraint):

  • unique

    保证一列中数据是唯一的

    • 与主键的区别:

      表中可以含有多个唯一约束,但每一个表只允许一个主键

      唯一约束可以包含null值

      唯一约束不可以定义外键

  • primary key

    每行都具有主键值( 主键值不允许null值 )

    主键值各不相同

  • not null 数值不为空

  • auto_increment 自增长

    1. 数据类型不能是字符型
    2. 必须是主键
  • commit ‘ ‘ 注释

  • foreign key 外键

    • 外键是表中的一列,其值必须列在另一表的主键中

      外键保证数据的完整性

      外键有助于防止意外删除数据

    • 定义外键的方法

      references table ( name )

      foreign key ( name ) references table ( name )

DDL数据定义语言基本语句:

  • create database name character set utf8 创建数据库

  • show database 查看MySQL数据库管理系统中所有数据库

  • drop database name 删除数据库

  • use name 切换数据库

  • select database() 查看当前选择的数据库

  • 创建表:

    create table name(
    字段 ( ) 约束,
    )
    

DML数据操纵语言基本语句:

  • 添加数据:

    insert into table ( 字段 ) values ( 值 )

  • 修改数据:

    update table set name=‘ ‘ where name = ‘ ‘

  • 删除数据:

    delete from name where name=‘ ‘

  • 添加字段:

    alter table name

    add name type () /after name 在name后添加字段

  • 修改字段:

    alter table name

    modify name type()

    字段的修改包括修改数据类型(只有对应列为空指才可以修改)、大小和默认值(默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响);不能修改字段约束、字段先后顺序和注释。

  • 删除字段:

    alter table name

    drop name

    一个表至少要保留一个字段;如果所删列(如user_info表中id列)是另一个表的外键(address表user_info_id)则该列(user_info表中id列)无法删除。

DCL数据控制语言基本语句

  • 事务处理:通过确保成批的SQL 操作要么完全执行,要么完全不执行,来维护数据库的完整性

  • 事务:

    四大特性:1.原子性2.一致性3.隔离性4.持续性

    一个事务未结束前,所影响的语句被锁定,其他用户不能改变受影响行中的数据。

  • set autocommit = 0 取消自动提交

    commit 提交 将未存储的SQL语句写入数据库表

    rollback 撤销指定SQL 语句

DQL数据查询语言基本语句:

  • select 查询列表 from 表名

  • 起别名:

    SELECT name AS 别名 ( 建议使用这种 )

    SELECT name 空格 别名

    from name 别名 表的别名一般用于多表查询

  • select * from name;

    查询所有字段 真实开发中一般不用

    会降低检索速度和应用程序的性能

  • select distinct name from name

    distinct 必须放在 select 后面 列名前面

  • 条件查询

    select 查询列表

    from 表名

    where 筛选条件

    • 按条件表达式筛选条件运算符:

      < > = != <> >= <= between and is null is not null

    • 按逻辑表达式筛选 逻辑表达式筛选 逻辑运算符

      and or in not

  • 模糊查询

    like — 和通配符一块使用 只能用于文本字段

    • % 可以匹配0个或多个字符
    • _ 只可以匹配单个字符
  • 排序 order by

    select 选择列表

    from 表名

    where 筛选条件

    order by 对筛选结果进行排序

    • order by desc 降序 asc 升序( 默认 )

      order by 一般放在最后

      对过滤的数据进行排序

  • 分组 group by

    select 选择列表

    from 表名

    where 筛选条件

    group by 分组

    having 对分组进行查询

    order by 对筛选结果进行排序

    • 如果分组中包含null值的行,则null 将作为一个分组返回
    • group by 子句必须出现在 where 子句之后, order by 之前
    • where 在数据分组前进行过滤, having 在数据分组后进行过滤
  • 多行函数/聚集函数:

    • 对多行数据运行的函数,计算并返回一个值

      avg ( ) 平均值

      count ( )

      1. count ( * ) 对表中行的数目进行计数,包含null值
      2. count(column)对特定列中具有值的行进行计算,忽略null值

      max ( ) 最大值

      min ( ) 最小值

      sum ( ) 总和 忽略 null 的值

MySQL基础知识

上一篇:MySQL查询排序和分页


下一篇:Proj THUDBFuzz Paper Reading: Profuzzer