zoukankan      html  css  js  c++  java
  • 数据表操作

    数据表操作
    --1.创建表(类似于一个excel表)
    --基本语法
    CREATE TABLE 表名(
                field1 type[完整性约束条件],
                field2 type,
                ...
                fieldn type
            )[CHARACTER SET XXX];
    --创建一个员工表employee
    mysql>CREATE TABLE employee(
                id INT PRIMARY KEY AUTO_INCREMENT,
                name VARCHAR(20),
                gender BIT DEFAULT 1,                -- gender CHAR(1)  DEFAULT 1   --或者 TINYINT(1)
                birthday DATE,
                entry_date DATE,
                job VARCHAR(20),
                salary DOUBLE(4,2) unsigned,
                resume TEXT                          -- 注意,这里作为最后一个字段不加逗号
      );
       
        /* 约束:
           PRIMARY KEY (非空且唯一):能够唯一区分出当前记录的字段称为主键!
           UNIQUE 唯一
           NOT NULL 非空
           AUTO_INCREMENT 主键字段必须是数字类型。使用AUTO_INCREMENT设置字段值自动增加。
           外键约束 FOREIGN KEY  */
    --2.查看表信息
        DESC 表名; --查看表结构,即查看表的字段信息,其中包括字段名、字段类型等信息
     
        SHOW COLUMNS FROM 表名;  --查看表结构
     
        SHOW TABLES; --查看当前数据库中的所有的表
     
        SHOW CREATE TABLE 表名; --查看当前数据库表建表语句
    --3.修改表结构
       --(1)增加列(字段)      --默认在表已有字段的后面添加
          ALTER TABLE 表名 ADD [COLUMN] 列名 类型[完整性约束条件][FIRST|AFTER 字段名];
      --ALTER TABLE user ADD addr VARCHAR(20) NOT NULL UNIQUE FIRST/AFTER username;
                                                             --FIRST用于将新添加的字段设置为表的第一个字段
                   --AFTER用于将新添加的字段添加到指定的"已存在字段名"的后面
                   
      --添加多个字段
       ALTER TABLE employee
        ADD addr VARCHAR(20),
        ADD age  INT FIRST,
        ADD depart VARCHAR(20) AFTER name;
       --(2)修改一列类型
          ALTER TABLE 表名 MODIFY 列名 类型 [完整性约束条件][FIRST|AFTER 字段名];
      --ALTER TABLE employee MODIFY age TINYINT DEFAULT 20;
      --ALTER TABLE employee MODIFY age TINYINT AFTER id;
      
       --(3)修改列名
          ALTER TABLE 表名 CHANGE [COLUMN] 列名 新列名 类型 [完整性约束条件][FIRST|AFTER 字段名];
      --ALTER TABLE employee CHANGE age Age INT DEFAULT 28 FIRST;
       --(4)删除一列
          ALTER TABLE 表名 DROP [COLUMN] 列名;
          --思考:删除多列呢?
       ALTER TABLE 表名 DROP [COLUMN] 列名1,
            DROP [COLUMN] 列名2;
       --删一个填一个呢?
          ALTER TABLE employee
                ADD salary FLOAT(6,2) UNSIGNED NOT NULL AFTER name,
                DROP addr;   
       --(5)修改表名
          RENAME TABLE 表名 to 新表名;
      
       --(6)修该表所用的字符集   
          ALTER TABLE student CHARACTER SET utf8;
          ALTER TABLE student CHARACTER SET gbk;
      
    --4.删除表
        DROP TABLE 表名;
     
    表的约束
          PRIMARY KEY  --主键约束,用于唯一标识对应的记录
       FOREIGN KEY  --外键约束
       NOT NULL     --非空约束
       UNIQUE       --唯一性约束
       DEFAULT      --默认值约束,用于设置字段的默认值
      
    主键约束  --唯一标识表中的记录
        --语法:
            字段名 数据类型 PRIMARY KEY
      单字段主键
    mysql>CREATE TABLE users(
                id INT PRIMARY KEY,
                name VARCHAR(20),
                city VARCHAR(20)
            );
        主键字段特点:非空且唯一
      多字段联合主键
    mysql>CREATE TABLE users2(
                id INT,
                name VARCHAR(20),
                city VARCHAR(20),
                PRIMARY KEY(name,id)
              );
        <1> 一张表只能有一个主键
        <2> 主键类型不一定非是整型
     
     --添加主键,
       ALTER TABLE 表名 ADD PRIMARY KEY(字段名称,...);
        --删除主键
       ALTER TABLE users DROP PRIMARY KEY;
     --每张表必须有主键
    mysql> CREATE TABLE test5(num INT AUTO_INCREMENT);
        ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
     --修改如下
    mysql>CREATE TABLE test(num INT PRIMARY KEY AUTO_INCREMENT);
     
     --思考,如何删除主键?
       ALTER TABLE test MODIFY id INT;   -- auto_increment没了,但这样写主键依然存在,所以还要加上下面这句
          ALTER TABLE test DROP PRIMARY KEY;-- 仅仅用这句也无法直接删除主键
    非空约束  --字段的值不能为NULL
        字段名 数据类型 NOT NULL
    mysql>CREATE TABLE users3(
                id INT PRIMARY KEY,
       name VARCHAR(20) NOT NULL,
       grade FLOAT
      );
    唯一约束  --用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。
    mysql>CREATE TABLE users4(
       id INT PRIMARY KEY,
       stu_id INT UNIQUE,
       name VARCHAR(20) NOT NULL
      );
    默认约束  --用于给数据表中的字段制定默认值,即当在表中插入一条新纪录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。
    mysql>CREATE TABLE users5(
       id INT PRIMARY KEY AUTO_INCREMENT,
       stu_id INT UNIQUE,
       grade FLOAT DEFAULT 0
      );
  • 相关阅读:
    使用python将文字写入word文档中
    将图片显示到excel中
    新的写入xlsxwriter和追加写入openpyxl
    oracle 12.2 alter table move online
    主从复制管理和故障处理方法
    MySQL中的权限管理
    windows的CMD如何全屏最大化
    Troubleshooting query v$asm_disk v$asm_diskgroup hang
    library cache锁争用解决
    一则由ORA-1652引起的fixed object相关问题
  • 原文地址:https://www.cnblogs.com/lixiangyi200174/p/11815890.html
Copyright © 2011-2022 走看看