首页 > 其他 > 详细

数据表操作

时间:2019-11-07 23:03:29      阅读:93      评论:0      收藏:0      [点我收藏+]

-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; --查看当前数据库中的所有的表


--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

);



  

数据表操作

原文:https://www.cnblogs.com/ljyshizhu/p/11816046.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!