avatar

MySQL总结(一)

一、MySQL语言组成

1.数据定义语言DDL

  • CREATE 创建数据库或数据库对象
  • ALTER 对数据库过数据库对象进行修改
  • DROP 删除数据库或数据库对象

2.数据操纵语言DML

  • SELECT 从表或视图中检索数据
  • INSERT 将数据插入到表或视图中
  • UPDATE 修改表或视图中的数据
  • DELETE 从表或视图中删除数据

3.数据控制语言DCL

  • GRANT 授予权限
  • REVOKE 收回权限

4.MySQL扩展增加的语言

  • 常量、变量、运算符、表达式、内置函数

二、数据库和表

1.创建和使用数据库

  • 创建数据库

    CREATE DATABASE IF NOT EXISTS mytest;

  • 选择数据库

    USE mytest;

  • 修改数据库
    1
    2
    3
    ALTER DATABASE mytest
    DEFAULT CHARACTER SET gb2312 /* 设置字符集为gb2312 */
    DEFAULT COLLATE gb2312_chinese_ci; /* 设置默认校对规则 */
  • 删除数据库

    DROP DATABASE IF EXISTS mytest;

  • 查看数据库

    SHOW DATABASE [LIKE ‘mytest’] /* 列出当前用户权限范围内的数据库*/

2.创建和操纵表

  1. 创建表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    USE mytest
    CREATE TABLE students
    (
    student_id INT NOT NULL AUTO_INCREMENT, /* 使用自增长 */
    student_name CHAR(50) NOT NULL,
    student_sex CHAR(1) NOT NULL DEFAULT 0,
    student_age INT NOT NULL,
    student_major CHAR(50) NOT NULL,
    student_contact CHAR(50) NULL,
    PRIMARY KEY(student_id) /* 设置student_id字段为主键 */
    )ENGINE=InnoDB /* 使用InnoDB引擎 */
    • 字段的数据类型
      • 数值类型
      • 日期和时间类型
      • 字符串类型
    • AUTO_INCREMENT的使用
      • 每个表只能有一个,并且它必须被索引
    • 指定默认值
      • DEFAULT,不同数据类型的默认值不一样
    • NULL值
      • 空串’’与0不是无值,注意区分
    • 主键
      • PRIMARY KEY,一个表只能有一个主键约束,而且约束中的列不接受空值,主键约束确保唯一数据,经常用来定义标识列
    • 引擎类型
      • SHOW ENGINES显示数据库引擎和默认引擎,InnoDB为默认引擎
  2. 更新表

    • ADD [COLUMN] 增加一列(增加一个属性)

      1
      2
      3
      ALTER TABLE mytest.students
      ADD COLUMN student_from char(10) NOT NULL AFTER student_sex
      /* 通过AFTER关键字向表中指定的列后插入新列,同样也有FIRST */
    • CHANGE [COLUMN] 修改表中指定列的名称和数据类型

      1
      2
      3
      ALTER TABLE mytest.students
      CHANGE COLUMN student_from student_city char(20) NULL; /* 注意数据的兼容丢失 */
      /* 修改student_from列重命名为student_city,且修改数据类型 */
    • ALTER [COLUMN] 修改或删除表中指定列的默认值

      1
      2
      3
      ALTER TABLE mytest.students
      ALTER COLUMN student_sex SET DEFAULT 1;
      /* 修改默认值为女 */
    • MODIFY [COLUMN] 修改指定列的数据类型,但是不会干涉他的列名

      1
      2
      3
      ALTER TABLE mytest.students
      MODIFY COLUMN student_name char(20) FIRST;
      /* 将char(50)改为char(20) */
    • DROP [COLUMN] 删除表中的列

      1
      2
      ALTER TABLE mytest.students
      DROP COLUMN student_contact;
    • RENAME [TO] 重命名一个表

      1
      2
      3
      4
      ALTER TABLE mytest.students
      RENAME TO university_student;
      -------------或者------------
      RENAME TABLE mytest.students TO mytest.students;
  3. 复制表

    • 为students创建一个备份students_copy

      CREATE TABLE mytest.students_copy LIKE mytest.students;

  4. 删除表

    • DROP TABLE 表名[, 表名, 表名]

      DROP TABLE students_copy;

  5. 查看表

    • SHOW TABLES [FROM <数据库名>] [LIKE <模式>]

      SHOW TABLE FROM mytest;

    • 显示表的结构

      SHOW COLUMNS FROM students;

  6. 表结构进阶

    • 关于空值
      不可将它与数字0或字符类型的空字符混淆,表的关键字不允许为空,任意两个空值不相等。

    • 关于列的标志(IDENTITY)属性
      一个表只允许有一个,可以作为键值,可以指定起始值和增量值

    • 关于列类型的隐含改变
      定义数据类型时,数据库会偷偷的改变某些类型以提高效率的!

文章作者: Gy
文章链接: http://sgyat.cn/2020/02/14/MySQL(一)/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 年轻没有梦
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论