美文网首页
库与表的操作

库与表的操作

作者: Yazh | 来源:发表于2021-01-04 17:32 被阅读0次

    一、数据库相关操作

    SELECT VERSION(); -- 查看版本
    SELECT USER(); -- 查看当前用户
    SHOW DATABASES; -- 查看所有库
    USE world; -- 使用 world 库
    SELECT DATABASE(); -- 查看当前库
    SHOW TABLES; -- 查看当前数据库下所有的表
    CREATE DATABASE[IF NOT EXISTS] world; -- 创建库
    DROP DATABASE [IF EXISTS] world; -- 删除库
    

    二、数据表相关操作

    数据表 table : 数据库中表名唯一,由一个或多个列(column)组成,表中数据按行存储。

    DESC table_name;  -- 查看表的数据类型
    SHOW COLUMNS FROM table_name;
    

    1. 创建表

    CREATE TABLE [IF NOT EXISTS] tablename 
    (字段名   字段类型            【字段约束】
    id          int              NOT NULL AUTO_INCREMENT,
    col1        int              NOT NULL DEFAULT 1,
    col2      CHAR(20)           NULL,
    PRIMARY KEY(id) );
    
    1. AUTO_INCREMENT: 每个表只允许一个AUTO_INCREMENT列,而且必须被索引
    2. 使用INSERT增加一行时,该列自动增量
    3. IF NOT EXISTS:用以判断当前数据库是否存在同名表

    1. 常见约束

    1. NOT NULL 非空:用于限制该字段为必填项
    2. DEFAULT 默认:用于限制该字段没有显式插入值,则直接显式默认值
    3. PRIMARY KEY 用于限制该字段值不能重复,设置为主键列的字段默认不能为空【一个表只能有一个主键,当然可以是组合主键】
    4. UNIQUE 唯一:用于限制该字段值不能重复
    5. CHECK 检查:用于限制该字段值必须满足指定条件
      CHECK(age BETWEEN 1 AND 100)
    6. FOREIGN KEY 外键:用于限制两个表的关系,要求外键列的值必须来自于主表的关联列
      要求:
      ①主表的关联列和从表的关联列的类型必须一致,意思一样,名称无要求
      ②主表的关联列要求必须是主键
    CONSTRAINT <约束名> FOREIGN KEY <字段名> REFERENCES <表名>(列名)
    

    2. 数据类型

    1. 整型
      TYNYINT
      SMALLINT
      INT
      BIGINT
    2. 浮点型
      FLOAT(m, n)
      DOUBLE(m, n)
      DECIMAL(m, n)
      m 和 n 可选
    3. 字符型
      CHAR CHAR(n): n 可选
      VARCHAR(n): n 必选,n表示最多字符个数
      TEXT
    4. 日期型
      DATE
      TIME
      DATETIME
      TIMESTAMP
    5. BLOB
      存储图片数据

    2. 插入数据

    Mysql并不关心列的名字,仅关心列的位置,只要顺序对应就可以

    INSERT INTO table1 (col1, col2, col3) 
    VALUES(value1, value2, value3); -- 插入完整的行
    
    INSERT INTO table1(col1, col2, col3)
    VALUES(value1, value2, value3), (value1_, value2_, value3_); -- 插入多行
    
    INSERT INTO table1(col1, col2, col3) 
    SELECT col1, col2, col3 FROM table1; -- 插入检索数据
    

    3. 更新表

    尽量避免使用ALTER TABLE,在更改之前先对数据进行一次备份

    ALTER TABLE stuinfo RENAME TO students; -- 修改表名
    ALTER TABLE students ADD COLUMN borndate TIMESTAMP NOT NULL; -- 添加字段
    ALTER TABLE students CHANGE COLUMN borndate birthday DATETIME NULL; -- 修改字段名
    ALTER TABLE students MODIFY COLUMN birthday TIMESTAMP ; -- 修改字段类型
    ALTER TABLE students DROP COLUMN birthday; -- 删除字段 
    
    ALTER TABLE students ADD CONSTRAINT <约束名> FOREIGN KEY <字段名> REFERENCES <表名>(列名) 
    ALTER TABLE students ADD PRIMARY KEY(字段名) -- 添加约束
    

    4. 复制表

    CREATE TABLE newTable2 LIKE major; -- 仅表结构 
    CREATE TABLE newTable3 SELECT * FROM girls.`beauty`; -- 表结构与数据
    

    5. 删除表

    DROP TABLE [IF EXISTS] table1;
    

    6. 更新与删除数据

    不要省略WHERE字段!
    否则会更新表中全部的值!

    UPDATE table1 SET col1 = value1, col2= value2 WHERE condition -- 更新数据
    
    DELETE FROM table1 WHERE condition -- 删除数据
    

    相关文章

      网友评论

          本文标题:库与表的操作

          本文链接:https://www.haomeiwen.com/subject/rbmvoktx.html