Mysql基础

2018-08-25  本文已影响6人  沧海一粟谦

1.事务ACID

2.四种隔离级别

3.MySQL存储引擎

存储引擎的选择
不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:

功 能 MYISAM Memory InnoDB Archive
存储限制 256TB RAM 64TB None
支持事物你 No No Yes No
支持全文索引 Yes No No No
支持数索引 Yes Yes Yes No
支持哈希索引 No Yes No No
支持数据缓存 No N/A Yes No
支持外键 No No Yes No

如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能

查看系统支持的存储引擎:show engines;
查看当前默认的存储引擎:show variables like '%storage_engine%';
查看某个表使用的存储引擎:show create table table_name;
修改表引擎:alter table table_name engine=innodb;

关闭MySQL:mysqladmin -u root -p shutdown
连接MySQL:mysql -u root -h localhost -p
创建数据库:create database db_name;
查看: show databases;
选择:use db_name;
查看当前use了哪个库:select database();
创建表: create table user(
id int not null auto_increment comment '主键,自增',
name varchar(40),
PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
查看所有表:show tables;
查看表结构:desc db_name;
修该表所用的字符集:alter table table_name character set utf8;
重命名表:rename table old_table_name to new_table_name;
删除表:drop table table_name;

主键约束 primary key

主键约束 主键列的数据类型不限,但此列必须是唯一并且非空。当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

创建主键约束

create table temp(

    id int primary key,
    name varchar(20)
);

添加主键约束:alter table temp add primary key(id,name);

外键约束 foreign key

外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系

-- 主表

create table temp(

    id int primary key,
    name varchar(20)
);

-- 副表

create table temp2(

    id int,
    name varchar(20),
    classes_id int,
    foreign key(id) references temp(id)
);

多列外键组合,必须用表级别约束语法

-- 主表

create table classes(
    id int,
    name varchar(20),
    number int,
    primary key(name,number)
);

副表

create table student(

    id int auto_increment primary key,
    name varchar(20),
    classes_name varchar(20),
    classes_number int,
    /表级别联合外键/
    foreign key(classes_name, classes_number) references classes(name, number)
);

删除外键约束:alter table student drop foreign key student_id;

增加外键约束:alter table student add foreign key(classes_name, classes_number) references classes(name, number);

唯一约束unique

唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。

创建唯一约束:创建表时设置,表示用户名、密码不能重复

create table temp(

    id int not null ,
    name varchar(20),
    password varchar(10),
    unique(name,password)
);

添加唯一约束:alter table temp add unique (name, password);

修改唯一约束:alter table temp modify name varchar(25) unique;

删除约束:alter table temp drop index name;

非空约束 not null 与 默认值 default

非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。

创建非空约束:创建table表,ID 为非空约束,name 为非空约束 且默认值为abc

create table temp(

    id int not null,
    name varchar(255) not null default 'abc',
    sex char null
);

增加非空约束:alter table temp modify sex varchar(2) not null;

取消非空约束:alter table temp modify sex varchar(2) null;

取消非空约束,增加默认值:alter table temp modify sex varchar(2) default 'abc' null;

存储过程

上一篇下一篇

猜你喜欢

热点阅读