模式
在mysql中,schema和database是等效的,但是在其他数据库产品中有所不同,如oracle,schema是database的一部分,表示the tables and other objects owned by a single user
- 创建模式
create schema 模式名 authorization 用户名
如果没有指定模式名,模式名默认为用户名 - 删除模式
drop schama 模式名 cascade|restrict
cascade级联删除:删除模式的同时把模式中的所有数据库对象全部删除
restrict约束删除:只有当模式中没有任何下属对象时才能执行
表
- 创建表
create table 表名
(列名 数据类型 列级完整性约束条件,
。。。,
表级完整性约束条件)
如果完整性约束条件涉及到多个属性列时,必须在表级定义该约束条件,其他既可以定义在列级,也可以定义在表级。
示例:
create table tab1
(col1 smallint,
col2 char(5),
primary key(col1,col2),
foreign key(col1) references tab2(Sno));
常用完整性约束:
primary key、unique、not null、foreign key、references、check(mysql不支持)
主键唯一且非空,unique可以为空且可以有多个null
- 删除表
drop table 表名 cascade|restrict
restrict约束:如存在依赖该表的对象(视图、索引、存储过程、约束等),此表不能被删除
cascade级联:删除该表的同时,相关的依赖对象被同时删除 - 修改表
alter table 表名
[add column 新列名 数据类型 完整性约束]
[add 表级完整性约束]
[drop column 列名 restrict|cascade]
[drop 完整性约束名 restrict|cascade]
[modify 列名 数据类型]
问题:SQL Server中,删除列是否允许?删除主键所在列是否允许?
允许,可以通过alter table 表名 drop column 列名删除列,主键和联合主键中的某一列都是可以删除的
索引
- 建立索引
create [unique|cluster] index 索引名 on 表名(列名 [asc|desc])
三种索引:唯一索引、非唯一索引、聚簇索引
聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。
一个表上最多只能建立一个聚簇索引。 - 删除索引
drop index 索引名 [on 表名]
当要查询的字符串本身含有‘%’或‘_’时,应搭配escape进行转义
例如:select * from tab where name like ‘dd#_’ escape ‘#’