表管理和索引,外來鍵作用

2022-06-16 07:12:10 字數 3689 閱讀 7357

表管理和索引,外來鍵作用:

建立資料庫

create schema if not exists students character set 'gbk' collate 'gbk_chinese_ci';

cd students

lsfile db.opt

cat db.opt

default-character-set=gbk

default-collation=gbk_chinese_ci

修改資料庫

help alter database;

help drop databases;

help create table;

建立表的3種方法:

1)直接定義一張空表;

2)從查詢結果中建立新錶

3)以其他表為模板建立乙個空表 like關鍵字

單字段:

primary key 主鍵

unique key 唯一鍵

單或多字段:

primary key (col,...)

unique key (col,...)

index (col,...)

create table if not exists tb_name (col_name col_definition,constraint)

create table tb1 (id int unsigned not null auto_increment primary key,name char(20) not null,age tinyint not null)

id欄位設定為主鍵

create table tb2 (id int unsigned not null auto_increment ,name char(20) not null,age tinyint not null,primary key(id))

主鍵,唯一鍵,索引字段

create table tb3 (id int unsigned not null auto_increment ,name char(20) not null,age tinyint not null,primary key(id),unique key(name),index(age)) engine = engine_name

主鍵 唯一鍵 索引鍵的卻別:

鍵也稱作約束,可用作索引,屬於是特殊索引(有特殊限定):b+tree

create index

create table courses(cid tinyint unsigned not null auto_increment primary key,couse varchar(50) not null) engine = innodb;

show table status like 'courses';

show table status like 'courses'\g

drop table courses;

insert into courses(couse) values('python'),('c++'),('mysql');

select * from courses;

show indexes from courses;

顯示指定表的索引

show indexes from tb_name;

查詢結果建立新錶

create table testcourses select * from courses where cid <=2;

show tables;

select * from testcourses;

顯示表結構

desc courses;

desc testcourses;

以其他表為模板建立一張空表

create table test like courses;

desc test;

修改表結構:alter table

help alter table

增刪改 字段

增刪改 索引

修改表屬性

show indexes from test;

alter table test add unique key (couse);  新增唯一鍵索引

alter table test change couse course varchar(50) not null;  修改欄位名稱

alter table test add startdate date default '2020-01-01'; 增加字段

help alter table

alter table test rename as|to courses2;  修改表名稱

rename table courses2 to test;

刪除表help drop table

drop table if exists tb_name;

create table student (sid int unsigned not null auto_increment primary key,name varchar(30),cid int not null);

insert into student (name,cid) values ('wqd',2),('zqd',1);

select * from student;

select * from courses;

select name,couse from student,courses where student.cid=courses.cid;

insert into student (name,cid) values('chenchen',5);

delete from student where cid =5;

新增外來鍵

作用:學生表的cid和課程表的cid 引用外來鍵約束,學生表裡插入不存在的課程時 會報錯

alter table student modify cid tinyint unsigned not null;

alter table student add foreign key foreign_cid(cid) references courses(cid);

show indexes from student;

修改表的引擎:

alter table courses engine = innodb;

alter table courses engine = mysiam;

insert into student (name,cid) values ('chenchen',3);

delete from courses where cid=3;   會報錯

只有innodb引擎才支援外來鍵

外來鍵約束能夠防止 表 被誤刪

索引:建立 和 修改

help create index ;

help drop index;

create index index_name on tb_name;

drop index index_name on tb_name;

create index name_on_student on student (name) using btree;

create index name_on_student on student (name(5) desc) using btree;  長度5字元 降序

drop index name_on_student on student;

主鍵,外來鍵和索引

主鍵和索引的區別 主鍵是索引,但索引不一定是主鍵。主鍵具有唯一性,而只有唯一性索引才具有唯一性 主鍵的值不能為空,不能重複。索引可以在程式中動態建立刪除。也可以是任何有序的字段.如果在乙個表中,列a b c 被設為主鍵的情況下,當需要將a,b,c 設為索引時,a,b,c被設為主鍵,資料庫自動會建立索...

主鍵和外來鍵的作用

主鍵和外來鍵是把多個表組織為乙個有效的關聯式資料庫的粘合劑。主鍵和外來鍵的設計對物理資料庫的效能和可用性都有著決定性的影響。必須將資料庫模式從理論上的邏輯設計轉換為實際的物理設計。而主鍵和外來鍵的結構是這個設計過程的癥結所在。一旦將所設計的資料庫用於了生產環境,就很難對這些鍵進行修改,所以在開發階段...

外來鍵的作用

外來鍵的作用 保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料。使兩張表形成關聯,外來鍵只能引用外表中的列的值!例如 a b 兩個表 a表中存有客戶號,客戶名稱 b表中存有每個客戶的訂單 有了外來鍵後 你只能在確信b 表中沒有客戶x的訂單後,才可以在a表中刪除客戶x 建立外來鍵的前提 本表...