1. 数据库
1.1 创建数据库
mysql> create database tt character set utf8 [collate 校对集]
解释:
tt=>数据库名称
character=>字符集
utf8=>字符集编码,字符编码是utf8的话校对集默认是utf8_general_ci
不区分大小写
1.2 显示所有数据库
mysql> show databases;
1.3 选择进入到某个数据库下面
mysql> use tt;
1.4 查看当前数据库状态信息
mysql> status;
结果⬇
--------------
mysql Ver 14.14 Distrib 5.7.24, for Win64 (x86_64)
Connection id: 3
Current database: tt
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.7.24 MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: utf8
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 17 min 59 sec
Threads: 1 Questions: 22 Slow queries: 0 Opens: 109 Flush tables: 1 Open tables: 18 Queries per second avg: 0.020
--------------
1.5 修改数据库编码
如果你在创建数据库时数据库字符集没有设置成你想要的
alter database `tt` character set utf8;
注意:
tt
=>这不是单引号,而是键盘tab键上面那个键的符号,在遇到数据库名称或者数据表名称和字段有一个mysql无法识别这是一个名称的时候可以带上`
2. 数据表
2.1 创建数据表
2.1.1 创建表一
mysql> create table tt_t1 (
-> id int(11) auto_increment primary key,
-> name varchar(20),
-> age int default 0,
-> headimg varchar(100) comment '头像',
-> created_date int comment '存放时间戳'
-> ) engine=innodb default charset=utf8;
解释:
auto_increment=>自动增长(可以自定义自动增长间隔)
primary key =>主键
comment '头像'=>字段注释(当然表也可以设置注释)
engine=innodb=>数据表存储引擎
charset=utf8=>字符集(最好在创建数据库就进行设置,这样创建表就可以不写了,主要还是mysql默认使用的字符集不是utf8)
id int(11)与created_date => int类型是有默认长度的可以不设置
2.1.2 创建表二(不同于上一种所有都在设置字段的时候确定,而是现有字段再确定索引)
mysql> create table tt_t2(
-> id int,
-> name char(20),
-> age tinyint,
-> primary key(id),
-> unique(name),
-> index age_key(age)
-> );
解释:
unique(name)=>name字段为唯一索引
index age_key(age)=>age建立普通索引、索引名称为age_key,每个索引都有默认名称为字段名,不过也可以像这样自定义
注意:index age_key(age) 当中的index也可以写成key,二者皆标识索引
2.2 查看所有数据表
mysql> show tables;
2.3 数据表简单结构
mysql> desc tt_t1;
结果⬇
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | 0 | |
| headimg | varchar(100) | YES | | NULL | |
| created_date | int(11) | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
2.4 查看当时创建数据表是如何创建的
mysql>show create table 数据表名 \G
结果↓
*************************** 1. row ***************************
Table: testfour
Create Table: CREATE TABLE `testfour` (
`id` tinyint(4) NOT NULL AUTO_INCREMENT,
`text` char(10) CHARACTER SET latin1 DEFAULT NULL,
`text2` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
2.5 更改数据表的编码格式
alter table <表名> default character set utf8;
2.6 查看表中所有字段的具体信息,可以理解为desc的升级版
mysql> show full columns from testfour;
+-------+-------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-------+-------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
| id | tinyint(4) | NULL | NO | PRI | NULL | auto_increment | select,insert,update,references | |
| text | char(10) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
| text2 | varchar(10) | utf8_general_ci | YES | | NULL | | select,insert,update,references | |
+-------+-------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
2.7 修改整个表所有字段的编码格式,注意是整个表的字段而不是表
有的时候没有注意到字符编码设置错误的问题,表已经创建成功了,这个时候通过2.6看到校对集压根不对
alter table article convert to character set utf8;
2.8 修改数据库字段
mysql>ALTER TABLE <表名> MODIFY COLUMN <字段名> <字段类型> CHARACTER SET <编码格式>;
mysql> alter table testfour change text text char(10) character set utf8;
2.9 添加单个字段
alter table <表名> add <字段名> <字段类型>;
2.10 查看这个表里面所有的索引
SHOW INDEX FROM <表名>
2.11 字段添加索引
主键
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
唯一
ALTER TABLE `table_name` ADD UNIQUE (`column`)
普通
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
全文
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
2.12 删除索引
ALTER TABLE <表名> DROP INDEX <索引名>
或者
DROP INDEX <索引名> ON <表名>
2.13 添加多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
其它
查看命令具体执行时间
- 查看profile是否开启,数据库默认不开启。
show variables like "%pro%"
,variable总共有512个包括mysql服务端信息,配置信息,所以需要like帮助我们筛选。
image.png
profiling | OFF
2.开启profileset profiling = 1;
3.执行语句
CREATE TABLE article (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT(title, body)
);
- 查看语句执行时间
show profiles;
可以看到query_id为1
image.png - 查看详细运行时间
show profile for query 1;
image.png