oracle和mysql一些基本sql语句的区别
post date: 2020-09-08
oracle中用"模式名.表名",相当于mysql中的"数据库名.表名"。
# 1 单引号、双引号、反引号
mysql中可以使用单引号、双引号、反引号,如果表名或字段名可能与系统关键字相同,为了避免歧义,需要用反引号标识。
oracle中不能使用反引号标识表名或字段名。可以使用单引号或双引号,当使用双引号时,则严格区分大小写,否则oracl都默认转换为大写。
# 2 创建表
mysql:
CREATE TABLE database_name.`table_name` (姓名 varchar(255),年龄 int(255),日期 datetime)
1
oracle:
CREATE TABLE schema_name."table_name" (姓名 varchar(255),年龄 number,日期 date)
1
# 3 删除表
如果表存在则删除该表。 mysql:
DROP TABLE IF EXISTS database_name.`table_name`
1
oracle中没有DROP TABLE IF EXISTS,只能间接实现
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE schema_name."table_name"';
EXCEPTION WHEN OTHERS THEN NULL;
END;
1
2
3
4
2
3
4
# 4 添加字段和注释
mysql:
ALTER TABLE database_name.`table_name` ADD new_fields int comment '注释'
1
oracle:
ALTER TABLE schema_name."table_name" ADD "new_fields" number;
-- 给表添加注释
COMMENT ON TABLE schema_name."table_name" IS '表注释';
-- 给字段添加注释
COMMENT ON COLUMN schema_name."table_name"."姓名" IS '字段注释';
1
2
3
4
5
2
3
4
5
# 5 删除字段
mysql:
ALTER TABLE database_name.`table_name` DROP COLUMN 年龄
1
oracle:
-- 以下两种都可以
ALTER TABLE schema_name."table_name" DROP(年龄);
ALTER TABLE schema_name."table_name" DROP COLUMN "年龄";
1
2
3
2
3
# 6 修改字段名
mysql:
ALTER TABLE database_name.`table_name` CHANGE COLUMN old_name new_name varchar(255)
1
oracle:
ALTER TABLE schema_name."table_name" rename column "old_name" to "new_name"
1
# 7 修改字段类型
mysql:
ALTER TABLE database_name.`table_name` MODIFY COLUMN `年龄` VARCHAR(10)
1
oracle: 当表为空时,可以直接修改字段类型
ALTER TABLE schema_name."table_name" MODIFY ("年龄" varchar2(10))
1
如果表不为空,只能间接修改字段类型:修改原字段名,新增目标类型的字段,复制原字段值,删除原字段
ALTER TABLE schema_name."table_name" rename column "年龄" to "tmp_name";
ALTER TABLE schema_name."table_name" add "年龄" varchar2(10);
UPDATE schema_name."table_name" SET "年龄"=TRIM("tmp_name");
ALTER TABLE schema_name."table_name" DROP("tmp_name");
1
2
3
4
2
3
4
# 8 增删改查
# 增
mysql:
INSERT INTO database_name.`table_name` VALUES ('A', 14, '2017-11-15 00:00:00')
1
oracle:
INSERT INTO schema_name."table_name" VALUES ('A', 14, to_date('2017-11-15 00:00:00' , 'yyyy-mm-dd hh24:mi:ss'))
1
# 删
mysql:
DELETE FROM database_name.`table_name` WHERE `年龄`=5
1
oracle:
DELETE FROM schema_name."table_name" WHERE "年龄"=5
1
# 改
mysql:
UPDATE database_name.`table_name` SET `姓名`="B" WHERE `姓名`="A"
1
oracle:
UPDATE schema_name."table_name" SET "姓名"="B" WHERE "姓名"="A"
1
# 查
mysql:
SELECT * FROM database_name.`table_name`
1
oracle:
SELECT * FROM schema_name."table_name"
1