美文网首页
SQL基础教程-1章2节:创建表

SQL基础教程-1章2节:创建表

作者: 编程小猪 | 来源:发表于2023-02-20 22:26 被阅读0次

    视频教程地址:https://www.ixigua.com/7200393924001661475

    这节的内容是我们创建出下边这张表:

    创建数据库

    创建数据库的语法:

    CREATE DATABASE <数据库名称>;

    代码:

    CREATE DATABASE shop;
    

    创建表

    创建表的语法:

    CREATE TABLE <表名> ( <列名1> <数据类型> <该列所需约束>, <列名2> <数据类型> <该列所需约束>, <列名3> <数据类型> <该列所需约束>, <列名4> <数据类型> <该列所需约束>, .... <该表的约束1>, <该表的约束2>,...... );

    创建上边这个表的SQL语句:

    
    CREATE TABLE Product (
      product_id CHAR(4) NOT NULL,
      product_name VARCHAR(100) NOT NULL,
      product_type VARCHAR(32) NOT NULL,
      sale_price INTEGER DEFAULT 0,
      purchase_price INTEGER DEFAULT 0,
      regist_date DATE,
      PRIMARY KEY (product_id)
    );
    
    -- 主健也可以这样实现
    CREATE TABLE Product (
      product_id CHAR(4) NOT NULL PRIMARY KEY,
      product_name VARCHAR(100) NOT NULL,
      product_type VARCHAR(32) NOT NULL,
      sale_price INTEGER DEFAULT 0,
      purchase_price INTEGER DEFAULT 0,
      regist_date DATE
    ); 
    
    

    全量的创建表语法:PostgreSQL: CREATE TABLE Statement

    命名规则

    还记得SQL语句的组成吗?关键字、库名、表名、字段名、常量、运算符。

    这里的库名、表名、字段名类似于编程语言中的变量,它们的名字不能随便取,有四条硬性的规则必须遵守:

    1、名字只能包含字母、数字、下划线;(补充,实际上$也是可以的,不过不建议使用,传统习惯还是用字母、数字、下划线)

    2、名字只能以字母或下划线开头;

    3、同一级的名字不能重复,如库名不能重;同一个库中的表名不能重;同一个表中的字段名不能重复;

    4、名字不区分大小写;

    另外,我们取名时尽量要能做到顾名知义,同时能用英文尽量用英语,拼音往往太长,主要是显得比较low -_-。

    数据类型

    SQL的数据类型很少,与常量一致,大体分成三类:数字、字符、日期时间。

    1、数字

    INTEGER,最常的整数类型;

    REAL,小数类型;

    SERIAL,自动增长的整数,MySQL中使用AUTO INCREMENT关键字来实现;

    2、字符串

    CHAR(10),定长字符串,长度不足补空格;

    VARCHAR(10),变长字符串;

    TEXT,任意长度字符串;

    3、日期时间

    DATA,日期,如'YYYY-MM-DD'

    TIME,时间,如'HH:MM:SS'

    TIMESTAMP,日期时间,如'YYYY-MM-DD HH:MM:SS'

    基本上最常用的类型也就上边这几种,记住这些就差不多了。

    如果要看更详细的,可以到官网去查询:PostgreSQL: Data Types

    列约束

    每一列(字段)类型的后面就是对这一列的约束,这里也介绍几种常见的约束: 1、NOT NULL,非空,比较好理解,就是这个字段不能为空;

    2、DEFAULT,默认值;

    3、UNIQUE,唯一;

    4、PRIMARY KEY,主键,就是它可以唯一表示这一行(记录),它的作用比较大,即要求唯一,也要求非空,也会生成索引,所以它是一个涵盖了NOT NULL和UNIQUE两个约束;

    表约束

    表约束一般用的很少,最常用的就是PRIMARY KEY,但这个一般都是通过列的约束来实现的,不过这里还是学习一下它的语法,以便后面我们遇到相关的写法可以看得懂。

    
    CREATE TABLE order_details
    ( order_detail_id integer NOT NULL,
      order_id integer NOT NULL,
      order_date date,
      quantity integer,
      notes varchar(200) NOT NULL DEFAULT 'Standard shipping',
      CONSTRAINT order_details_pk PRIMARY KEY (order_detail_id)
    );
    
    

    CONSTRAINT关键字后跟的是约束的名字,这块儿是可以省略的;高级的SQL语句是可以根据约束名字来控制一个表的约束。

    约束名子后边跟的是约束内容;

    创建商品表的语句

    
    CREATE TABLE Product
    (product_id CHAR(4) NOT NULL,
     product_name VARCHAR(100) NOT NULL,
     product_type VARCHAR(32) NOT NULL,
     sale_price INTEGER ,
     purchase_price INTEGER ,
     regist_date DATE ,
     PRIMARY KEY (product_id));
    
    insert into product values(product_id, product_name, product_type, sale_price, purchase_price, regist_date) values('0001', 'T恤衫', '衣服', 1000, 500, '2009-09-01');
    insert into product values(product_id, product_name, product_type, sale_price, purchase_price, regist_date) values('0002', '打孔器', '办公用品', 500, 320, '2009-09-11');
    insert into product values(product_id, product_name, product_type, sale_price, purchase_price) values('0003', '运动T恤衫', '衣服', 4000, 2800);
    insert into product values(product_id, product_name, product_type, sale_price, purchase_price, regist_date) values('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
    insert into product values(product_id, product_name, product_type, sale_price, purchase_price, regist_date) values('0005', '高压锅', '厨房用具', 6800, 5000, '2009-01-05');
    insert into product values(product_id, product_name, product_type, sale_price, regist_date) values('0006', '叉子', '厨房用具', 500, '2009-09-20');
    insert into product values(product_id, product_name, product_type, sale_price, purchase_price, regist_date) values('0007', '擦菜板', '厨房用具', 880, 790, '2008-04-28');
    insert into product values(product_id, product_name, product_type, sale_price, purchase_price, regist_date) values('0008', '圆珠笔', '办公用品', 100, '2009-11-11');
    
    select * from product;
    
    

    视频教程地址

    视频教程地址:https://www.ixigua.com/7200393924001661475

    【下一节】

    知乎个人主页地址:https://www.zhihu.com/people/yu19491001

    相关文章

      网友评论

          本文标题:SQL基础教程-1章2节:创建表

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