标签:overwrite 删除 ODB int val step nal 最小值 数据库
基础知识
# mysql
show databases;
create database my_db;
show engines; # 显示数据库支持的引擎
show variables like ‘hava%‘; # 显示变量中含有have开头的任意变量 ,% 代表的任意字符,
show variables like ‘storage_engine%‘
# 数据库的搜索引擎性能不大一样,默认的innodb
从小到大
tinyint 1字节
small int 2字节
mediumint 3字节
int/integer 4字节
bigint 8字节
float 4字节
double 8字节
dec(M, D)/decimal(M, D) # (M+2)字节,D表示精确到小数点后D位
bit(M) 1-8字节, M的取值范围就是1-8, 最小值是bit(1),最大值bit(64)
date 4字节# 一般表示年月日用这个
datetime8字节# 年月日时分秒 用这个
timestamp4字节# 如果要经常插入或者更新日期为当前系统时间,一般用这个
time 3字节# 表示时分秒用这个
year1字节# 表示年份用这个
——————————————————————————————char系列
char(M)M字节,M为0~255之间的整数
varchar(M)M字节,M为0~65535之间的整数
——————————————————————————————text系列
tinytext0~255
text0~65535
mediumtext
longtext
——————————————————————————————binary系列,binary可以存储二进制文件,图片音乐视频
binary(M)M字节
varbinary(M)M字节数据长度经常变换可以选择varbinary
——————————————————————————————blob系列,可以存储二进制数据,比如图片音乐视频,存储大小更大
tinyblob 0~255字节
blob0~2^16字节
mediumblob0~2^24字节
longblob0~2^32字节
表的属性,列(columns),索引(index),触发器(triggers)
创建一个表
create table tbl_blog(
blog_id int not null,
blog_title varchar(30) not null,
blog_author varchar(30) not null
);
create table tbl_blog(
blog_id int not null,
blog_title varchar(30) not null,
blog_author varchar(30) not null
);
# 删除表
drop table tbl_blog;
# 修改表名
alter table tbl_blog rename new_tbl_blog;
# 在表的最后一列,增加字段
alter table tbl_blog add post_main mediumtext
# 在表的第一列,增加字段
alter table tbl_blog add post_main mediumtext first;
# 在表指定字段后,增加字段
alter table tbl_blog add post_main mediumtext after blog_id ;
# 删除字段
alter table tbl_blog drop post_main;
#修改字段属性
alter table tbl_blog modify post_main longtext;
# 修改字段顺序
alter table tbl_blog modify blog_title varchar(30) not null first;
alter table tbl_blog modify blog_title varchar(30) not null after blog_title;
# 修改字段名
alter table tbl_blog change post_main new_post_main longtext;
# 修改字段名和属性
alter table tbl_blog change post_main new_post_main text;
desc tbl_blog; # 等价 describe tbl_blog;
show create table tbl_blog; # 显示表的创建语法;
create table tbl_student1(
student_score int default 0
);
# 单字段主键
create table tbl_student1(
student_score int default 0,
student_num int,
constraint pk_stu_num primary key(student_num)
);
# 多字段主键
create table tbl_student1(
student_score int default 0,
student_num int,
personal_id int,
constraint pk_self primary key(student_num, personal_id)
);
create table tbl_student1(
student_score int default 0,
student_num int,
constraint uk_stu_num unique(student_num)
);
mysql> create table tbl_class(
-> class_num int unique,
-> class_name varchar(30) unique
-> );
mysql> create table tbl_student(
-> students_num int primary key auto_increment,
-> student_name varchar(30) not null,
-> student_class varchar(20) unique
-> );
alter table tbl_student add CONSTRAINT fk_class foreign key(student_class) references tbl_class(class_name);
create table tbl_student1(
student_score int not null
);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
mysql> create table tbl_student(
-> students_num int primary key auto_increment,
-> student_name varchar(30) not null,
-> student_class varchar(20) unique
-> );
创建索引可以提高从表中检索数据的速度
索引是创建在数据库表对象上的,由表中的一个字段或者多个字段生成的键组成,这些键存储在数据结构(B-tree或者hash表)中
通过mysql可以快速有效的查找与键值相关联的字段,
根据索引的存储类型,可以将索引分为B型树索引(BTREE),和哈希索引(hash)
# InnoDB和MyISAM支持BTREE索引,MEMORY存储引擎支持HASH索引,默认索引为BTREE索引
数据库对象索引的出现,能够带来的好处
1、提高数据检索速度
2、可以保证字段唯一性,从而实现数据的完整性
缺点:
过多索引会占据许多的磁盘空间
MySQL支持6种索引,普通索引、唯一索引、全文索引、单列索引、多列索引、空间索引
以下情况适合创建索引
1、经常被查询的字段,即在where子句中出现的字段
2、存在分组的字段,即在group by子句中出现的字段
3、存在依赖关系的子表和父表之间的联合查询,即主键或外键字段
4、设置唯一完整性约束的字段
以下情况不适合创建索引
1、很少被查询到的字段
2、有许多重复值的字段
1、建表是创建普通索引
mysql> create table tbl_school(
-> sc_name varchar(30) unique,
-> sc_num int primary key auto_increment,
-> sc_student_sum int not null,
-> index index_sc_num(sc_num)
-> );
INSERT INTO tbl_school
(sc_name, sc_student_sum)
VALUES(‘HUAYING‘, 1000);
explain select * from tbl_school where sc_num=1 \G
2、在已存在的表上创建普通索引
mysql> create index index_stu_num on tbl_student(students_num);
3、通过alter语句创建普通索引
mysql> alter table tbl_class add index index_c_num(class_num);
1、建表时创建唯一索引
2、建表后创建唯一索引
3、通过aler创建唯一索引
explain select * from tbl_school where sc_num=1 \G
drop index index_name on tbl_name;
标签:overwrite 删除 ODB int val step nal 最小值 数据库
原文地址:https://www.cnblogs.com/dadaizi/p/13060447.html