表管理和索引,外來鍵作用:
建立資料庫
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 建立外來鍵的前提 本表...