SOL学习笔记(3)

it2022-05-09  36

//建立普通索引;

CREATE INDEX INDEX_NAME ON TB_NAME(COLUMN);

ALTER TABLE TB_NAME ADD INDEX INDEX_NAME(COLUMN);

//建立多重索引,是“且”的关系

CREATE INDEX INDEX_NAME ON TB_NAME(COLUMN1,COLUMN2);

ALTER TABLE TB_NAME ADD INDEX INDEX_NAME(COLUMN1,COLUMN2);

//查看索引;

SHOW INDEX FROM TB_NAME; 

//查看索引效果

EXPLAIN SELECT *FROM TB_NAME WHERE COLUMN1=..;

//删除普通索引

ALTER TABLE TB_NAME DROP INDEX INDEX_NAME;

//创建唯一约束(索引)

ALTER TABLE TB_NAME ADD CONSTRAINT IN_UQ_NAME UNIQUE (COLUMN);

//有“IN_UQ_NAME”,唯一约束(索引)名字为“IN_UQ_NAME”,否则为“COLUMN”

ALTER TABLE TB_NAME ADD CONSTRAINT IN_UQ_NAME UNIQUE KEY(COLUMN1,COLUMN2)

//有“IN_UQ_NAME”,唯一约束(索引)名字为“IN_UQ_NAME”,否则取名“COLUMN1”(即第一个参数);

//UNIQUE 后加或不加key都可以;

//创建主键约束(索引)

 

ALTER TABLE TB_NAME ADD CONSTRAINT IN_PR_NAME PRIMARY KEY(COLUMN);

ALTER TABLE TB_NAME ADD CONSTRAINT PRIMARY KEY(COLUMN1,COLUMN2);

//IN_PR_NAME不起作用,索引名为PRIMARY;  PRIMARY后必须有key;

删除唯一约束(索引)同删除普通索引;

//删除主键约束(索引)

ALTER TABLE T1 DROP INDEX PRIMARY;//错误 ALTER TABLE T1 DROP PRIMARY KEY;//正确! //建表时即指定约束

例1:

CREATE TABLE STUDENT( ID INT UNIQUE, NAME VARCHAR(10) PRIMARY KEY//没有默认值! );

==

CREATE TABLE `student` (   `ID` int(11) DEFAULT NULL,   `NAME` varchar(10) NOT NULL,   PRIMARY KEY (`NAME`),   UNIQUE KEY `ID` (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

例2:

CREATE TABLE TEACHER( ID INT ,                          NAME VARCHAR(10) , CONSTRAINT ID_index UNIQUE KEY(ID), CONSTRAINT PRIMARY KEY(NAME) );

==

CREATE TABLE `teacher` (   `ID` int(11) DEFAULT NULL,//默认空!但是两个null的数据,不认为数据相同,ID=null(报错),(ID is null)   `NAME` varchar(10) NOT NULL DEFAULT ' ',//此时NAME不仅非空且有‘ ’的默认值;   PRIMARY KEY (`NAME`),   UNIQUE KEY `ID_index` (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8

例3:

CREATE TABLE PROFESSOR( ID INT ,                          NAME VARCHAR(10) , CONSTRAINT PRIMARY KEY(ID,NAME)//此时ID、NAME均有默认值,且ID和NAME为“且”的关系。 );

==

CREATE TABLE `professor` (   `ID` int(11) NOT NULL DEFAULT '0',   `NAME` varchar(10) NOT NULL DEFAULT '',   PRIMARY KEY (`ID`,`NAME`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 //插入数据:

INSERT INTO PROFESSOR(NAME) VALUES('L'),('W');//是对的!此时数据为(0,L),(0,W)

INSERT INTO PROFESSOR(ID) VALUES(1),(2);//是对的!此时数据为(1,''),(2,'')

INSERT INTO PROFESSOR(ID,NAME) VALUES(0,'');//为错的,数据重复!

注意点:(1)两个NULL型数据,不认为相同,DELETE FROM STUDENT WHERE ID IS NULL;(能把数据数据删除),DELETE FROM STUDENT WHERE ID=NULL;(无效)

               (2)PRIMARY KEY=NOT NULL + UNIQUE KEY;且一个表中只能有一个PRIMARY KEY;

               (3)PRIMARY KEY的索引名为PRIMARY!删除主键时,名字为PRIMARY KEY,直接DROP

               (4)以“CONSTRAINT UNIQUE/PRIMARY KEY...”方式建立时,唯一约束默认NULL,主键默认值与字段type有关,

 

转载于:https://www.cnblogs.com/zyh2017/p/5001982.html

相关资源:ROS2官网教程学习笔记使用rqt_console篇

最新回复(0)