精华内容
下载资源
问答
  • 创建数据表的出生日期
    千次阅读
    2021-01-19 07:00:35

    第1步:设计

    首先要设计一张用于我想要用途的表,例如如下用于描述个人的信息类型:

    姓名;

    性别;

    出生日期;

    地址;

    最喜爱的食物。

    下面为他来指定列和数据类型:

    类型

    允许值

    name

    varchar(40)

    gender

    char(1)

    M,F

    birth_date

    date

    address

    varchar(100)

    favorite_foods

    varchar(200)

    其中,name、address 和 favorite_foods 列的类型为varchar,容许不同形式的数据条目,而

    gender列则只允许单个字母M或F。birth_date为日期类型,因为此处并不需要精确到具体的时间。

    第2步:精化

    进一步观察person表,会发现如下问题:

    name列实际上是包含了姓氏和名字的复合对象。

    可能存在多个人具有相同的名字、性别、生日等,而person表中并没有列来保证唯一性。

    address列也是包含了街道、省名、县市名和邮政编码的符合对象。

    favorite_foods列可以是包含0、1或更多条目的列表,因此最好为此数据创建一个独立的表,其中包含一个指向person表的外键,以便为每一种食物知名所归属的人员。

    考虑这些问题之后,列出person规范化后的结果:

    person表

    类型

    允许值

    person_id

    smallint(unsigned)

    first_name

    varchar(20)

    last_name

    varchar(20)

    gender

    char(1)

    M,F

    birth_date

    date

    street

    varchar(30)

    city

    varchar(20)

    state

    varchar(20)

    county

    varchar(20)

    postal_code

    varchar(20)

    现在person表已经具有了主键(person_id)来保证唯一性,下一步便是建立favorite_food表,其中包含一个执行person表的外键:

    favorite_food表

    类型

    person_id

    smallint(unsigned)

    food

    varchar(20)

    person_id 和 food 列构成了 favorite_food表的主键,并且person_id列也是person表的外键。

    第3步:构建SQL方案语句

    创建 person 表的语句如下:

    CREATE TABLE person

    (

    person_id SMALLINT UNSIGNED,

    fname VARCHAR(20),

    lname VARCHAR(20),

    gender CHAR(1),

    birth_date DATE,

    street VARCHAR(30),

    city VARCHAR(20),

    stateVARCHAR(20),

    countryVARCHAR(20),

    postal_codeVARCHAR(20),

    CONSTRAINT pk_person PRIMARY KEY (person_id)

    );

    最下面的一个语句(CONSTRAINT pk_person PRIMARY KEY (person_id))用于指定一个约束,他创建了一个名为

    pk_person的约束(constraint),其创建在 person_id 之上。

    对于性别(gender)这一列来说,可以为其添加约束,使其只能是'M'或者'F'。可以使用 检查约束 或者 enum 。

    检查约束

    为该列添加一个检查约束,以限制该列只存放被允许的值。MySQL允许在定义列时关联一个检查约束,如下所示:

    gender CHAR(1) CHECK (gender IN ('M','F')),

    enum

    MySQL提供了另一种名为 enum 的字符数据类型,它可以将检查约束与数据类型定义融合在一起,此方法的定义如下:

    gender ENUM('M','F'),

    下面是重新定义了的person表,其中使用enum作为gender列的数据类型:

    CREATE TABLE person

    (

    person_idSMALLINT UNSIGNED,

    fname VARCHAR(20),

    lname VARCHAR(20),

    gender ENUM('M','F'),

    birth_date DATE,

    street VARCHAR(30),

    city VARCHAR(20),

    stateVARCHAR(20),

    countryVARCHAR(20),

    postal_codeVARCHAR(20),

    CONSTRAINT pk_person PRIMARY KEY (person_id)

    );

    可以通过DESC person命令(或者DESCRIBE person命令)来查看person表的详细信息。结果如下:

    +-------------+----------------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-------------+----------------------+------+-----+---------+-------+

    | person_id | smallint(5) unsigned | NO | PRI | NULL | |

    | fname | varchar(20) | YES | | NULL | |

    | lname | varchar(20) | YES | | NULL | |

    | gender | enum('M','F') | YES | | NULL | |

    | birth_date | date | YES | | NULL | |

    | street | varchar(30) | YES | | NULL | |

    | city | varchar(20) | YES | | NULL | |

    | state | varchar(20) | YES | | NULL | |

    | country | varchar(20) | YES | | NULL | |

    | postal_code | varchar(20) | YES | | NULL | |

    +-------------+----------------------+------+-----+---------+-------+

    其中第1列和第2列的结果是显而易见的。

    第3列显示该列是否允许在插入数据时被省略。

    第4列显示该列是否作为键值(主键或外键),本例中 person_id 列被标记为主键。

    第5列显示如果在插入数据时忽略该列,是否向其提供默认值。

    第6列("Extrra")显示该列附加的说明信息。

    接下来创建 favorite_foods 表:

    favorite_foods表

    CREATE TABLE favorite_food

    (

    person_id SMALLINT UNSIGNED,

    food VARCHAR(20),

    CONSTRAINT pk_favorite_food PRIMARY KEY (person_id, food),

    CONSTRAINT fk_fav_food_person_id FOREIGN KEY (person_id)

    REFERENCES person (person_id)

    );

    除了有以下不同之外,它与前面 person 表的 create table 语句十分类似:

    由于一个人可能有多种喜爱的食物(当然这也是创建此表的原因),仅靠 person_id 列不能保证数据的唯一性,因此本表的逐渐包含两列:person_id 和 food。

    favorite_food 包含了另一种类型的约束,及外键约束,它限制了favorite表中person_id列的值只能够来自person表。通过这种约束,使得当person表中没有person_id为33的记录时,向favorite_food表中增加person_id为33、喜爱食物为披萨的数据行是不可能的。

    同理,如果要删除person表中一个id为3的人,则需要先删除favorite_food表中person_id为3的所有信息,再去删除person表中的数据。(不过好像有一个去除关联的方法)

    在执行完create table语句后,使用describe命令可以显示下面的结果:

    +-----------+----------------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-----------+----------------------+------+-----+---------+-------+

    | person_id | smallint(5) unsigned | NO | PRI | NULL | |

    | food | varchar(20) | NO | PRI | NULL | |

    +-----------+----------------------+------+-----+---------+-------+

    更多相关内容
  • SQL sever创建数据库数据表

    千次阅读 2021-08-06 21:48:17
    掌握在SQL Server中使用对象资源管理器或者SQL命令创建数据表和修改数据的方法(以SQL命令为重点)。 二、环境概述: SQL Server 2019 SQL Server Management Studio 管理工具 三、数据库的创建 使用对象资源...

    创建数据库和数据表

    一、目的:

    1. 掌握在SQL Server中使用对象资源管理器和SQL命令创建数据库与修改数据库的方法。
    2. 掌握在SQL Server中使用对象资源管理器或者SQL命令创建数据表和修改数据表的方法(以SQL命令为重点)。

    二、环境概述:

    1. SQL Server 2019
    2. SQL Server Management Studio 管理工具

    三、数据库的创建

    1. 使用对象资源管理器创建数据库,给出关键步骤的截图和说明。

      ①打开管理工具,连接数据库引擎。
      在这里插入图片描述
      ② 在对象资源管理器中右击数据库,选择新建数据库选项。
      在这里插入图片描述
      ③ 设置数据库名称,以及数据库文件相应参数,并完成数据库的添加。
      在这里插入图片描述
      ④ 完成数据库的添加,并查看。
      在这里插入图片描述

    2. 删除上一步创建的数据库,再次使用SQL命令创建数据库。
      ① 选择创建的数据库,右击选择删除。
      在这里插入图片描述
      ② 新建查询,输入代码,点击执行。

     create database 教学管理系统 
    

    四、数据表的定义和创建

    1. 给出各字段的属性定义和说明。

    学生表

    字段名数据类型
    学号INT
    姓名NVARCHAR(30)
    性别NVARCHAR(10)
    专业班级NVARCHAR(50)
    出生日期DATE
    联系电话INT

    课程表

    字段名数据类型
    课程号NCHAR(10)
    课程名NVARCHAR(30)
    学分数FLOAT(1)
    学时数INT
    任课教师NVARCHAR(30)

    学生作业表

    字段名数据类型
    课程号NCHAR(10)
    学号INT
    作业1成绩INT
    作业2成绩INT
    作业3成绩INT

    2. 使用SQL命令在学生作业管理数据库中建立学生表、课程表和学生作业表,给出SQL代码。

    use 学生作业管理
    go
    create table 学生表
    ( 学号 int not null,
      姓名 nvarchar(30) null,
      性别 nvarchar(10) null,
      专业班级 nvarchar(50) null,
      出生日期 date null,
      联系电话 int null
     )
    create table 课程表
    ( 课程号 nvarchar(20) not null,
      课程名 nvarchar(30) null,
      学分数 float(1) null,
      学时数 int null,
      任课教师 nvarchar(30) null
      )
     create table 学生作业表
    ( 课程号 nvarchar(20) not null,
      学号   int null,
      作业1成绩  int null,
      作业2成绩  int null,
      作业3成绩  int null
     )
    
    

    五、数据表的填充和插入

    1. 用Management Studio在各个表中输入数据后表格插入数据的截图及说明。
    ①在对象资源管理器中选择数据库 —》 学生作业管理 —》 表 —》dbo.学生表,右键选择编辑前200行。
    ② 依次在表格中输入相关数据。
    ③ 执行代码 select * from 学生表 查看插入表中的数据。
    在这里插入图片描述

    2. 用SQL进行某张表格多条数据插入数据代码

    use 学生作业管理
    go
    insert into 学生表
    values('0592','王海强','男','电子05','1986-11-1',NULL)
    insert into 学生表
    values('0593','王海','男','电子03','1946-1-1','1867792')
    insert into 学生表
    values('0594','王强','女','智科20','1996-7-14','1688727')
    select * from 学生表
    
    

    在这里插入图片描述

    展开全文
  • 创建数据表与操作2(数据库原理及Oracle应用)
  • 创建数据表与操作1(数据库原理及Oracle应用)
  • MySQL讲义第4讲——创建数据表

    千次阅读 2020-09-20 15:17:03
    MySQL讲义第4讲——创建数据表 MySQL 的数据是最终保存数据的场所,在数据库中,所有的数据都保存在数据中。创建数据表需要做三件事: (1)定义中所包含的列,包括:列名、数据类型、数据的完整性约束; (2...

    MySQL讲义第4讲——创建数据表

    MySQL 的数据表是最终保存数据的场所,在数据库中,所有的数据都保存在数据表中。创建数据表需要做三件事:
    (1)定义表中所包含的列,包括:列名、数据类型、数据的完整性约束;
    (2)定义表选项,包括:存储引擎,字符集;
    (3)定义表分区选项。

    可使用三种方式创建表:

    一、使用 create table 语句直接定义表中的字段

    语法如下:

    create [temporary] table [if not exists]  <表名> ([列定义选项])
    [表选项]
    [分区选项];
    
    [列定义选项]的格式为:
                      <列名1> <类型> <数据完整性约束>
                      [, <列名2> <类型> <数据完整性约束>
                      [, ...
                      [<列名n> <类型n>]]]
    <数据完整性约束>的格式:
                        [NOT NULL | NULL] --非空约束
                        [DEFAULT default_value]  --默认值
                        [AUTO_INCREMENT]    --定义为自增列(类型必须是整型)
                        [PRIMARY KEY]  --主键
                        [[unique] index]   --索引,唯一索引
                        [foreign KEY(column_name) REFERENCES table_name(column_name))]  
                                                --定义外键
                        [COMMENT 'string']      --为字段添加注释             
    [表选项]的格式为:
                   ENGINE = engine_name(存储引擎的名称) --指定存储引擎
                                           --常用的存储引擎有 InnoDB 和 MyISAM
                   AUTO_INCREMENT = value  --设置自增字段的起始值
                   [DEFAULT] CHARACTER SET charset_name(字符集名称) --设置字符集
                   [COLLATE collation_name(校对集名称)]  --设置校对集
                   COMMENT = 'string'   --表注释
    
    --参数说明:1temporary:表示创建连时表。只有在当前连接情况下,TEMPORARY表才是可见的。当连接关闭时,TEMPORARY表被自动取消。这意味着两个不同的连接可以使用相同的临时表名称,同时两个临时表不会互相冲突,也不与原有的同名的非临时表冲突。
    (2IF NOT EXISTS:如果加了该选项,只有在要创建的表不存在的情况下,才创建该表。如果要创建的表已经存在,则不执行 create table 命令。
    (3)表名:如果只指定表名,则把表创建到当前数据库中,可以使用【db_name.table_name】格式指定表名,则把表创建到指定的数据库中。
    

    举例:

    (1)创建 t01 表

    注:使用 desc 命令可以显示表结构。

    mysql> create table hist.t01(id int,name char(20));
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> desc t01;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | int(11)  | YES  |     | NULL    |       |
    | name  | char(20) | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    2 rows in set (0.01 sec)
    

    (2)创建 dept 表,包含主键

    可以使用 show create table 命令查看建表的语句。

    mysql> create table if not exists hist.dept (
           dept_id int primary key comment '部门编号',
           dept_name char(20) not null comment '部门名称'
           )
           comment '部门表';
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> show create table dept\G
    *************************** 1. row ***************************
           Table: dept
    Create Table: CREATE TABLE `dept` (
      `dept_id` int(11) NOT NULL COMMENT '部门编号',
      `dept_name` char(20) NOT NULL COMMENT '部门名称',
      PRIMARY KEY (`dept_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表'
    1 row in set (0.00 sec)
    

    (3)创建 emp 表,包含自增字段(从1001开始),通过外键和 dept 表关联

    mysql> create table if not exists emp (
             emp_id int auto_increment primary key comment '员工编号',
             emp_name char(20) not null comment '员工姓名',
             birth datetime comment '出生日期',
             phone char(20) comment '员工表',
             dept_id int,
             foreign key(dept_id) references dept(dept_id)
         )
         comment '员工表'
         auto_increment=1001
         default character set utf8 collate utf8_general_ci
         engine=InnoDB;
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> show create table emp\G
    *************************** 1. row ***************************
           Table: emp
    Create Table: CREATE TABLE `emp` (
      `emp_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '员工编号',
      `emp_name` char(20) NOT NULL COMMENT '员工姓名',
      `birth` datetime DEFAULT NULL COMMENT '出生日期',
      `phone` char(20) DEFAULT NULL COMMENT '员工表',
      `dept_id` int(11) DEFAULT NULL,
      PRIMARY KEY (`emp_id`),
      KEY `dept_id` (`dept_id`),
      CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`dept_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8 COMMENT='员工表'
    1 row in set (0.00 sec)
    

    (4)创建 stu 表,包含默认值,索引

    mysql> create table if not exists stu(
             s_no int auto_increment primary key,
             s_name char(20) not null,
             birth datetime,
             phone char(11),
             addr char(100),
             index(s_name),
             unique index(phone),
             index(birth,s_name)
         );
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> desc stu;
    +--------+-----------+------+-----+---------+----------------+
    | Field  | Type      | Null | Key | Default | Extra          |
    +--------+-----------+------+-----+---------+----------------+
    | s_no   | int(11)   | NO   | PRI | NULL    | auto_increment |
    | s_name | char(20)  | NO   | MUL | NULL    |                |
    | birth  | datetime  | YES  | MUL | NULL    |                |
    | phone  | char(11)  | YES  | UNI | NULL    |                |
    | addr   | char(100) | YES  |     | NULL    |                |
    +--------+-----------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    
    mysql> show create table stu\G
    *************************** 1. row ***************************
           Table: stu
    Create Table: CREATE TABLE `stu` (
      `s_no` int(11) NOT NULL AUTO_INCREMENT,
      `s_name` char(20) NOT NULL,
      `birth` datetime DEFAULT NULL,
      `phone` char(11) DEFAULT NULL,
      `addr` char(100) DEFAULT NULL,
      PRIMARY KEY (`s_no`),
      UNIQUE KEY `phone` (`phone`),
      KEY `s_name` (`s_name`),
      KEY `birth` (`birth`,`s_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    1 row in set (0.00 sec)
    

    二、根据已经存在的表来定义新表

    使用 create table like 命令可以利用一个已经存在的表创建一个新表。语法如下:

    create [temporary] table [if not exists] table_name
    like old_tbale_name;
    
    --说明:使用该命令可以创建一个和原数据表结构完全相同的新表,但不会复制原数据表中的数据。
    

    举例:根据 stu 表创建一个 student 表

    mysql> create table if not exists student like stu;
    Query OK, 0 rows affected (0.04 sec)
    
    mysql> desc student;
    +--------+-----------+------+-----+---------+----------------+
    | Field  | Type      | Null | Key | Default | Extra          |
    +--------+-----------+------+-----+---------+----------------+
    | s_no   | int(11)   | NO   | PRI | NULL    | auto_increment |
    | s_name | char(20)  | NO   | MUL | NULL    |                |
    | birth  | datetime  | YES  | MUL | NULL    |                |
    | phone  | char(11)  | YES  | UNI | NULL    |                |
    | addr   | char(100) | YES  |     | NULL    |                |
    +--------+-----------+------+-----+---------+----------------+
    5 rows in set (0.01 sec)
    
    mysql> show create table student\G
    *************************** 1. row ***************************
           Table: student
    Create Table: CREATE TABLE `student` (
      `s_no` int(11) NOT NULL AUTO_INCREMENT,
      `s_name` char(20) NOT NULL,
      `birth` datetime DEFAULT NULL,
      `phone` char(11) DEFAULT NULL,
      `addr` char(100) DEFAULT NULL,
      PRIMARY KEY (`s_no`),
      UNIQUE KEY `phone` (`phone`),
      KEY `s_name` (`s_name`),
      KEY `birth` (`birth`,`s_name`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    1 row in set (0.00 sec)
    

    可以看到,student 表和 stu 表的结构完全相同。然后可以对 student 表的结构进行修改,得到我们想要的表结构。

    三、使用 select 查询的结果集来创建表

    可以利用一个 select 查询的结果创建一张新表。语法如下:

    create [temporary] table [if not exists] table_name
        [(create_definition,...)]
        [table_options]
        [partition_options]
        [ignore | replace]
        [as] query_expression
        
    --说明:使用此命令可以根据查询结果创建一张新表,并且把查询到的数据插入到新建的表中。
    

    举例:

    (1)创建新表 stu1,表结构来源于对 stu 表的查询结果

    mysql> create table if not exists stu1 
         as select * from stu;
    Query OK, 3 rows affected (0.04 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> select * from stu;
    +------+--------+---------------------+-------------+----------+
    | s_no | s_name | birth               | phone       | addr     |
    +------+--------+---------------------+-------------+----------+
    |    1 | Jack   | 1999-01-23 00:00:00 | 13703735566 | Beijing  |
    |    2 | Mark   | 1999-10-03 00:00:00 | 13783735566 | Beijing  |
    |    3 | Rose   | 2000-11-21 00:00:00 | 13783735522 | Shanghai |
    +------+--------+---------------------+-------------+----------+
    3 rows in set (0.01 sec)
    
    mysql> show create table stu1\G
    *************************** 1. row ***************************
           Table: stu1
    Create Table: CREATE TABLE `stu1` (
      `s_no` int(11) NOT NULL DEFAULT '0',
      `s_name` char(20) NOT NULL,
      `birth` datetime DEFAULT NULL,
      `phone` char(11) DEFAULT NULL,
      `addr` char(100) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    1 row in set (0.00 sec)
    
    --新建的表包含了查询结果中的数据,但新建表的结构和原数据表的结构并不完全相同。
    
    

    (2)创建新表 stu2,并且重新定义表结构

    mysql> create table if not exists stu2(
             s_no int auto_increment primary key,
             s_name char(30),
             phone char(11)
         )
         engine=InnoDB
         character set utf8 collate utf8_general_ci
         as 
         select s_no,s_name,phone
         from stu;
    Query OK, 3 rows affected (0.02 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    
    mysql> show create table stu2\G
    *************************** 1. row ***************************
           Table: stu2
    Create Table: CREATE TABLE `stu2` (
      `s_no` int(11) NOT NULL AUTO_INCREMENT,
      `s_name` char(30) DEFAULT NULL,
      `phone` char(11) DEFAULT NULL,
      PRIMARY KEY (`s_no`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    
    

    四、和表相关的命令总结

    1、查看当前数据库中的数据表

    语法格式如下:

    show tables;
    
    

    举例:

    mysql> show tables;
    +----------------+
    | Tables_in_hist |
    +----------------+
    | dept           |
    | emp            |
    | emp1           |
    | stu            |
    | stu1           |
    | stu2           |
    | student        |
    | t01            |
    | t1             |
    +----------------+
    9 rows in set (0.00 sec)
    
    

    2、删除数据表

    语法格式如下:

    drop table 表名;
    
    

    举例:

    mysql> drop table t01;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> drop table t1;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> show tables;
    +----------------+
    | Tables_in_hist |
    +----------------+
    | dept           |
    | emp            |
    | emp1           |
    | stu            |
    | stu1           |
    | stu2           |
    | student        |
    +----------------+
    7 rows in set (0.00 sec)
    
    

    3、查看表结构

    语法格式如下:

    describe | desc 表名;
    
    --说明:describe 是完整写法,desc 是简写。
    
    

    举例:

    mysql> describe stu;
    +--------+-----------+------+-----+---------+----------------+
    | Field  | Type      | Null | Key | Default | Extra          |
    +--------+-----------+------+-----+---------+----------------+
    | s_no   | int(11)   | NO   | PRI | NULL    | auto_increment |
    | s_name | char(20)  | NO   | MUL | NULL    |                |
    | birth  | datetime  | YES  | MUL | NULL    |                |
    | phone  | char(11)  | YES  | UNI | NULL    |                |
    | addr   | char(100) | YES  |     | NULL    |                |
    +--------+-----------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    
    mysql> desc stu;
    +--------+-----------+------+-----+---------+----------------+
    | Field  | Type      | Null | Key | Default | Extra          |
    +--------+-----------+------+-----+---------+----------------+
    | s_no   | int(11)   | NO   | PRI | NULL    | auto_increment |
    | s_name | char(20)  | NO   | MUL | NULL    |                |
    | birth  | datetime  | YES  | MUL | NULL    |                |
    | phone  | char(11)  | YES  | UNI | NULL    |                |
    | addr   | char(100) | YES  |     | NULL    |                |
    +--------+-----------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)
    
    

    4、查看创建表的语句

    语法格式如下:

    show create table 表名;
    
    --说明:可以加上 \G 参数对显示结果进行格式化。
    
    

    举例:

    mysql> show create table stu\G
    *************************** 1. row ***************************
           Table: stu
    Create Table: CREATE TABLE `stu` (
      `s_no` int(11) NOT NULL AUTO_INCREMENT,
      `s_name` char(20) NOT NULL,
      `birth` datetime DEFAULT NULL,
      `phone` char(11) DEFAULT NULL,
      `addr` char(100) DEFAULT NULL,
      PRIMARY KEY (`s_no`),
      UNIQUE KEY `phone` (`phone`),
      KEY `s_name` (`s_name`),
      KEY `birth` (`birth`,`s_name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4
    1 row in set (0.00 sec)
    
    
    展开全文
  • MySQL利用现有的数据表创建

    千次阅读 2019-11-26 15:25:08
    MySQL使用create table可以创建数据表,该命令通过为指定字段并设置字段的数据类型,也可以设置主键、外键、unique约束、索引、默认值、自增等特性。 使用create table命令除了可以通过定义字段名创建一张新,还...

    MySQL利用现有的数据表创建新表

    MySQL使用create table可以创建数据表,该命令通过为表指定字段并设置字段的数据类型,也可以设置主键、外键、unique约束、索引、默认值、自增等特性。

    使用create table命令除了可以通过定义字段名创建一张新表,还可以在已有表的基础上创建新表。比如已经创建了emp(员工)表,并输入了数据。

    create table emp(
        emp_id int primary key auto_increment comment '员工号',
        emp_name char(20) not null default '' comment '员工姓名',
        gender char(2) not null default '男' comment '性别',
        birth datetime not null default '1990-1-1' comment '出生日期',
        salary decimal(10,2) not null default 0 comment '工资',
        address varchar(200) not null default '' comment '通讯地址',
        dept_name char(20) comment '部门'
    );
    
    insert into emp(emp_name,gender,birth,salary,address,dept_name) 
    values('张晓红','女','1980-1-23',5800,'河南省郑州市中原路10号','销售部'),
    ('张静静','女','1987-10-3',5400,'河南省新乡市平原路38号','销售部'),
    ('王云飞','男','1992-11-15',5600,'河南省新乡市人民路28号','销售部'),
    ('王鹏飞','男','1987-10-1',6800,'河南省新乡市东明大道12号','销售部'),
    ('王大鹏','男','1989-2-11',5900,'河南省郑州市东风路15号','生产制造部'),
    ('王萌萌','女','1986-12-30',5000,'河南省开封市五一路14号','生产制造部'),
    ('王大光','男','1988-11-8',6200,'河南省开封市八一路124号','生产制造部'),
    ('王小明','男','1998-1-3',4800,'河南省驻马店市雪松路128号','生产制造部'),
    ('王娜娜','女','1994-3-5',5200,'河南省驻马店市车站路2号','生产制造部'),
    ('刘云飞','男','1992-8-13',6800,'河南省南阳市民生路255号','人事部'),
    ('张陆军','男','1991-9-6',6200,'河南省南阳市张仲景路14号','人事部');
    

    一、根据emp表结构创建新表

    命令如下:

    create table new_tablename like old_tablename;
    
    create table employee like emp;
    

    查看结果:

    mysql> select * from employee;
    Empty set (0.00 sec)
    
    mysql> desc emp;
    +-----------+---------------+------+-----+---------------------+----------------+
    | Field     | Type          | Null | Key | Default             | Extra          |
    +-----------+---------------+------+-----+---------------------+----------------+
    | emp_id    | int(11)       | NO   | PRI | NULL                | auto_increment |
    | emp_name  | char(20)      | NO   |     |                     |                |
    | gender    | char(2)       | NO   |     | 男                  |                |
    | birth     | datetime      | NO   |     | 1990-01-01 00:00:00 |                |
    | salary    | decimal(10,2) | NO   |     | 0.00                |                |
    | address   | varchar(200)  | NO   |     |                     |                |
    | dept_name | char(20)      | YES  |     | NULL                |                |
    +-----------+---------------+------+-----+---------------------+----------------+
    7 rows in set (0.00 sec)
    
    mysql> desc employee;
    +-----------+---------------+------+-----+---------------------+----------------+
    | Field     | Type          | Null | Key | Default             | Extra          |
    +-----------+---------------+------+-----+---------------------+----------------+
    | emp_id    | int(11)       | NO   | PRI | NULL                | auto_increment |
    | emp_name  | char(20)      | NO   |     |                     |                |
    | gender    | char(2)       | NO   |     | 男                  |                |
    | birth     | datetime      | NO   |     | 1990-01-01 00:00:00 |                |
    | salary    | decimal(10,2) | NO   |     | 0.00                |                |
    | address   | varchar(200)  | NO   |     |                     |                |
    | dept_name | char(20)      | YES  |     | NULL                |                |
    +-----------+---------------+------+-----+---------------------+----------------+
    7 rows in set (0.00 sec)
    

    利用select命令可以看到,employee表为空表;利用desc命令可以看到,employee表结构和emp表完全相同。

    二、根据另一个表的查询结果创建新表

    命令如下:

    create table table_name select statement;
    

    举例:

    mysql> create table emp1 select emp_id,emp_name,salary,address from emp;
    Query OK, 11 rows affected (0.02 sec)
    Records: 11  Duplicates: 0  Warnings: 0
    
    mysql> desc emp1;
    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | emp_id   | int(11)       | NO   |     | 0       |       |
    | emp_name | char(20)      | NO   |     |         |       |
    | salary   | decimal(10,2) | NO   |     | 0.00    |       |
    | address  | varchar(200)  | NO   |     |         |       |
    +----------+---------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    
    mysql> select * from emp1;
    +--------+-----------+---------+--------------------------------------+
    | emp_id | emp_name  | salary  | address                              |
    +--------+-----------+---------+--------------------------------------+
    |      1 | 张晓红    | 5800.00 | 河南省郑州市中原路10号               |
    |      2 | 张静静    | 5400.00 | 河南省新乡市平原路38号               |
    |      3 | 王云飞    | 5600.00 | 河南省新乡市人民路28号               |
    |      4 | 王鹏飞    | 6800.00 | 河南省新乡市东明大道12号             |
    |      5 | 王大鹏    | 5900.00 | 河南省郑州市东风路15号               |
    |      6 | 王萌萌    | 5000.00 | 河南省开封市五一路14号               |
    |      7 | 王大光    | 6200.00 | 河南省开封市八一路124号              |
    |      8 | 王小明    | 4800.00 | 河南省驻马店市雪松路128号            |
    |      9 | 王娜娜    | 5200.00 | 河南省驻马店市车站路2号              |
    |     10 | 刘云飞    | 6800.00 | 河南省南阳市民生路255号              |
    |     11 | 张陆军    | 6200.00 | 河南省南阳市张仲景路14号             |
    +--------+-----------+---------+--------------------------------------+
    11 rows in set (0.00 sec)
    

    利用select命令可以看到,emp1表包含了emp表的数据。

    展开全文
  • 数据库原理及应用;创建数据库及关系数据完整性约束;计算机、SQL
  • MySQL-数据表创建命令

    千次阅读 2020-05-09 18:22:03
    MySQL-数据创建命令 ... 2、用 “create database school;...5、创建数据表语法: CREATE TABLE [ IF NOT EXISTS ] `表名` ( `字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] , `字段名2` 列类型 ...
  • 与 Gladwell 的样本仅包含 Apple、Microsoft 和 Sun Microsystems 以及创建它们的 7 位企业家这三家公司相比,我们的数据集包含 74 家公司和 89 位企业家。 与 Gladwells 的 7 位企业家(均出生于 1953 年至 1955 ...
  • 对于很多HR小伙伴来说,通过数据管理系统导出的人事信息中,数据更多地是显示出生日期而不是年龄,而在实际的统计中,我们往往需要对年龄进行分段统计,这时候我们就需要根据出生日期来计算年龄。如何快速准确地...
  • 1.创建一个person,包括字段有姓名、性别、出生日期、工作和家庭地址。 2.为person增加email列,观察是否增加了email列;然后删除email列。 3.基于person表创建简单视图,并在姓名列创建索引。 4.为person增加...
  • 实验一 创建数据库及关系数据完整性约束
  • c# -- 创建数据表

    千次阅读 2017-04-19 16:40:22
    https://technet.microsoft.com/zh-cn/library/ms187752(v=sql.110).aspx创建数据表这时数据已经建好,但没有数据手动输入几条测试返回脚本页查询批处理语句:GO是批处理的标志,表示SQL server将这些SQL语句编译为...
  • SQL Server中使用SQL语句创建数据表并添加约束的基础教程 1. 创建数据库 创建数据表之前,需要先创建用户数据库(不推荐在系统数据库中创建表格),再去自己创建的数据库中创建相应的数据,创建数据库的SQL语句...
  • 用sql语句创建学生如何做

    千次阅读 2021-01-18 20:12:11
    在数据库中使用SQL语句创建学生代码如下:(学号 char(12) primary key,姓名 char(6) not null,性别 char(2) check(性别 IN ('男','女')),班级 char(15))相关创建:create table 成绩(学号 char(12)...
  • /*初始化两张,测试添加约束语句*/use E_Marketgo--创建部门if exists(select * from sysobjects where name = 'department')drop table departmentcreate table department --部门( DepartmentId char(5) not...
  • 数据库怎么创建学生信息

    万次阅读 2021-02-05 07:04:17
    数据库创建学生信息的方法是:1、新建:单击数据库“studentDb”前图标,然后右键“”文件包,单击“新建”选项,进入“新建”窗口。2、设定标识字段id:填写第一个列名“id”,设定数据类型为“int”,...
  • (一)数据库的创建 1)数据库分类 系统数据库和用户数据库;通过查看对象资源管理器来区分数据库类型; 注意:master数据库不要动,这个是数据库的数据库;我们主要学习用户数据库...创建一个主数据文件和一个日...
  • 数据表创建与修改管理实验

    千次阅读 多人点赞 2020-05-05 13:45:38
    数据表创建与修改管理实验 实 验 目 的 (1) 掌握的基础知识。 (2) 掌握使用Navicat或其他第三方管理工具和SQL语句创建表的方法。 (3) 掌握的修改、查看、删除等基本操作方法。 (4) 掌握中完整性约束的定义。...
  • 定义一个Person类,包含数据成员姓名、性别和出生日期,以该类为基类,派生出学生类和职工类,在学生类中增加数据成员学号、成绩,在职工类中增加数据成员职工号和工资。其中出生日期是日期类对象。学生信息由键盘...
  • 实验名称 实验2 通过SQL语句创建与管理数据表 日期 2020年 06 月 04 日 一、实验目的: (1)掌握查询分析器的使用。 (2)掌握通过SQL语句创建表的方法。 (3)掌握通过SQL语句修改结构的方法。 (4)掌握...
  • create,insert创建(create)MySQL常用数据类型建表语句的语法格式插入数据(insert)第一种插入方式第二种插入方式第三种插入方式设置默认值多行插入 创建(create) MySQL常用数据类型 注:char和varchar的...
  • 实验一 设计数据库、创建数据库和数据库 实验目的 1.掌握在Kingbase中使用“数据库对象管理工具”和...2.掌握在Kingbase中使用“数据库对象管理工具”或者SQL命令创建数据表和修改数据的方法(以SQL命令为重点)。
  • 展开全部import datetimeclass student:def __init__(self,Sno,Sname,Sbarthday,Sfaction):self.Sage = 0self.Sgarde = '优秀'self.Sname = Snameself.Sno = Snoself.Sbarthday = datetime.datetime.strptime...
  • 实验三:创建及管理数据 一、实验目的 熟悉数据的特点; 熟悉在Management Stuio中创建、编辑及删除数据;...创建数据表的命令 CREATE TABLE [ database_name . [ schema_name ] . | schema_name ...
  • 用Navicat创建student

    千次阅读 2021-04-08 23:14:31
    用Navicat创建student 第一步点击“链接”; 之后输入密码进行链接测试; 然后,点击“确定“,创建连接。再然后会出现一个连接图标,点击右键选择”打开链接“; 点击连接图标,创建数据库; 输入数据库名; 在...
  • 怎么在MySQL创建表

    千次阅读 2021-03-15 21:16:13
    想要创建一个,你必须先有一个存储的数据库。你可以在MySQL命令行键入 USE 库名,打开数据库。如果你不记得数据库的名称,可以键入 SHOW DATABASES;,在MySQL服务器上显示所有数据库。如果你还未创建数据库,...
  • MySQL 创建用户和好友

    千次阅读 2021-01-18 18:43:27
    人生如果错了方向,停止就是进步最近想做一个即时通讯的Android demo,但是一直不知道如何处理用户和好友之间的关系。在网上找了好久也没找到...这一步相信大家都很明白,就是创建了一个my_chat的数据库创建表选...
  • 我这边有一个业务,需要客户填写身份证号,自动计算他的出生日期和年龄在sql中,具体的存储过程实现是这样的:/***********************************************根据身份证号计算出生日期和年龄Date:2017-10-15...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,392
精华内容 10,556
关键字:

创建数据表的出生日期