mysql基础

Posted dai_213

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql基础相关的知识,希望对你有一定的参考价值。

基础知识

一、数据库的存储引擎

1、数据库存储引擎类型


 
 
 
 
 
 
 
 
 
 
 
1
# mysql 
2
show databases;
3
create database my_db;
4
show engines;  # 显示数据库支持的引擎
5
show variables like ‘hava%‘;  # 显示变量中含有have开头的任意变量 ,% 代表的任意字符,
6
show variables like ‘storage_engine%‘ 
7

8
# 数据库的搜索引擎性能不大一样,默认的innodb
 
 
 

2、数据类型

2.1 整形数据类型

 
 
 
 
 
 
 
 
 
 
 
1
从小到大
2
tinyint 1字节
3
small int 2字节
4
mediumint 3字节
5
int/integer 4字节
6
bigint  8字节
 
 
2.2 浮点数、定点数、位类型

 
 
 
 
 
 
 
 
 
 
 
1
float  4字节
2
double 8字节
3
dec(M, D)/decimal(M, D) #  (M+2)字节,D表示精确到小数点后D位
4
bit(M) 1-8字节, M的取值范围就是1-8, 最小值是bit(1),最大值bit(64)
 
 
2.3 日期和时间类型

 
 
 
 
 
 
 
 
 
 
 
1
date 4字节# 一般表示年月日用这个
2
datetime8字节# 年月日时分秒 用这个
3
timestamp4字节# 如果要经常插入或者更新日期为当前系统时间,一般用这个
4
time 3字节# 表示时分秒用这个
5
year1字节# 表示年份用这个
 
 
2.4 字符串类型

 
 
 
 
 
 
 
 
 
 
 
1
——————————————————————————————char系列
2
char(M)M字节,M为0~255之间的整数
3
varchar(M)M字节,M为0~65535之间的整数
4

5
——————————————————————————————text系列
6
tinytext0~255
7
text0~65535
8
mediumtext
9
longtext
10

11
——————————————————————————————binary系列,binary可以存储二进制文件,图片音乐视频
12
binary(M)M字节
13
varbinary(M)M字节数据长度经常变换可以选择varbinary 
14

15
——————————————————————————————blob系列,可以存储二进制数据,比如图片音乐视频,存储大小更大
16
tinyblob    0~255字节
17
blob0~2^16字节
18
mediumblob0~2^24字节
19
longblob0~2^32字节
 
 

二、表的操作

1、表的基础


 
 
 
 
 
 
 
 
 
 
 
1
表的属性,列(columns),索引(index),触发器(triggers)
2
创建一个表
3
create table tbl_blog(
4
    blog_id int not null,
5
    blog_title varchar(30) not null,
6
    blog_author varchar(30) not null
7
    );
 
 

2、表的增、删、改、查

2.1 增

 
 
 
 
 
 
 
 
 
 
 
1
create table tbl_blog(
2
    blog_id int not null,
3
    blog_title varchar(30) not null,
4
    blog_author varchar(30) not null
5
    );
 
 
2.2 删

 
 
 
 
 
 
 
 
 
 
 
1
# 删除表
2
drop table tbl_blog;
 
 
2.3 改

 
 
 
 
 
 
 
 
 
 
 
1
# 修改表名
2
alter table tbl_blog rename new_tbl_blog;
3

4
# 在表的最后一列,增加字段
5
alter table tbl_blog add post_main mediumtext 
6

7
# 在表的第一列,增加字段
8
alter table tbl_blog add post_main mediumtext first;
9

10
# 在表指定字段后,增加字段
11
alter table tbl_blog add post_main mediumtext after blog_id ;
12

13
# 删除字段
14
alter table tbl_blog drop post_main;
15

16
#修改字段属性
17
alter table tbl_blog modify post_main longtext;
18
# 修改字段顺序
19
alter table tbl_blog modify  blog_title varchar(30) not null first;
20
alter table tbl_blog modify  blog_title varchar(30) not null after blog_title;
21

22
# 修改字段名
23
alter table tbl_blog change post_main new_post_main longtext;
24
# 修改字段名和属性
25
alter table tbl_blog change post_main new_post_main text;
26

 
 
2.4 查

 
 
 
 
 
 
 
 
 
 
 
1
desc  tbl_blog; # 等价 describe tbl_blog;
2
show create table tbl_blog; # 显示表的创建语法;
 
 

3、操作表的约束

有约束的时候,最后填一下约束名constraint name, 给约束起个名而已,如果不写约束名也可以,系统会自动帮你生产一个,
但删除约束时就挺麻烦的,要查系统表得到自动分配的那个约束名才能删除.
 
