MySQL、Postgresql、Oracle常用SQL语句(主要演示下DDL的区别)

SQL分类

一、DDL(Data Definition Language)数据定义语言

	用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等

DDL对于不同的数据库实现相同操作的SQL语句有所不同

下面对三种常见数据库给出相应示例:

MySQL数据库

-- 查看数据库
SHOW DATABASES; 

-- 使用test库
USE `test`; 

-- 新建表  (使用InnoDB存储引擎)
CREATE TABLE `t_user` (
  `id` varchar(32) NOT NULL COMMENT '主键id',
  `name` varchar(100) DEFAULT NULL COMMENT '用户名',
  `password` varchar(100) DEFAULT NULL COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

-- 给t_user表添加注释 
ALTER TABLE `test`.`t_user` COMMENT='用户表';

-- 在password列后面新增一列 (nick_name 昵称 列)
ALTER TABLE `test`.`t_user` ADD COLUMN `nick_name` VARCHAR(100) NULL COMMENT '昵称' AFTER `password`; 

-- 修改昵称列字段类型 (字段类型由varchar改为char)
 ALTER TABLE `test`.`t_user` CHANGE `nick_name` `nick_name` CHAR(100) CHARSET utf8 COLLATE utf8_general_ci NULL COMMENT '昵称'; 

-- 删除昵称列
ALTER TABLE `test`.`t_user` DROP COLUMN `nick_name`;

-- 新建索引 (给单个name字段建立索引)
ALTER TABLE `test`.`t_user`  ADD  INDEX `i_user_name` (`name`);

-- 新建联合索引 (给name字段和password字段建立联合索引)
ALTER TABLE `test`.`t_user` ADD  INDEX `i_user_name` (`name`, `password`);

-- 更改列的排列顺序 (将name排列到password后面)
ALTER TABLE `test`.`t_user`  CHANGE `name` `name` VARCHAR(100) CHARSET utf8 COLLATE utf8_general_ci NULL  COMMENT '用户名'  AFTER `password`;

Postgresql数据库

  • 注意点
    PostgreSQL对表名、字段名都是区分大小写的。在图形化界面可以正常新建。用SQL语句的时候需要加双引号,如果jdbc查询等处,记得使用转义符号。
    PostgreSQL在SQL语句中对大小写是不敏感的
    select ID from t_user 和 select id from t_user
    都会从t_user这个表中查询id这个字段。如果要查询大写字母的字段,同样要加上双引号:select “ID” from t_user

-- 创建表t_test_user
CREATE TABLE "public"."t_test_user" (
  "id" varchar(32) COLLATE "pg_catalog"."default" NOT NULL,
  "name" varchar(255) COLLATE "pg_catalog"."default",
  "password" varchar(255) COLLATE "pg_catalog"."default",
  CONSTRAINT "t_test_user_pkey" PRIMARY KEY ("id")
)
;

-- 分别给每个字段添加注释
COMMENT ON COLUMN "public"."t_test_user"."id" IS '主键id';
COMMENT ON COLUMN "public"."t_test_user"."name" IS '用户名';
COMMENT ON COLUMN "public"."t_test_user"."password" IS '密码';


-- 新增昵称列
ALTER TABLE "public"."t_test_user"  ADD COLUMN "nick_name" varchar(255);

COMMENT ON COLUMN "public"."t_test_user"."nick_name" IS '昵称';


-- 删除昵称列
alter table  "public"."t_test_user"  drop column nick_name;

-- 新建索引 (name列)
CREATE INDEX "i_name" ON "public"."t_test_user" USING btree ("name");

-- 新建联合索引(name和password列)
CREATE INDEX "i_name" ON "public"."t_test_user" USING btree (
  "name",
  "password"
);

Oracle数据库

  • 注意点
    因为 ORACLE 在建表/字段时,如果没有双引号, ORACLE 会把表名、字段名全部转化为大写字母,然后写入数据字典。访问数据字典时,没有双引号 ORACLE 会将其转化成大写然后再去数据字段中查找。不仅仅关键字不区分大小写,函数名,过程名,表名称,pl/sql块中变量名,用户名,密码等都不区分大小写。

可能很多人都会误认为 ORACLE 是不区分大小写的,原因是我们在写查询语句的时候,大小写无所谓,结果都是一样的,这只是个表面现象。因为只要你不使用双引号表示区分大小写, ORACLE 会默认把你写的脚本全部转换为大写的。

-- 建表
create table "t_user"(
       "id" varchar(32) primary key,
       "name" varchar(200) not null,
       "password" varchar(200) not null       
       );
       
-- 添加注释
comment on column "t_user"."id" is '主键id';
comment on column "t_user"."name" is '用户名';
comment on column "t_user"."password" is '密码';

-- 添加昵称列
ALTER TABLE "t_user" ADD "nick_name" varchar(40)

--修改字段类型
ALTER TABLE "t_user" MODIFY "name" NUMBER(20) 

--删除表列
ALTER TABLE "t_user" DROP "name" CASCADECONSTRAINTS 

二、DML(Data Manipulation Language)数据操作语言

用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等

三、DQL(Data Query Language)数据查询语言

	用来查询数据库中表的记录(数据)。关键和字:select, where 等

DML和DQL对于不同数据库来说 语法基本一致

四、DCL(Data Control Language)数据控制语言

	用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

DCL对于不同的数据库实现相同操作的语句也有所不同 DCL对于开发者来说了解即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

家乡的落日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值