精华内容
下载资源
问答
  • 创建表和创建database一样,需要利用create语句。 比如在database为test_db中创建一个命名为test_table的表。 create test_db.test_table (id int(10),  name varchar(45)  ) 语法格式: CREATE ...

    一.语法

    创建表和创建database一样,需要利用create语句。

    比如在database为test_db中创建一个命名为test_table的表。

    create test_db.test_table

    (id int(10),

     name varchar(45) 

    )


    语法格式:

    CREATE TABLE 表名称
    (
    列名称1 数据类型,
    列名称2 数据类型,
    列名称3 数据类型,
    ....
    )
    

    数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:

    数据类型 描述
    • integer(size)
    • int(size)
    • smallint(size)
    • tinyint(size)
    仅容纳整数。在括号内规定数字的最大位数。
    • decimal(size,d)
    • numeric(size,d)

    容纳带有小数的数字。

    "size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。

    char(size)

    容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。

    在括号中规定字符串的长度。

    varchar(size)

    容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。

    在括号中规定字符串的最大长度。

    date(yyyymmdd) 容纳日期。

    展开全文
  • QUESTION 1 View the Exhibit and examine the structure of the SALES, CUSTOMERS, PRODUCTS, and TIMES ...The PROD_ID column is the foreign key in the SALES table, which references the PRODUCTS ta
    QUESTION 1
    View the Exhibit and examine the structure of the SALES, CUSTOMERS, PRODUCTS, and TIMES
    tables.
    The PROD_ID column is the foreign key in the SALES table, which references the PRODUCTS table.
    Similarly, the CUST_ID and TIME_ID columns are also foreign keys in the SALES table referencing the
    CUSTOMERS and TIMES tables, respectively.
    Evaluate the following CREATE TABLE command:
    CREATE TABLE new_sales(prod_id, cust_id, order_date DEFAULT SYSDATE)
    AS
    SELECT prod_id, cust_id, time_id
    FROM sales;

    Which statement is true regarding the above command?



    A. The NEW_SALES table would not get created because the DEFAULT value cannot be specified in the
    column definition.
    B. The NEW_SALES table would get created and all the NOT NULL constraints defined on the specified
    columns would be passed to the new table.
    C. The NEW_SALES table would not get created because the column names in the CREATE TABLE
    command and the SELECT clause do not match.
    D. The NEW_SALES table would get created and all the FOREIGN KEY constraints defined on the
    specified columns would be passed to the new table.


    答案:B

    解析:

    首先,新表是可以创建成功的,排除了AC,而BD中,在使用CREATE TABLE AS创建表时会把NOT NULL约束带到新表,而主键,唯一,外键,check约束,分区,索引以及列的默认值不会带到新表。

    可参考oracle联机文档CREATETABLE 的 AS subquery :

    http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_7002.htm#SQLRF54626

    展开全文
  • SQL---DDL---创建表CREATE TABLE语句总结

    千次阅读 2011-09-07 22:13:15
    一般有两种创建表的方法:一种是使用具有交互式创建和管理表的工具...为利用CREATE TABLE创建表,必须给出下列信息:新表的名字,在关键字CREATE TABLE之后给出;表列的名字和定义,用逗号分隔。 CREATE TABLE 表名

    一般有两种创建表的方法:一种是使用具有交互式创建和管理表的工具;另一种是可以直接用SQL语句操纵。

    为利用CREATE TABLE创建表,必须给出下列信息:新表的名字,在关键字CREATE TABLE之后给出;表列的名字和定义,用逗号分隔。

    CREATE TABLE 表名
    (列名1 数据类型1 列级完整性约束条件1 列级完整性约束条件2...,
     列名2  数据类型2 列级完整性约束条件3...,
     ...
     表级完整性约束条件);

    常用的完整性约束条件如下:

    主码约束:PRIMARY KEY;

    唯一值约束:UNIQUE;

    非空值约束:NOT NULL;

    限制取值范围:CHECK;

    指定默认值:DEFAULT;

    参照完整性约束:FOREIGN KEY

    例:

    CREATE TABLE Products
    (
    prod_id   CHAR(10)   NOT NULL,
    vend_id   CHAR(10)  NOT NULL,
    prod_price DECIMAL(8,2)   NOT NULL,
    prod_desc  VARCHAR(1000)  NULL
    );

    MySQL语句忽略空格。语句可以在一个长行上输入,也可以分成许多行。强烈推荐使用某种缩进格式编写。

    如果你仅仅想在一个表不存在时创建它,应该在表名后面给出IF NOT EXISTS。这样做不检查已有表的模式是否与你打算创建的表模式相匹配,它只是查看表名是否存在,并且仅在表名不存在时创建它。

    • PRIMARY KEY介绍
    主键值必须唯一。即,表中的每个行必须有唯一的主键值。如果主键使用单个列,则它的值必须唯一。如果使用多个列,则这些列的组合值必须唯一。

    主键中只能使用不允许NULL值的列。允许NULL值的列不能作为唯一标识。

    例:

    CREATE TABLE orderitems
    (
    order_num int NOT NULL,
    order_item int NOT NULL,
    prod_id char(10) NOT NULL,
    quantity int NOT NULL,
    item_price decimal(8,2) NOT NULL,
    PRIMARY KEY(order_num, order_item)
    );

    • AUTO_INCREMENT介绍
    cust_id int NOT NULL AUTO_INCREMENT

    AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量,每次执行一个INSERT操作时,MySQL自动对该列增量(从而才有这个关键字AUTO_INCREMENT),给该列赋予下一个可用的值。这样给每个行分配一个唯一的cust_id,从而可以用作主键值。

    每个表只允许一个AUTO_INCREMENT列,而且她必须被索引(如,通过使它成为主键)。

    让MySQL生成(通过自动增量)主键的一个缺点是你不知道这些值都是谁。

    如何在使用AUTO_INCREMENT列时获得这个值呢?可以用last_insert_id()函数获得这个值。如下所示:

    SELECT last_insert_id() ;

    此语句返回最后一个AUTO_INCREMENT值,然后可以将它用于后续的MySQL语句。


    • DEFAULT介绍
    如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定。

    例:

    CREATE TABLE orderitems
    (
    order_num int NOT NULL,
    order_item int NOT NULL,
    prod_id char(10) NOT NULL,
    quantity int NOT NULL DEFAULT 1,
    item_price decimal(8,2) NOT NULL ,
    PRIMARY KEY(order_num, order_item)
    );

    在此例子中,给该列的描述添加文本DEFAULT 1 指示MySQL,在未给出数量的情况下使用数量1。

    许多数据库开发人员使用默认值而不是NULL值,特别是对用于计算或者数据分组的列更是如此。

    展开全文
  • 文章目录1. 创建表1.1 表创建基础1.2 使用NULL值1.3 指定默认值2....利用CREATE TABLE 创建表,必须给出下列信息: 新表的名字,在关键字CREATE TABLE 之后给出; 表列的名字和定义,用逗号分隔; 有的D

    1. 创建表

    SQL 不仅用于表数据操纵,还用来执行数据库和表的所有操作,包括表本身的创建和处理。

    一般有两种创建表的方法:

    • 多数DBMS 都具有交互式创建和管理数据库表的工具;
    • 表也可以直接用SQL 语句操纵。

    1.1 表创建基础

    利用CREATE TABLE 创建表,必须给出下列信息:

    • 新表的名字,在关键字CREATE TABLE 之后给出;
    • 表列的名字和定义,用逗号分隔;
    • 有的DBMS 还要求指定表的位置。

    示例:

    CREATE TABLE Products (
    	prod_id CHAR ( 10 ) NOT NULL,
    	vend_id CHAR ( 10 ) NOT NULL,
    	prod_name CHAR ( 254 ) NOT NULL,
    	prod_price DECIMAL ( 8, 2 ) NOT NULL,
    	prod_desc VARCHAR ( 1000 ) NULL 
    );
    

    提示:替换现有的表
    在创建新的表时,指定的表名必须不存在,否则会出错。防止意外覆
    盖已有的表,SQL 要求首先手工删除该表(请参阅后面的内容),然
    后再重建它,而不是简单地用创建表语句覆盖它。

    1.2 使用NULL值

    每个表列要么是NULL 列,要么是NOT NULL 列,这种状态在创建时由表的定义规定。请看下面的例子:

    CREATE TABLE Orders
    (
    	order_num INTEGER NOT NULL,
    	order_date DATETIME NOT NULL,
    	cust_id CHAR(10) NOT NULL
    );
    

    下一个例子将创建混合了NULL 和NOT NULL 列的表:

    CREATE TABLE Vendors
    (
    	vend_id CHAR(10) NOT NULL,
    	vend_name CHAR(50) NOT NULL,
    	vend_address CHAR(50) ,
    	vend_city CHAR(50) ,
    	vend_state CHAR(5) ,
    	vend_zip CHAR(10) ,
    	vend_country CHAR(50)
    );
    

    注意:指定NULL
    在不指定NOT NULL 时,多数DBMS 认为指定的是NULL,但不是所有
    的DBMS 都这样。某些DBMS 要求指定关键字NULL,如果不指定将
    出错。关于完整的语法信息,请参阅具体的DBMS 文档。

    提示:主键和NULL 值
    第1课介绍过,主键是其值唯一标识表中每一行的列。只有不允许NULL
    值的列可作为主键,允许NULL 值的列不能作为唯一标识。

    注意:理解NULL
    不要把NULL 值与空字符串相混淆。NULL 值是没有值,不是空字符串。
    如果指定’’(两个单引号,其间没有字符),这在NOT NULL 列中是允
    许的。空字符串是一个有效的值,它不是无值。NULL 值用关键字NULL
    而不是空字符串指定。

    1.3 指定默认值

    SQL 允许指定默认值,在插入行时如果不给出值,DBMS 将自动采用默认值。默认值在CREATE TABLE 语句的列定义中用关键字DEFAULT 指定。

    CREATE TABLE OrderItems
    (
    	order_num INTEGER NOT NULL,
    	order_item INTEGER NOT NULL,
    	prod_id CHAR(10) NOT NULL,
    	quantity INTEGER NOT NULL DEFAULT 1,
    	item_price DECIMAL(8,2) NOT NULL
    );
    

    获得系统日期:
    在这里插入图片描述

    提示:使用DEFAULT 而不是NULL 值
    许多数据库开发人员喜欢使用DEFAULT 值而不是NULL 列,对于用于
    计算或数据分组的列更是如此。

    2. 更新表

    使用ALTER TABLE 时需要考虑的事情:

    • 理想情况下,不要在表中包含数据时对其进行更新。应该在表的设计过程中充分考虑未来可能的需求,避免今后对表的结构做大改动。
    • 所有的DBMS 都允许给现有的表增加列,不过对所增加列的数据类型(以及NULL 和DEFAULT 的使用)有所限制。
    • 许多DBMS 不允许删除或更改表中的列。
    • 多数DBMS 允许重新命名表中的列。
    • 许多DBMS 限制对已经填有数据的列进行更改,对未填有数据的列几乎没有限制。

    使用ALTER TABLE 更改表结构,必须给出下面的信息:

    • 在ALTER TABLE 之后给出要更改的表名(该表必须存在,否则将
      出错);
    • 列出要做哪些更改。
    -- 给Vendors 表增加一个名为vend_phone 的列,其数据类型为CHAR
    ALTER TABLE Vendors ADD vend_phone CHAR ( 20 );
    
    -- 删除列
    ALTER TABLE Vendors DROP COLUMN vend_phone;
    

    注意:小心使用ALTER TABLE
    使用ALTER TABLE 要极为小心,应该在进行改动前做完整的备份(表
    结构和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的
    列,也许无法删除它们。类似地,如果删除了不应该删除的列,可能
    会丢失该列中的所有数据。

    3. 删除表

    删除表(删除整个表而不是其内容)非常简单,使用DROP TABLE 语句即可:

    DROP TABLE CustCopy;
    

    4. 重命名表

    每个DBMS 对表重命名的支持有所不同。对于这个操作,不存在严格的标准。DB2、MariaDB、MySQL、Oracle 和PostgreSQL 用户使用RENAME语句,SQL Server 用户使用sp_rename 存储过程,SQLite 用户使用ALTER TABLE 语句。

    所有重命名操作的基本语法都要求指定旧表名和新表名。不过,存在DBMS 实现差异。关于具体的语法,请参阅相应的DBMS 文档。

    展开全文
  • 利用查询结果创建表和视图

    千次阅读 2018-03-30 18:53:02
    创建表 CREATE table (表名) AS select … 可以用于创建临时表 创建视图 CREATE VIEW (视图名) AS select … 视图多用在需要隐藏表细节的场合
  • 在之前的工作中,我遇到了这么一个需求,需要将...如此一来,用“create table …… as select……”语句去创建,并不能把约束等,也保留过去,显然不符合要求。后来还是选择的用PL/SQL导出数据结构的方法。不过...
  • MySQL利用现有的数据表创建

    千次阅读 2019-11-26 15:25:08
    MySQL使用create table可以创建数据,该命令通过为指定字段并设置字段的数据类型,也可以设置主键、外键、unique约束、索引、默认值、自增等特性。 使用create table命令除了可以通过定义字段名创建一张新,还...
  • 要从node.js应用程序连接到MySQL并创建表,请使用以下步骤:连接到MySQL数据库服务器,请参考:调用connection对象上的query()方法来执行语句。关闭数据库连接。以下示例(query.js)显示如何连接到todoapp数据库并...
  • 创建表,参考代码如下;import pymysqltest=pymysql.connect('localhost','root','root','test1225')curs=test.cursor()curs.execute('drop table if exists xixi')sql="""create table `xixi`(`names` varchar(255)...
  • 数据库中如何利用现有的表创建 使用as关键字来复制的数据与结构,具体操作如下: 以scott用户中的emp为例: 1.选择所有数据与结构创建,sql语句如下: create table newemp as select * from emp 执行...
  • SQL> create table t2 as select * from t1 where 1=0; 创建。 SQL> desc t2  名称 是否为空? 类型  ----------------------------------------- -------- -----------------------
  • --创建测试数据库CREATE DATABASE DbGO--对数据库进行备份BACKUP DATABASE Db TO DISK=c:/db.bak WITH FORMATGO--创建测试表CREATE TABLE Db.
  • 利用select into直接创建临时,省略create过程 select * into #临时 from 数据 select * from #临时 drop table #临时
  • 利用表创建

    2013-11-29 17:26:30
    sqlserver : create table tab_new like tab_old (使用旧表创建) oracle : create table tab_new as select col1,col2… from tab_old
  • 2、我想创建一个新test34,利用标题所说的方法。不过新表创建失败,错误提示为“illegal use of long database”: 3、根据网上的资料,了解到上面创建的方法对long类型不适用(可以搜一下long不适用的几种...
  • 创建表和操作表

    2018-12-12 00:24:00
     为利用CREATE TABLE创建表,必须给出下列信息:新表的名字,在关键字CREATE TABLE之后给出;表列的名字和定义,用逗号分隔。 1、如果仅想在一个表不存在时创建它,则应该在表名前面给出IF NOT EXISTS。 2、表的...
  • 一般有两种创建表的方法: 1.使用具有交互式创建和...利用CREATE TABLE创建表,必须给出下列消息: 1.表的名字,在关键字CREATE TABLE之后给出; 2.表列的名字和定义,用逗号分隔。 CREATE TABLE customers ( ...
  • laravel 利用migrate 创建数据

    千次阅读 2018-06-07 16:38:28
    1.创建一个migratephp artisan make:migration create_...编写migrate创建表Schema::create('anke', function (Blueprint $table) { $table->increments('id'); $table->string('name', 20); $tab...
  • postgreSql 利用触发器创建动态

    千次阅读 2010-01-21 23:21:00
    在postgresql 中如果在程序运行中需要根据插入数据条件而生成新的,则可以... 具体sql语句为:--创建表CREATE TABLE test1( name text, id integer);--创建触发器函数CREATE FUNCTION testTriger() RETURNS tri
  • SqlServer利用存储过程创建表

    千次阅读 2019-05-08 11:33:36
    SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[new_pr_create_pressure_table] @table nvarchar(64) AS ... 'CREATE TABLE [dbo].' + @table + '([Num] [bigin...
  • 最近在学习hibernate,利用其自动创建表时老是出错,出错信息如下:ERROR: HHH000388: Unsuccessful: create table NEWS (ID integer not null auto_increment, TITLE varchar(255), AUTHOR varchar(255), DATE date...
  • 1表创建基础为利用CREATE TABLE创建表,必须给出下列信息: 新表的名字,在关键字CREATE TABLE之后给出; 表列的名字和定义,用逗号分隔-> (-> cust_id int NOT NULL AUTO_INCREMENT,-> cust_name ...
  • 创建和操纵

    2019-10-04 20:52:45
    利用CREATE TABLE创建表,必须给出下列信息 新表的名字,在关键字CREATE TABLE之后给出 表列的名字和定义,用逗号分隔 创建customers表 CREATE TABLE CUSTOMERS ( cust_id int NOT NULL AUTO_INCREMENT, cust_...
  • //创建user drop table t_user; drop sequence s_user; drop trigger tri_user; create table t_user(  id number(4) primary key,  username varchar2(10) unique not null,  password var...
  • 在mysql中除了要创建数据库与删除之还我们还要...创建数据表利用命令:create table ( [,.. ]);语法:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [select_sta...
  • 创建表的另一种方式是输入代码进行创建。 在连接上需要操作的地址后,选择数据库,从中通过查询——创建... create table创建表; primary key为主键; not null为非空; auto_increment为自增长列; ...
  • 利用已存在的表创建另一个表(oracle,mssql,mysql) //利用已存在的test表来创建 test2表 [code="java"]oracle : ...create table test2 as select * from test where 1=2(只创建表结...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,160
精华内容 464
关键字:

table创建表利用create