CREATE INDEX <索引的名字> ON tablename(列的列表);
mysql
CREATE INDEX salary index ON IT salary(薪資);
sql
CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
數據庫
CREATE UNIQUE INDEX salary_unique_index ON IT_salary(姓名);
vim
CREATE TABLE tablename ( [..], PRIMARY KEY (列的列表) );
ALTER TABLE tablename ADD PRIMARY KEY (列的列表); //添加表結構的方式建立主鍵索引
緩存
ALTER TABLE IT_ salary ADD PRIMARY KEY (員工ID);
服務器
SHOW INDEX FROM tablename;
SHOW KEYS FROM tablename;
併發
SHOW INDEX FROM IT_salary;
SHOW KEYS FROM IT_salary;
oracle
alter table table_ name engine=引擎;
default-storage-engine=InnDB
create table 表名 (字段) engine= 引擎
Mysql convert table format -user=root -password=密碼
sock=/tmp/mysql.sock-engine=引擎 庫名 表名
mysql> create index index_age on info (age); ##建立普通索引 Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show index from info; ##查看錶中的索引 +-------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | info | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | | info | 1 | index_age | 1 | age | A | 2 | NULL | NULL | | BTREE | | | +-------+------------+-----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 2 rows in set (0.00 sec) mysql> drop index index_age on info; ##刪除表中的索引 Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show index from info; ##查看錶中的索引 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | info | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 1 row in set (0.01 sec) mysql> create unique index unique_name on info (name); ##建立惟一性索引 Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show index from info; ##查看錶中索引 +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | info | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | | info | 0 | unique_name | 1 | name | A | 2 | NULL | NULL | | BTREE | | | +-------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 2 rows in set (0.00 sec) mysql> drop index unique_name on info; ##刪除表中的索引 Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show index from info; ##查看錶中的索引 +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | info | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 1 row in set (0.00 sec) mysql> alter table info add unique index index_name (name); ##使用alter插入表索引 Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show index from info; ##查看錶中的索引 +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | info | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | | info | 0 | index_name | 1 | name | A | 2 | NULL | NULL | | BTREE | | | +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 2 rows in set (0.00 sec)
mysql> select * from info; ##查看錶內容 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | +----+----------+----------+-----+ 2 rows in set (0.00 sec) mysql> show index from info; ##查看錶的索引 +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | info | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | | info | 0 | index_name | 1 | name | A | 2 | NULL | NULL | | BTREE | | | +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 2 rows in set (0.00 sec) mysql> create fulltext index full_addr on info (address); ##以address建立全文索引 Query OK, 0 rows affected, 1 warning (0.07 sec) Records: 0 Duplicates: 0 Warnings: 1 mysql> show index from info; ##查看錶索引 +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | info | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | | info | 0 | index_name | 1 | name | A | 2 | NULL | NULL | | BTREE | | | | info | 1 | full_addr | 1 | address | NULL | 2 | NULL | NULL | YES | FULLTEXT | | | +-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 3 rows in set (0.00 sec) mysql> select * from user; ##查看user表內容 +----+--------+-------+-------+ | id | name | score | hobby | +----+--------+-------+-------+ | 1 | test01 | 88 | 3 | | 2 | stu01 | 99 | 2 | | 3 | wangwu | 77 | 3 | +----+--------+-------+-------+ 3 rows in set (0.00 sec) mysql> create index index_name_score on user (name,score); ##建立name和score的組合索引 Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show index from user; ##查看錶索引 +-------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | user | 0 | PRIMARY | 1 | id | A | 3 | NULL | NULL | | BTREE | | | | user | 1 | index_score | 1 | score | A | 3 | NULL | NULL | | BTREE | | | | user | 1 | index_name_score | 1 | name | A | 3 | NULL | NULL | | BTREE | | | | user | 1 | index_name_score | 2 | score | A | 3 | NULL | NULL | | BTREE | | | +-------+------------+------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 4 rows in set (0.00 sec)
mysql> create table user( ##建立user表 -> id int(4) not null primary key auto_increment, ##設置主鍵和自動增長 -> name varchar(10) not null, -> score decimal not null, -> hobby int(2) not null default '1', ##默認1 -> index index_score (score)); ##設置索引score Query OK, 0 rows affected (0.01 sec) mysql> desc user; ##查看錶結構 +-------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------+------+-----+---------+----------------+ | id | int(4) | NO | PRI | NULL | auto_increment | | name | varchar(10) | NO | | NULL | | | score | decimal(10,0) | NO | MUL | NULL | | | hobby | int(2) | NO | | 1 | | +-------+---------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql> insert into user (name,score,hobby) values ('test01',88,1),('stu01',99,2),('wangwu',77,3); ##向表中插入數據 Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from user; ##查看錶內容 +----+--------+-------+-------+ | id | name | score | hobby | +----+--------+-------+-------+ | 1 | test01 | 88 | 1 | | 2 | stu01 | 99 | 2 | | 3 | wangwu | 77 | 3 | +----+--------+-------+-------+ 3 rows in set (0.00 sec) mysql> create table hob( ##建立hob表 -> id int(2) not null primary key, -> hob_name varchar(10) not null); Query OK, 0 rows affected (0.00 sec) mysql> desc hob; ##查看錶結構 +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(2) | NO | PRI | NULL | | | hob_name | varchar(10) | NO | | NULL | | +----------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> insert into hob (id,hob_name) values (1,'看書'),(2,'運動'),(3,'聽歌'); ##插入表數據 Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from hob; ##查看錶內容 +----+----------+ | id | hob_name | +----+----------+ | 1 | 看書 | | 2 | 運動 | | 3 | 聽歌 | +----+----------+ 3 rows in set (0.00 sec) mysql> select * from user inner join hob on user.hobby=hob.id; ##關聯user和hob兩張表 +----+--------+-------+-------+----+----------+ | id | name | score | hobby | id | hob_name | +----+--------+-------+-------+----+----------+ | 1 | test01 | 88 | 1 | 1 | 看書 | | 2 | stu01 | 99 | 2 | 2 | 運動 | | 3 | wangwu | 77 | 3 | 3 | 聽歌 | +----+--------+-------+-------+----+----------+ 3 rows in set (0.00 sec) mysql> select user.name,hob.hob_name from user inner join hob on user.hobby=hob.id; ##去除其餘內容顯示name和hob_name內容 +--------+----------+ | name | hob_name | +--------+----------+ | test01 | 看書 | | stu01 | 運動 | | wangwu | 聽歌 | +--------+----------+ 3 rows in set (0.00 sec) mysql> select u.name,h.hob_name from user u inner join hob h on u.hobby=h.id; ##設置簡易名稱 +--------+----------+ | name | hob_name | +--------+----------+ | test01 | 看書 | | stu01 | 運動 | | wangwu | 聽歌 | +--------+----------+ 3 rows in set (0.00 sec) mysql> create view view_user as select u.name,h.hob_name from user u inner join hob h on u.hobby ##建立視圖 Query OK, 0 rows affected (0.00 sec) mysql> select * from view_user; ##查看視圖 +--------+----------+ | name | hob_name | +--------+----------+ | test01 | 看書 | | stu01 | 運動 | | wangwu | 聽歌 | +--------+----------+ 3 rows in set (0.00 sec) mysql> update user set hobby=3 where name='test01'; ##修改user表中內容 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from view_user; ##查看視圖,即視圖就是表的一個連接 +--------+----------+ | name | hob_name | +--------+----------+ | stu01 | 運動 | | test01 | 聽歌 | | wangwu | 聽歌 | +--------+----------+ 3 rows in set (0.00 sec)
mysql> select * from info; ##查看錶內容數據 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | +----+----------+----------+-----+ 2 rows in set (0.00 sec) mysql> insert into info (name,address,age) values ('wangwu','hangzhou',30);##插入數據 mysql> begin; ##開啓事務 Query OK, 0 rows affected (0.00 sec) mysql> insert into info (name,address,age) values ('zhaoliu','hangzhou',31); ##插入數據 Query OK, 1 row affected (0.00 sec) mysql> savepoint a; ##設置保存節點a Query OK, 0 rows affected (0.00 sec) mysql> select * from info; ##查看錶數據 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 4 | zhaoliu | hangzhou | 31 | +----+----------+----------+-----+ 4 rows in set (0.00 sec) mysql> insert into info (name,address,age) values ('tianqi','hangzhou',32); ##繼續插入數據 Query OK, 1 row affected (0.00 sec) mysql> savepoint b; ##設置保存節點b Query OK, 0 rows affected (0.00 sec) mysql> insert into info (name,address,age) values ('heiba','hangzhou',32); ##繼續插入數據 Query OK, 1 row affected (0.00 sec) mysql> select * from info; ##查看錶內容 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 4 | zhaoliu | hangzhou | 31 | | 5 | tianqi | hangzhou | 32 | | 6 | heiba | hangzhou | 32 | +----+----------+----------+-----+ 6 rows in set (0.00 sec)
[root@master2 ~]# mysql -uroot -p ##進入數據庫 Enter password: ##輸入密碼 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use school; ##使用數據庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from info; ##查看錶內容,此時並無提交 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | +----+----------+----------+-----+ 3 rows in set (0.00 sec)
mysql> rollback to b; ##利用回滾到保存節點b Query OK, 0 rows affected (0.00 sec) mysql> select * from info; ##查看錶數據 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 4 | zhaoliu | hangzhou | 31 | | 5 | tianqi | hangzhou | 32 | +----+----------+----------+-----+ 5 rows in set (0.00 sec) mysql> rollback to a; ##回滾到保存節點a Query OK, 0 rows affected (0.00 sec) mysql> select * from info; ##查看錶數據 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 4 | zhaoliu | hangzhou | 31 | +----+----------+----------+-----+ 4 rows in set (0.00 sec) mysql> rollback; ##回滾到初始,退出事務狀態 Query OK, 0 rows affected (0.00 sec) mysql> select * from info; ##查看錶數據 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | +----+----------+----------+-----+ 3 rows in set (0.00 sec)
mysql> begin; ##開啓事務 Query OK, 0 rows affected (0.00 sec) mysql> insert into info (name,address,age) values ('heiba','hangzhou',32); ##插入數據 Query OK, 1 row affected (0.00 sec) mysql> commit; ##提交事務 Query OK, 0 rows affected (0.00 sec) mysql> select * from info; ##查看錶數據 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 7 | heiba | hangzhou | 32 | +----+----------+----------+-----+ 4 rows in set (0.00 sec)
mysql> select * from info; ##查看錶數據 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 7 | heiba | hangzhou | 32 | +----+----------+----------+-----+ 4 rows in set (0.00 sec)
mysql> set autocommit=0; ##設置不自動提交事務 Query OK, 0 rows affected (0.00 sec) mysql> update info set address='beijing' where name='heiba'; ##修改表數據 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from info; ##查看錶信息 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 7 | heiba | beijing | 32 | +----+----------+----------+-----+ 4 rows in set (0.00 sec) ##另外一個終端查看 mysql> select * from info; ##查看錶信息,並無修改 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 7 | heiba | hangzhou | 32 | +----+----------+----------+-----+ 4 rows in set (0.00 sec) mysql> set autocommit=1; ##開啓自動提交事務 Query OK, 0 rows affected (0.00 sec) ##另外一個終端查看 mysql> select * from info; ##查看錶數據,此時就已經修改 +----+----------+----------+-----+ | id | name | address | age | +----+----------+----------+-----+ | 1 | zhangsan | beijing | 20 | | 2 | lisi | shanghai | 22 | | 3 | wangwu | hangzhou | 30 | | 7 | heiba | beijing | 32 | +----+----------+----------+-----+ 4 rows in set (0.00 sec)
mysql> show engines; ##查看默認存儲引擎innodb +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | mysql> show create table info; ##查看建立的表的存儲引擎innodb | info | CREATE TABLE "info" ( "id" int(4) NOT NULL AUTO_INCREMENT, "name" varchar(10) NOT NULL, "address" varchar(50) DEFAULT 'nanjing', "age" int(3) NOT NULL, PRIMARY KEY ("id"), UNIQUE KEY "index_name" ("name"), FULLTEXT KEY "full_addr" ("address") ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8
[root@localhost ~]# vim /etc/my.cnf ##修改配置文件 [mysqld] user = mysql basedir = /usr/local/mysql datadir = /usr/local/mysql/data port = 3306 character_set_server=utf8 pid-file = /usr/local/mysql/mysql.pid socket = /usr/local/mysql/mysql.sock server-id = 1 default-storage-engine=Myisam ##添加默認存儲引擎爲Myisam [root@master2 ~]# systemctl restart mysqld.service ##重啓MySQL服務
[root@master2 ~]# mysql -uroot -p ##進入數據庫 Enter password: ##輸入密碼 mysql> use school; ##使用數據庫 Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> create table a ( id int ); ##建立一個a表 Query OK, 0 rows affected (0.00 sec) mysql> show create table a; ##查看錶默認的存儲引擎Myisam +-------+-------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-------------------------------------------------------------------------------------+ | a | CREATE TABLE "a" ( "id" int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | +-------+-------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> alter table a engine=innodb; ##修改表的存儲引擎爲innodb Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> show create table a; ##查看錶的存儲引擎innodb +-------+-------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-------------------------------------------------------------------------------------+ | a | CREATE TABLE "a" ( "id" int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +-------+-------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)