一.MySQL的核心是存储引擎
查看当前MySQL数据库支持的存储引擎语句:show engines; (结束符:\g \G ; )
查找默认引擎:show variables like '%storage_engine%';
存储引擎:
1)InnoDB:事务型,行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成,数据更新较为频繁。主键要尽可能小,避免全表扫描
2)MyISAM:不需要事务支持,并发相对较低,数据修改相对较少,以读为主,数据一致性要求不是非常高。尽量采用索引,调整读写优先级,尽量顺序操作
3)MEMORY:适用于需要很快的读写速度,对数据的安全性要求较低的场景。尽量不使用太大的表
4)MERGE
5)其他:BLACKHOLE CSV ARCHIVE
二.字符集
查看所有可使用的字符集语句: show character set;
字符集和校对规则是一对多的关系,两个不同的字符集不能有相同的校对规则,每个字符集有一个默认校对规则。
1)UTF-8:满足应用支持语言的要求
2)GBK:只需要支持一般中文,数据量很大
三.基本语句
1)查询当前服务器的字符集: show variables like 'character_set_server';
2) 查看当前服务器校对规则: show variables like 'collation_server';
3)显示当前数据库字符集和校对规则: show variables like 'character_set_database';
show variables like 'collation_database';
4) 显示当前表的字符集和校对规则: show create table 表名;
5)在启动时指定字符集gbk: mysql-character-set-server=gbk;
6) 创建数据库:create database if not exists 数据库名 character set 字符集 collate collation 校对规则;
7)查看数据库详细信息: show create database 数据库名称;
8)修改数据库名称: alter database 数据库名 character set 字符集 collate collation 校对规则;
9)删除数据库: drop database if exists 数据库名;
四.数据类型
1)数值类型:整数类型,浮点数类型和定点数类型
2)日期时间类型:
DATE:4个字节,存储日期,不存储时间,默认格式:‘YYYY-MM-DD’,使用current_date()或now(),插入当年计算机系统的日期
TIME:3个字节,记录时间,默认格式:‘HH:II:SS’
YEAR:1个字节,使用单字节表示年份
DATATIME:8个字节,日期与时间的混合类型,默认格式:‘YYYY-MM-DD HH:II:SS’
TIMESTAMP:默认格式:’YYYYMMDDHHMMSS‘
3)字符串类型:char和varchar类型,text类型,enum类型,set类型
4)复合类型:enum和set
5)二进制类型:binary,varbinary,bit,tinyblob,blob,mediumblob,longblob
6)算数运算符:+ - * /(DIV) %(MOD)
7)比较运算符
8)逻辑运算符: !(NOT) &(AND) || (OR) XOR
9)位运算符: | & ^ << >>
五.数据表的操作
1)创建数据表: (通过例题明白操作,在另一文章 《学习mysql------表》)
create table 表名(
字段名 数据类型 NULL 或者 NOT NULL 默认值 自增属性 主键约束 唯一性约束 注释 外键约束 索引
);
2)查看数据表的结构:
(显示表的名称) show table;
(显示表的结构) describe 表名; 或者 desc 表名; 或者 show create table 表名;
3) 修改数据表:
1.修改数据表名 alter table 旧表名 rename 新表名;
2.修改字段数据类型 alter table 表名 modify 字段名 数据类型
如将student表的sname的长度varchar(20)变为varchar(30)
alter table student modify sname varchar(30)
3.修改字段名 alter table 表名 change 旧字段名 新字段名 新数据类型;
4.添加数据表字段 alter table 表名 add 新字段名 数据类型 first 或者 after;
(first指将新添加的字段设置为表的第一个字段,after指将新添加的字段添加到指定的“已存在字段名”的后面。)
5.删除字段 alter table 表名 drop 字段名:
6.修改字段排序 alter table 表名 modify (要修改位置的字段) (此字段的数据类型)first after字段2;
(after字段2 指将 “要修改位置的字段” 插入到 “字段2”后面)
如将student表中的markid 查到mark字段前
alter table student modify markid int(10) after mark;
7.更改表的存储引擎 alter table 表名 engine=存储引擎名;
8.删除表的外键约束 alter table 表名 drop foreign key 外键约束名;
4)复制数据表: 通过create table 命令复制 create table 表1名 like 表2名;
5)删除数据表: drop table [if exisits] 表1,表2.....;
如删除stu表和SnoNameTable表 drop table if exisits stu,SnoNameTable;
六.MySQL约束控制
1)数据完整性:实体完整性,参照完整性,域完整性,用户自定义完整性
2)字段的约束:
1.主键约束: primary key 字段1,字段2;
2.外键约束: alter table 表名 add foreign key [constraint 外键约束名称] foreign key(外键字段) references 父表(主键字段);
3.非空约束: not null
4.唯一约束: unique
5.默认约束: default
6.自增约束: auto_increment
7.检查约束: check
3)删除约束: alter table 表名 drop 约束 名称;