【SQL】 增删改查之 新增

SQL 结构化查询语言(Structured Query Language)

  • CREATE DATABASE - 创建
    • 语法

      create database 库名

       

  • CREATE TABLE - 创建表 

    • 语法

      -- 数据类型(varchar、int、date ... )size为最大长度
      create table 表名
      (
      列名1 数据类型(size),
      列名2 数据类型(size),
      列名3 数据类型(size),
      ....
      );

       

  • INSERT INTO - 向数据库中插入新数据
    • 语法
      -- 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
      insert into 表名 values ('value1','value2','value3','','');
      
      -- 第二种形式需要指定列名及被插入的值:
      insert into 表名 (列名1,列名2,列名3,...) values ('value1','value2','value3',...);

       

  • CREATE INDEX - 创建索引(搜索键)
    • 语法
      -- 索引是用来快速查询数据
      -- 允许使用重复值
      create index 索引名 on 表名(列名)
      
      -- 不允许使用重复值
      create unique index 索引名 on 表名(列名)

       

  • CREATE VIEW - 创建视图
    • 语法
      create view 视图名 as select 列1 from 表1 where 列2 = ‘value’;

       

  • 数据类型
    •  access 数据类型
      数据类型描述
      Text 用于文本或文本与数字的组合。最多 255 个字符。
      Byte 允许 0 到 255 的数字。
      Integer 允许介于 -32,768 与 32,767 之间的全部数字。
      Long 允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字。
      Single 单精度浮点。处理大多数小数。
      Double 双精度浮点。处理大多数小数。
      Date/Time 用于日期和时间
      Ole Object 可以存储图片、音频、视频或其他 BLOBs(Binary Large OBjects)。
      Hyperlink 包含指向其他文件的链接,包括网页。
    • mysql 数据类型
      • Text(文本)
        数据类型描述
        CHAR(size) 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
        VARCHAR(size) 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。
        TEXT 存放最大长度为 65,535 个字符的字符串。
        LONGTEXT 存放最大长度为 4,294,967,295 个字符的字符串。
      • Number(数字)
        数据类型描述
        INT(size) 带符号范围-2147483648到2147483647,无符号的范围是0到4294967295。 size 默认为 11
        FLOAT(size,d) 带有浮动小数点的小数字。在 size 参数中规定显示最大位数。在 d 参数中规定小数点右侧的最大位数。
        DOUBLE(size,d) 带有浮动小数点的大数字。在 size 参数中规显示定最大位数。在 d 参数中规定小数点右侧的最大位数。
      • Date/Time(日期/时间)类型
        数据类型描述
        DATE() 日期。格式:YYYY-MM-DD  注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'
        YEAR() 2 位或 4 位格式的年。  注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。
    • sql server 数据类型
      •  String 类型
        数据类型描述
        char(n) 固定长度的字符串。最多 8,000 个字符。
        varchar(n) 可变长度的字符串。最多 8,000 个字符。
        text 可变长度的字符串。最多 2GB 文本数据。
        bit 允许 0、1 或 NULL
      •  Number 类型
        数据类型描述
        int 允许介于 -2,147,483,648 与 2,147,483,647 的所有数字。
        float(n) 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。

        n 参数指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。

      •  Date 类型
        数据类型描述
        datetime 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。
        date 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。
        time 仅存储时间。精度为 100 纳秒。
        timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 值基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。
      •  其他类型
        数据类型描述
        xml 存储 XML 格式化数据。最多 2GB。
        cursor 存储对用于数据库操作的指针的引用。
        table 存储结果集,供稍后处理。
  • 约束
    • NOT NULL - 指示某列不能存储 NULL 值。
      -- NOT NULL 约束强制字段始终包含值
      -- 创建表时规定
      create table 表名(
          列名1 数据类型 NOT NULL,
          列名2 数据类型 
      );
      
      -- 创建表后规定
      alter table 表名 modify 列名 数据类型 NOT NULL;
      
      -- 删除NOT NULL 约束
      alter table 表名 modify 列名 数据类型 is NULL;

       

    • UNIQUE - 保证某列的每行必须有唯一的值。
      -- 创建表时 规定唯一约束
      -- MySQL:
      create table 表名 (
      列名1 数据类型 NOT NULL,
      列名2 数据类型,
      UNIQUE (列名1)
      );
      
      -- SQL Server / Oracle / MS Access:
      create table 表名 (
      列名1 数据类型 NOT NULL UNIQUE,
      列名2 数据类型
      );
      
      -- 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:MySQL / SQL Server / Oracle / MS Access:
      create table 表名 (
      列名1 数据类型 NOT NULL UNIQUE,
      列名2 数据类型,
      列名3 数据类型,
      constraint 约束名 UNIQUE (列名1,列名2)
      );
      
      -- 创建表后 规定唯一约束
      alter table 表名 add(列名1)
      
      -- 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束
      alter table 表名 add constraint 约束名 UNIQUE (列名1,列名2)
      
      -- 取消唯一约束
      -- MySQL:
      alter table 表名 drop index 约束名 ;
      
      -- SQL Server / Oracle / MS Access:
      alter table 表名 drop constaint 约束名;

       

    • PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
      -- 主键必须包含唯一的值.主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
      -- 创建表时的主键 
      -- MySQL
      create table 表名 (
      列名1 数据类型,
      列名2 数据类型,
      PRIMARY KEY (列名1)
      )
      -- SQL Server / Oracle / MS Access:
      create table 表名 (
      列名1 数据类型 PRIMARY KEY,
      列名2 数据类型
      )
      -- 定义多个列作为主键。只有一个主键(主键名),之间值是由两个列名组成的
      create table 表名 (
      列名1 数据类型 PRIMARY KEY,
      列名2 数据类型,
      列名3 数据类型,
      constraint 主键名 PRIMARY KEY (列名1,列名2)
      )
      
      -- 创建表后添加主键
      -- 单列主键
      alter table 表名 add PRIMARY KEY (列名1);
      
      -- 多列主键
      alter table 表名 add CONSTRAINT 主键名 PRIMARY KEY (列名1,列名2);
      
      -- 删除主键
      -- MySQL:
      alter table 表名 drop  PRIMARY KEY;
      
      --SQL Server / Oracle / MS Access:
      alter table 表名 drop  CONSTRAINT 主键名;

       

    • FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
      -- 一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。
      -- 创建表时 
      -- MySQL
      create table 表1 (
      列1 数据类型,
      列2 数据类型,
      PRIMARY KEY (列1),
      FOREIGN KEY (列2) REFERENCES 表2(列2)
      );
      -- SQL Server / Oracle / MS Access:
      create table 表名 (
      列1 数据类型 PRIMARY KEY,
      列2 数据类型 FOREIGN KEY REFERENCES 表2(列2)
      );
      -- 定义多个列作为主键。只有一个主键(主键名),之间值是由两个列名组成的
      create table 表1 (
      列1 数据类型 PRIMARY KEY,
      列2 数据类型,
      列3 数据类型,
      PRIMARY KEY (列1),
      CONSTRAINT 外键名 FOREIGN KEY (列2)
      REFERENCES 表2(列2)
      );
      
      -- 创建表后添加
      -- 单列主键
      alter table 表1 add FOREIGN KEY (列1) REFERENCES 表2(列1);
      
      -- 多列主键
      alter table 表1 add CONSTRAINT 外键名 FOREIGN KEY (列1)
      REFERENCES 表2(列1);
      
      -- 删除
      -- MySQL:
      alter table 表名 drop  PFOREIGN KEY 外键名;
      
      --SQL Server / Oracle / MS Access:
      alter table 表名 drop  CONSTRAINT 外键名;

       

    • CHECK - 保证列中的值符合指定的条件。
      -- 限制列中的值的范围
      -- 创建表时 MySQL:
      create table 表(
      列1 数据类型, 列2 数据类型,
      CHECK (列1 > 0) ) -- SQL Server / Oracle / MS Access: create table 表(
      列1 数据类型
      CHECK (列1 > 0), 列2 数据类型, ) -- 定义多个列的 CHECK 约束 create table 表(
      列1 数据类型, 列2 数据类型,
      constraint 约束名 CHECK (列1 >0 and 列2 ='value') ) -- 添加单个约束 alter table 表1 add CHECK (列1 > 0); -- 添加多个列的 约束 alter table 表1 add constraint 约束名 CHECK (列1 >0 and 列2 ='value'); -- 撤销约束 -- SQL Server / Oracle / MS Access: alter table 表1 drop constraint 约束名; -- MySQL: alter tabledrop CHECK 约束名

       

    • DEFAULT - 规定没有给列赋值时的默认值。
      -- 固定默认值
      create table 表1(
      列1 数据类型, 列2 数据类型
      DEFAULT 'value' ); -- 通过函数设置默认值 create table 表1(
      列1 数据类型, 列2 date
      DEFAULT GETDATE() ); -- 修改约束 -- MySQL: alter table 表名 alter 列1 set DEFAULT 'value'; -- SQL Server / MS Access: alter table 表名 ADD CONSTRAINT 约束名 DEFAULT 'value' for 列1; -- Oracle: alter table 表名 MODIFY 列1 DEFAULT 'value'; -- 撤销约束 -- MySQL: alter table 表名 alter 列1 drop DEFAULT; -- SQL Server / Oracle / MS Access: alter table 表1 alter column 列1 drop DEFAULT;

       

    • AUTO INCREMENT 生成一个唯一的数字
      -- 用于 MySQL 的语法
      -- AUTO_INCREMENT 的开始值是 1,每条新记录递增 1;insert 时无需规定列1字段值
      create table 表(
      列1 数据类型 AUTO INCREMENT,
      列2 数据类型,
      PRIMARY KEY (列1)
      )
      --  AUTO_INCREMENT 序列以其他的值起始
      alter table 表 AUTO_INCREMENT=100-- 用于 SQL Server 的语法; 开始值是 1,每条新记录递增 10
      create table 表(
      列1 数据类型 IDENTITY(1,10) PRIMARY KEY,
      列2 数据类型
      )
      
      -- 用于 Access 的语法; 开始值是 1,每条新记录递增 10
      create table 表(
      列1 数据类型 PRIMARY KEY AUTOINCREMENT(1,10),
      列2 数据类型
      )
      
      -- 用于 Oracle 的语法; 通过 sequence 对象(该对象生成数字序列)创建 auto-increment 字段。它以 1 起始且以 10 递增。该对象缓存 5个值以提高性能
      
      create SEQUENCE 表1
      MINVALUE 1
      START WITH 1
      INCREMENT BY 10
      CACHE 5
      -- insert是需要使用 seq_person.nextval插入数据
      insert into 表1 values(seq_person.nextval,列2value,……)

       

posted @ 2021-08-27 09:22  Phoenixy  阅读(496)  评论(0编辑  收藏  举报