sql-1-DDL-操作数据库与表
1. 操作数据库:CRUD
oracle应该是没有操作数据库的SQL
oracl创建数据库通过数据库提供的工具“Database Configuration Assistant”来新建数据库 windows版oracle新建数据库
C(Create):创建
create database 数据库名称; --创建数据库
create database if not exists 数据库名称; --如果不存在再创建
create database 数据库名称 character set 字符集名; --创建数据库,并指定字符集
create database db1 character set utf8mb4;
R(Retrieve):查询
show databases; --查询所有数据库的名称
show databases like 'db%';
show create database db1; --查看你指定数据库的创建语句
U(Update):修改
alter database 数据库名称 character set 字符集名称; --修改数据库的字符集
D(Delete):删除
drop database 数据库名称; --删除数据库,同时删除该数据库相关的目录及其目录内容
drop database if exists 数据库名称; --如果数据库存在再删除
使用数据库
use 数据库名称; --使用数据库
select database(); -- 查询当前正在使用的数据库
2. 操作表
C(Create):创建
-- 创建表
create table student(
id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);
注意:最后一列,不需要加逗号(,
)
R(Retrieve):查询
desc 表名; -- 查看表结构 字段名称以及约束
mysql
show tables; -- 查询当前选中数据库中所有的表名
show tables like "stu%"; -- 模糊搜索 表名
SHOW CREATE TABLE student; --查看表的创建语句
oracle
select * form tab; -- 查看当前用户下所有表名
U(Update):修改
alter table 表名 rename to 新的表名; --修改表名
rename 表名 to 新表名; -- 仅oracle支持
alter table 表名 rename column 列名 to 新列名; -- 修改字段名
alter table 表名 add 列名 数据类型; --添加字段
alter table 表名 drop column 列名; -- 删除字段
alter table 表名 drop 列名; -- 省略column关键字,oracle不支持
alter table 表名 modify 列名 类型(大小) -- 修改字段的数据类型或长度
alter table 表名 change 列名 新列名 新数据类型; --同时修改列名和数据类型 --oracle不支持
-- 仅mysql支持
alter table 表名 character set 字符集名称; --修改表的字符集
ALTER TABLE 表名 ENGINE=MYISAM;
mysql :
select * from emp1;
desc emp1;
alter table emp1 add age int;
alter table emp1 modify age decimal(3,0);
alter table emp1 CHANGE age age1 int;
alter table emp1 drop column age1;
alter table emp1 drop age;
oracle :
select * from emp;
desc emp;
alter table emp add age number;
alter table emp modify age number(3,0);
alter table emp CHANGE age age1 number;--oracle不支持
alter table emp drop column age;
alter table emp drop age; --oracle不支持
D(Delete):删除
drop table 表名; --删除表结构和数据,
drop table if exists 表名;
show recyclebin; -- 查看回收站 仅oracle支持
purge recyclebin; -- 清空回收站 仅oracle支持
复制
复制表结构
create table 表名 like 被复制的表名; -- 仅复制表表结构 oracle不支持
复制表结构和数据(子查询方式)
CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名
示例:
CREATE TABLE emp as SELECT * FROM emp1;
创建myTable2表,并存入emp表的empno,ename,sal字段及数据
… as select empno,ename,sal from emp;
示例: 创建myTable3表,并存入emp表中sal<4000的所有字段及数据
where sal<4000;
示例: 创建myTable4表,表的结构与emp表相同,但数据为空。
where 1=2 ;
从其它表中拷贝数据
insert into [表名] select .... from [另一个表] where ....
insert into [表名](字段名1,字段名2,…,字段名n)
select 字段名1,字段名2,…,字段名n
from 表名;
示例:INSERT INTO mytab(empno,ename,sal) SELECT empno,ename,sal FROM emp;