MySQL 基础命令
一.了解数据库
1、了解数据库对象
1.表:
用于以有组织方式存储数据。以行和列的格式包含数据。
2.索引:
是内部表结构,MySQL 用它基于一列或多列的值来提供对表中各行的快速访问。
3.视图:
是虚拟表,提供对来自一个或多个相关表的列的子集进行访问。
4.存储过程:
是 SQL 和过程语句的命名块,存储在服务器中并作为一个单元执行
5.函数:
是 SQL 和过程语句的命名块,存储在一个名称下并返回值
6.触发器:
是与表相关联的命名对象,由 SQL 语句块组成
2、了解数据库类型
1.用户定义的数据库:
充当公司需要维护的所有数据的容器。
2.系统数据库:
包含一组特定的表,用于存储用于其他数据库的服务器配置、用户信息和模板。
存在于 MySQL 服务器的每个实例中,包含查询数据库所需的临时存储区域。
3.MySQL 服务器包含以下系统数据库:
1)information_schema
2)mysql
3)performance_schema
通过监视 MySQL 服务器的事件检查服务器执行情况。
存储引擎收集与特定事件相关的数据。
数据库包含各种表,其中存储所收集事件的相关信息
二.创建用户自定义的数据库并使用(Workbench)
1、创建用户自定义的数据库
- 语法:
CREATE DATABASE [IF NOT EXISTS] <database_name>
[[DEFAULT] CHARACTER SET <character_set_name>]
[[DEFAULT] COLLATE <collation_name>];
- 实例:
如果不存在db1数据库创建一个数据库名为db1
create database if not exists db1;
运行之后刷新就可以看到数据库创建成功了
2、访问使用自定义的数据库
- 语法:
USE <database_name>;
- 实例:
使用刚创建的db1数据库
USE db1;
可以看到选择之后数据库名字那里变成了加粗字体
3、一列表形式查看所有数据库
- 语法&实例:
SHOW DATABASES;
4、修改数据库(后续详细介绍)
- 语法:
ALTER DATABASE <database_name>
[[DEFAULT] CHARACTER SET <character_set_name>]
[[DEFAULT] COLLATE <collation_name>];
5、删除数据库
- 语法:
DROP DATABASE <database_name>;
实例:
删除名为db1的数据库
DROP DATABASE db1;
三.创建和管理表格
1、 什么是表格
表是用于存储数据的数据库对象。
表中的数据是以行和列的格式排列的。
表中的每一行都表示一条唯一的记录,每一列都表示记录的一个属性。
与列关联的数据类型指定该列可以接受的数据类型。
2、了解数据类型
1、数据类型:
表示表中的列可以包含的数据类型。
可以分成以下几类:数值 字符串 日期 其他
2、数值数据类型:
用于存储数字。
可以进一步分成以下几类:整数 小数 位
3、整数数据类型:
用于存储整数值。
接受正值和负值。
UNSIGNED 关键字用于数据类型时,指定列只能接受正值。
UNSIGNED 关键字用于数据类型时,指定列可接受正值和负值。
- 下图为mysql支持的整数数据类型
4、小数数据类型:
用于存储带有整数部分和/或小数部分的值。
因此,使用其中一种小数数据类型声明的列可以接受不带小数部分的值(例如 39)、不带整数部分的值(例如 .39)和包含两个部分的值(例如 39.5)。
使用其中一种浮点类型声明的列可以接受小数点后不定量位数的值。
- 下图为mysql支持的小数数据类型
5、Bit 数据类型:
可用于可在值中接受一个或多个位的列。
只能接受一位值,例如 0 或者 1。
可以具有以下声明以接受多位:
BIT(M)
6、字符串:
为存储字符或二进制值,MySQL 支持各种字符串数据类型。
- 下表列出了 MySQL 支持的字符串数据类型
7、日期:
日期数据类型用于存储日期和/或时间值。 - 下表列出了 MySQL 支持的日期数据类型
3、创建表格,查看表格
1、创建表格
- 语法:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS]
[ <table_name> (<table_element> [{, <table_element>}...])
[ENGINE = { MEMORY | INNODB | MERGE | MRG_MYISAM | MYISAM}];
- 实例:
在db1数据库中创建表格emp,列名分别为id,name,age,address这四个
create table emp (id int,name varchar(20),age int,address varchar(30));
刷新后可以看到数据库中已经出现了emp表格
2、查看表格
select * from emp;
运行后可以看到表格结构了
四.应用约束
1、作用
约束定义为确保数据完整性必须遵循的规则。
约束可以在创建表的过程中创建,也可以稍后再添加。
在创建表后添加约束时,它将检查现有数据以确定其是否违背该约束。
如果现有数据违背了将添加的约束,那么将不会向指定列施加该约束。
2、约束的类型
MySQL 支持可对表中的列定义的以下约束:
1、主键约束
2、唯一约束
3、外键约束
3、主键约束
对一列或一组列定义,这些列的值唯一地标识表中的所有行。
这些列称为主键列。
主键列不能包含 NULL 值,因为它用于唯一地标识表中的行。
- 语法:
CREATE TABLE table_name
(
<column definition 1>,
<column definition 2>,
............
<constraint_definition>);
- 实例:
新建一个表格名为emp1,列名分别为id,name,age,address这四个,将id设置为主键
create table emp1 (id int,name varchar(20),age int,address varchar(30),
primary key(id));
可以通过这个看到emp1的id已经是主键了,有一个钥匙标记
4、唯一约束
用于强制非主键列的唯一性。
与主键约束类似,但是它在唯一约束所定义的列中允许 NULL 值。
可以在表上创建多个唯一约束。
- 语法:
CREATE TABLE table_name
(
<column_definition_1>,
<column_definition_2>,
.........
<constraint_definition>
)
- 实例:
设计表emp2,列和之前的一样加一列电话号码,因为我们知道电话phone是唯一的,设计id为主键,设计电话phone唯一
create table emp2
(id int,name varchar(20),age int,address varchar(30),phone int,
primary key(id),Constraint Unique_Phone UNIQUE(phone));
- 注:Constraint Unique_Phone UNIQUE(phone) 就是设置phone唯一的代码,Constraint是约束的固定格式,Unique_Phone是设置的约束的名字,随便取,UNIQUE就是唯一约束的关键词,(phone)就代表将phone设置为唯一
5、外键约束(后续详细介绍)
消除当一个表中的数据依赖于另一个表中的数据时两个表中的不一致。
表中的外键总是引用其他表中的主键列。
包含引用为其他表中外键的主键的表称为主表或被引用表。
包含引用其他表中主键的外键的表称为事务表或引用表。