3.1 default

 
 
 
 
 
 
 
 
 
 
 
1
create table tbl_student1(
2
    student_score int  default 0
3
    );
 
 
3.2 primary key

 
 
 
 
 
 
 
 
 
 
 
1
# 单字段主键
2
create table tbl_student1(
3
    student_score int  default 0,
4
    student_num int,
5
    constraint pk_stu_num primary key(student_num)
6
    );
7

8
# 多字段主键
9
create table tbl_student1(
10
    student_score int  default 0,
11
    student_num int,
12
    personal_id int,
13
    constraint pk_self primary key(student_num, personal_id)
14
    );
 
 
3.3 unique

 
 
 
 
 
 
 
 
 
 
 
1
create table tbl_student1(
2
    student_score int  default 0,
3
    student_num int,
4
    constraint uk_stu_num unique(student_num)
5
    );
 
 
3.4 foreign key

 
 
 
 
 
 
 
 
 
 
 
1
mysql> create table tbl_class(
2
    -> class_num int unique,
3
    -> class_name varchar(30) unique
4
    -> );
5

6
mysql> create table tbl_student(
7
    -> students_num int primary key auto_increment,
8
    -> student_name varchar(30) not null,
9
    -> student_class varchar(20) unique
10
    -> );
11

12

13
 alter table tbl_student add CONSTRAINT fk_class foreign key(student_class) references tbl_class(class_name);
 
 
3.5 not null

 
 
 
 
 
 
 
 
 
 
 
1
create table tbl_student1(
2
    student_score int  not null
3
    );
 
 
3.6 auto_increment

 
 
 
 
 
 
 
 
 
 
 
1
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
2

3
mysql> create table tbl_student(
4
    -> students_num int primary key auto_increment,
5
    -> student_name varchar(30) not null,
6
    -> student_class varchar(20) unique
7
    -> );
 
 

三、索引的操作

1、为什么要用索引


 
 
 
 
 
 
 
 
 
 
 
1
创建索引可以提高从表中检索数据的速度
2

3
索引是创建在数据库表对象上的,由表中的一个字段或者多个字段生成的键组成,这些键存储在数据结构(B-tree或者hash表)中
4
通过mysql可以快速有效的查找与键值相关联的字段,
5

6
根据索引的存储类型,可以将索引分为B型树索引(BTREE),和哈希索引(hash)
7

8
# InnoDB和MyISAM支持BTREE索引,MEMORY存储引擎支持HASH索引,默认索引为BTREE索引
9

10
数据库对象索引的出现,能够带来的好处
11
1、提高数据检索速度
12
2、可以保证字段唯一性,从而实现数据的完整性
13
缺点:
14
过多索引会占据许多的磁盘空间
15

16
MySQL支持6种索引,普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引
17

18
以下情况适合创建索引
19
1、经常被查询的字段,即在where子句中出现的字段
20
2、存在分组的字段,即在group by子句中出现的字段
21
3、存在依赖关系的子表和父表之间的联合查询,即主键或外键字段
22
4、设置唯一完整性约束的字段
23

24
以下情况不适合创建索引
25
1、很少被查询到的字段
26
2、有许多重复值的字段
 
 

2、创建索引

2.1 创建普通索引

 
 
 
 
 
 
 
 
 
 
 
1
1、建表是创建普通索引
2
mysql> create table tbl_school(
3
    -> sc_name varchar(30) unique,
4
    -> sc_num int primary key auto_increment,
5
    -> sc_student_sum int not null
6
    -> index index_sc_num(sc_num)
7
    -> );
8

9
INSERT INTO tbl_school
10
(sc_name, sc_student_sum)
11
VALUES(‘HUAYING‘, 1000);
12

13
explain select * from tbl_school where sc_num=1 G
14

15
2、在已存在的表上创建普通索引
16
mysql> create index index_stu_num on tbl_student(students_num);
17

18
3、通过alter语句创建普通索引
19
mysql> alter table tbl_class add index index_c_num(class_num);
 
 
2.2 创建唯一索引

 
 
 
 
 
 
 
 
 
 
 
1
1、建表时创建唯一索引
2
2、建表后创建唯一索引
3
3、通过aler创建唯一索引
 
 

3、查看索引


 
 
 
 
 
 
 
 
 
 
 
1
explain select * from tbl_school where sc_num=1 G
 
 

4、删除索引


 
 
 
 
 
 
 
 
 
 
 
1
drop index index_name on tbl_name;
 
 
 

以上是关于mysql基础的主要内容,如果未能解决你的问题,请参考以下文章

linux中怎么查看mysql数据库版本

从mysql的片段中加载ListView

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用 json rereiver php mysql 在片段中填充列表视图

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段