mysql基础(一)——表、索引、视图

SQL语句不区分大小写

创建数据库

create database myData

删除数据库

drop database myData

 

创建表

复制代码
create table company (
code int(6) PRIMARY KEY,
name varchar(20) NOT NULL 
);

create table mybook(
    id int auto_increment primary key,
    bookId varchar(20),
    bookName varchar(20),
    bookType int(5),
    companyNo int(6),
  foreign key (companyNo) references company (code)
);
复制代码

 表中新增一列

alter table company add  column country varchar(20);

删除主键

复制代码
主键不自增

alter table company drop primary key

如果主键自增的话需要先改变自增 例如:删除图书表的主键
1.alter table mybook change id id int
    
恢复主键自增:alter table mybook change id id int auto_increment
2.alter table mybook drop primary key;
复制代码

 

增加主键

alter table company add primary key(id);

 

查看索引

show index from mybook;
  或者
show keys from mybook;

创建索引

复制代码
 
create index myIndex on company(code);
create unique index myIndex  on company(code)

CREATE INDEX可对表增加普通索引或UNIQUE索引。不能用CREATE INDEX语句创建PRIMARY KEY索引。

alter table company add index myIndex(code);

alter table company add unique (code); 

alter table company add primary key(code);  

 

索引类型:

1.PRIMARY KEY (主键索引)   alter table table_name add primary key ( `column` )

2.UNIQUE 或 UNIQUE KEY (唯一索引) alter table table_name add unique (`column`)

3.FULLTEXT (全文索引) alter table table_name add fulltext (`column` )

4.INDEX (普通索引) alter table table_name add index index_name ( `column` )

5.复合索引 (多列索引) alter table `table_name` add index index_name ( `column1`, `column2`, `column3` )

我们创建了(a1, b2,c3)的复合索引,那么其实相当于创建了(a1,b2,c3)、(a1,b2)、(a1)三个索引,这被称为最佳左前缀特性。因此我们在创建复合索引时应该将最常用作限制条件的列放在最左边,依次递减。

复制代码

 

删除索引

复制代码
drop index myIndex on company;

alter table company drop index myIndex ;

alter table company drop primary key ;

 

复制代码

 

创建视图

复制代码
create view myView as select b.bookid,a.name,b.bookname from company a,mybook b where b.companyNo=a.code

视图相对于普通的表的优势主要包括以下几项:

<1> 简单:使用视图的用户完全不需要关心视图中的数据是通过什么查询得到的,视图中的数据对用户来说已经是过滤好的符合条件的结果集;

<2> 安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行或某个列,但是通过视图就可以简答地实现;

<3> 数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,原表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

复制代码

删除视图

drop view myView

视图的限制:
<1> 不能在视图上创建索引
<2> 在视图的FROM子句中不能使用子查询; 变通:可以将from字句的子查询创建成一个视图 最后变成 create view newView from tableA,oldView where... 其中oldView就是原始from中子查询

查看视图

show tables

查看视图的定义:
show create view myview;

更改视图

alter view mybiew  as select_statement

 

posted @   斑马森林  阅读(802)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示