1、关系数据库基本概念及MySQL基本命令
数据库管理系统:Database Management System,它负责管理数据的存储、安全、一致性、并发、恢复和访问等操作。
数据字典:用于存储DBMS所拥有的每个事务的相关信息,如名字、结构、位置和类型;这种关于数据的数据也称为元数据。
数据库发展历程:网状型数据库–》层次型数据库–》关系数据库–》面向对象数据库
MySQL存储机制:
- MyISAM:MySQL早期默认的存储机制,对事物支持不够好
- InnoDB:提供事务安全的存储机制。InnoDB通过建立行级锁来保证事务完整性,并以Oracle风格的共享锁来处理select语句。
1、查看MySQL中包含多少个数据库
show databases;
2、创建新的数据库
create database 数据库名;
3、删除指定数据库
drop database 数据库名;
4、进入指定数据库
use 数据库名;
5、查询数据库中包含的所有表
show tables;
6、查看指定数据表的表结构
desc 表名;
2、SQL语句基础
- 查询语句:select
- DML(Data Manipulation Language,数据操作语言)语句:insert、update、delete
- DDL(Data Definition Language,数据定义语言)语句:create、alter、drop、truncate(如果使用MySQL的MyISAM存储机制,truncate相当于先删除指定的数据表,然后再重建该数据表。如果使用InnoDB存储机制,在MySQL5.0.3之前,truncate与delete一样;在5.0.3之后,truncate table比delete效率高,但如果该表被外键约束所参照,则依然被映射成delete操作。)
- DCL(Data Control Language,数据控制语言)语句:grant、revoke关键字
- 事务控制语句:commint、rollback、savepoint
DDL(Data Definition Language,数据定义语言)
DDL:操作数据库对象的语句,包括create、alter、drop
数据库对象:table(表)、constraint(约束)、view(视图)、index(索引)、function(函数)、procedure(存储过程)、trigger(触发器)、数据字典
- 通过子查询建表
create table a as select * from test;
2. 修改表结构的语法
增加列定义
alter table 表名 add(字段名 字段类型);
alter table a add(aaa varchar(255) default 'aaa');
修改列定义
alter table 表名 modify 字段名 字段类型;
alter table a modify aaa int;
删除列
alter table 表名 drop 字段名;
alter table a drop aaa;
重命名列
alter table 表名 change 旧字段名 新字段名 新字段类型;
alter table a change aaa bbb int;
重命名表
alter table 旧表名 rename to 新表名;
alter table a rename to b;
- 删除表的语法
drop table 表名;
drop table a;
- truncate表(截断)
删除该表所有数据,但保留表结构
truncate 表名;
truncate aaa;
- 非InnoDB存储机制,truncate比delete速度快
- InnoDB存储机制-MySQL5.0.3之前,truncate与delete一样
- InnoDB存储机制-MySQL5.0.3之后,truncate比delete速度快,但如果该表被外键约束所参照,truncate被映射为delete操作
3、数据库约束
数据库完整性约束
- not null:非空约束,指定某列不能为空
- unique:唯一约束,指定某列或者几列组合不能重复
- primary key:主键,指定该列的值可以唯一的标识该条记录
- foreign key:外键,指定该行记录从属于主表中的一条记录,主要用于保证参照完整性
- check:检查,指定一个布尔表达式,用于指定对应列的值必须满足该表达式
(MySQL不支持check约束)
注:MySQL使用information_schema数据库里的TABLE_CONSTRAINTS表来保存该数据库实例中的所有的约束信息
- not null
alter table 表名 modify 字段名 字段类型 null/not null;
alter table a modify aaa int not null;
- unique
指定列或列组合不出现重复值,但可以出现多个null。数据库中null不等于null
alter table 表名 add 字段名 字段类型 unique;
alter table a add aaa int unique;
primary key
foreign key
foreign key(b_id) references b(b_id)
constraint fk_id foreign key(b_id) references b(b_id)
alter table a add foreign key(b_id) references b(b_id);