MySQL笔记

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` )

其它

查看命令具体执行时间

  1. 查看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)
 ); 
  1. 查看语句执行时间show profiles;可以看到query_id为1
    image.png
  2. 查看详细运行时间show profile for query 1;
    image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。