【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。
- Text(文本)
- 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 存储结果集,供稍后处理。
- String 类型
- access 数据类型
- 约束
- 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 table 表 drop 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,……)
- NOT NULL - 指示某列不能存储 NULL 值。
-------------------------------------------------------------------------------------
如果万事开头难 那请结局一定圆满 @ Phoenixy
-------------------------------------------------------------------------------------