1、关于建立数据表相关操作:
1.1、建表语句实例
-- 创建表,表名为:TEST_TABLE_NAME
CREATE TABLE TEST_TABLE_NAME(
ID NUMBER NOT NULL ,--设置表主键
RELATION_SEX NUMBER DEFAULT -1 NULL,--设置主角性别字段,默认值为-1
BIRTHDAY DATE,--设置主角生日字段
DESCRIPTION VARCHAR2(128) DEFAULT '初始值' NULL,--设置主角基本信息字段,不为空
DATE2CHAR VARCHAR2(64) --设置日期转字符串字段
);
1.2、为表列添加主键
-- 修改表,为表添加主键,主键为列ID
ALTER TABLE TEST_TABLE_NAME ADD PRIMARY KEY ("ID");
1.3、为表各字段添加注释
-- 为表添加注释
COMMENT ON COLUMN TEST_TABLE_NAME.ID is '主键';
COMMENT ON COLUMN TEST_TABLE_NAME.RELATION_SEX is '主角性别';
COMMENT ON COLUMN TEST_TABLE_NAME.BIRTHDAY is '主角生日';
COMMENT ON COLUMN TEST_TABLE_NAME.DESCRIPTION is '主角介绍';
COMMENT ON COLUMN TEST_TABLE_NAME.DATE2CHAR is '字符串格式的日期';
1.4、删除操作
-- 条件删除指定数据
DELETE FROM TEST_TABLE_NAME WHERE ID = 6;
-- 删除改表中的所有数据,但是不删除表结构
TRUNCATE TABLE TEST_TABLE_NAME;
-- 删除表所有数据,也删除表结构
DROP TABLE TEST_TABLE_NAME;
2、关于设置主键自增的相关操作
推荐使用方法一
方法一:设置自增序列+创建触发器
2.1.1、创建自增序列
-- 第一步:创建一个自增序列
CREATE SEQUENCE SEQ_TEST_TABLE_NAME
MINVALUE 1 -- 设置序列最小值
MAXVALUE 99999999999999999999 --设置序列最大值,这里设置了20位
START WITH 1 --设置从1开始自增
INCREMENT BY 1 -- 设置每次自增1
NOCYCLE --设置序列达到最大值后是否循环,CYCLE or NOCYCLE
CACHE 20 --指定可以缓存 20 个值在内存里;如果设置不缓存序列,则写NOCACHE
NOORDER ; --设置是否按照请求的顺序产生序列,ORDER or NOORDER
2.1.2、创建触发器
-- 第二步:创建一个触发器
CREATE OR REPLACE TRIGGER TIG_TEST_TABLE_NAME_INSERT
BEFORE INSERT ON TEST_TABLE_NAME
FOR EACH ROW
BEGIN
-- 关于下一行代码相关注释:
-- 查询序列的写一个值,作为表新一行ID列主键的值,
-- :NEW.主键列,ID是该表的主键,其中FROM DUAL是固定写法
SELECT SEQ_TEST_TABLE_NAME.nextval INTO :NEW.ID FROM DUAL;
END;
2.1.3 关于序列与触发器的删除
-- 触发器和序列删除语句实例:
DROP TRIGGER TIG_TEST_TABLE_NAME_INSERT;--删除触发器
DROP SEQUENCE SEQ_TEST_TABLE_NAME;--删除序列
方法二:设置自增序列+显示调用序列的值插入
2.2.1、创建自增序列
-- 与2.1.1创建方式相同
-- 第一步:创建一个自增序列
CREATE SEQUENCE SEQ_TEST_TABLE_NAME
MINVALUE 1 -- 设置序列最小值
MAXVALUE 99999999999999999999 --设置序列最大值,这里设置了20位
START WITH 1 --设置从1开始自增
INCREMENT BY 1 -- 设置每次自增1
NOCYCLE --设置序列达到最大值后是否循环,CYCLE or NOCYCLE
CACHE 20 --指定可以缓存 20 个值在内存里;如果设置不缓存序列,则写NOCACHE
NOORDER ; --设置是否按照请求的顺序产生序列,ORDER or NOORDER
2.2.2、显示调用序列的下一个值插入
-- 第二步:显示调用序列的下一个值插入
INSERT INTO TEST_TABLE_NAME(RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR)
VALUES (1, SYSDATE, '主角一号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TEST_TABLE_NAME
VALUES (SEQ_TEST_TABLE_NAME.currval, 0, SYSDATE, '主角二号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TEST_TABLE_NAME(ID, RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR)
VALUES (SEQ_TEST_TABLE_NAME.currval, 1, SYSDATE, '主角三号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TEST_TABLE_NAME(ID, RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR)
VALUES (SEQ_TEST_TABLE_NAME.currval, 1, SYSDATE, '主角四号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TEST_TABLE_NAME(ID, RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR)
VALUES (SEQ_TEST_TABLE_NAME.currval, 1, SYSDATE, '主角五号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
INSERT INTO TEST_TABLE_NAME(ID, RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR)
VALUES (100, 1, SYSDATE, '主角六号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));--注意,此处如果创建方法一的触发器的话,该语句创建的主键的值为6
3、关于批量插入的相关操作
前言:
一条SQL语句批量插入数据到数据库:
(1)INSERT INTO 某表 VALUES(各个值),VALUES(各个值),…;
(2)多个INSERT INTO VALUEES(各个值);以“;”隔开一同执行
以上两种方法Oracle
和SQL Server
都不支持,MySQL
支持
针对Oracle数据库,有以下两种批量插入方法
方法一:
扫描二维码关注公众号,回复:
15185434 查看本文章
--批量插入数据操作,方法一:
INSERT ALL
INTO TEST_TABLE_NAME(RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR) VALUES (0, SYSDATE, '主角一号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'))
INTO TEST_TABLE_NAME(RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR) VALUES (0, SYSDATE, '主角二号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'))
INTO TEST_TABLE_NAME(RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR) VALUES (0, SYSDATE, '主角三号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'))
SELECT 1 FROM DUAL;
方法二:
--批量插入数据操作,方法二:
INSERT INTO TEST_TABLE_NAME(RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR)
SELECT 1, SYSDATE, '主角四号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL
UNION ALL
SELECT 1, SYSDATE, '主角五号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL
UNION ALL
SELECT 1, SYSDATE, '主角六号诞生', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
4、关于数据CRUD的一些操作
4.1、数据查询
-- 将RELATION_SEX字段值为0设置为‘女’,字段值为1设置为‘男’
SELECT
RELATION_SEX AS 性别编号,
CASE WHEN RELATION_SEX = 0 THEN '女' ELSE '男' END AS 性别
FROM TEST_TABLE_NAME
WHERE ID IS NOT NULL;
4.2、数据增删改查操作
-- 删除掉ID值为6的那一行信息
DELETE FROM TEST_TABLE_NAME WHERE ID = 6;
-- 修改ID值为7的主角信息
UPDATE TEST_TABLE_NAME SET DESCRIPTION = '主角' WHERE ID = 7;
-- 插入一条数据
INSERT INTO TEST_TABLE_NAME(RELATION_SEX, BIRTHDAY, DESCRIPTION, DATE2CHAR)
VALUES (1, SYSDATE, '主角', TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
-- 查询ID不为空的所有数据
SELECT * FROM TEST_TABLE_NAME WHERE ID IS NOT NULL;