MySQL:关系型数据库管理系统_基础_SQL介绍_约束

一、数据库与MySQL基础知识

1.数据库

        数据库本质就是文件管理

        作用:用于建立,使用和维护数据库,对数据库进行统一的管理。

2.数据库分类

        数据库分为关系型数据库和非关系型数据库:

关系型数据库:

        关系型数据库是将复杂的数据结构用较为简单的二维表来表示,由二维表及其之间的联系所组成的一个数据组。

优点:

易于维护(格式一致)

使用方便(SQL语言通用,关系型数据库都可以使用SQL进行操作)

复杂操作(能用于一表和多个表之间复杂的查询)

缺点:

读写性能较差

表结构固定,灵活度不高

高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

非关系型数据库:

        非关系型数据库也称之为NoSQ(Not Only SQL)L数据库,是一种数据结构化存储方法的集合,可以是文档或者键值对等。

优点:

1. 格式灵活:存储数据的格式可以是key, value形式, 文档形式, 图片形式等等.

2. 使用灵活,应用场景广泛,而关系型数据库则只支持基础的类型

3. 速度快:使用内存存储数据,而关系型数据库只能使用硬盘

4. 高扩展性

缺点:

1. 不提供sql支持,学习和使用成本较高

2. 数据结构相对复杂,复杂查询方面稍欠

3. 只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适

4. 不适合持久存储海量数据

 3.MySQL常见数据类型
 1.整数类型

整数类型

大小

表数范围(有符号)

表数范围(无符号)

作用

TINYINT

1字节

(-128,127)

(0,255)

最小整数值

SMALLINT

2字节

(-32768,32767)

(0,65535)

小整数值

MEDIUMINT

3字节

(-8388608,8388607)

(0,16777215)

中整数值

INT

4字节

(-214748364,2147483647)

(0,4294967295)

大整数值

BIGINT

8字节

(-9233372036854775808,9223372036854775807)

(0,18446744073709551615)

极大整数值

int(长度限制)

长度限制可指定也可不指定

指定了长度限制,超过指定的限制,自动扩充

2.浮点数类型

浮点数类型

大小

作用

FLOAT(m,d)

4字节

单精度浮点数值, m总个数,d小数位

DOUBLE(m,d)

8字节

双精度浮点数值, m总个数,d小数位

浮点类型宽度不会自动扩充,需要指定长度

double(m,n):

长度限制需要指定,指定了长度限制,不可以超过指定的限制

m整体的长度,n小数的长度

 3.字符串类型

字符串类型

大小

描述

CHAR(M)

0~255字符

允许长度0~M个字符的定长字符串

VARCHAR(M)

0~65535字符

允许长度0~M个字符的变长字符串

TINYTEXT

0~255字节

短文本数据

TEXT

0~65535字节

长文本数据

MEDIUMTEXT

0~16777215字节

中等长度文本数据

LONGTEXT

0~4294967295字节

极大文本数据

BLOB(M)

最大65K

以二进制存储图片,文件等数据 

注意:char长度固定,varchar长度是可变的

3.字符类型:

char(长度限制):

长度限制需要指定,指定了长度限制,不可以超过指定的限制,直接分配指定的空间

varchar(长度限制):

长度限制需要指定,制定了长度限制,不可以超过指定的限制,根据内容动态分配空间

 4.日期和时间类型

类型

格式

取值范围

TIME

‘HH:MM:SS’

(‘-838:59:59’, ‘838:59:59’)

DATE

‘YYYY-MM-DD’

(‘1000-01-01’, ‘9999-12-31’)

YEAR

YYYY

(1901, 2155), 0000

DATETIME

‘YYYY-MM-DD HH:MM:SS’

(‘1000-01-01 00:00:00’, ‘9999-12-31 23:59:59’)

TIMESTAMP

‘YYYY-MM-DD HH:MM:SS’

(‘1970-01-01 00:00:01’ UTC, ‘2038-01-19 03:14:07’ UTC)

date:日期

datetime:日期+时间

timestamp:日期+时间

 4.数据库管理系统、数据库和数据库表之间的关系

 MySQL中管理着很多的数据库,在实际开发中,一个数据库一般对应一个应用,每个数据库中又保存着很多表,每张表对应着不同的业务,每张表中保存着很多条数据。

 二、SQL语言

1.SQL语言介绍

        SQL(Structured Query Language)是结构化查询语言的简称,它是一种数据库查询和程序设计语言,同时也是目前使用最广泛的关系型数据库操作语言。在数据库管理系统中,使用SQL语言来实现数据的存取、更新等功能。

2.SQL作用

        

1.是所有关系型数据库的统一操作规范,不同关系型数据库都支持SQL

2.所有的关系型数据库都可以使用SQL

3.不同数据库之间的SQL有一些区别(类似于普通话和方言)

 3.SQL语法规范

1.SQL语句多以单行或多行书写,以;结尾

2.MySQL中使用SQL不区分大小写,一般数据库名,表明,列名小写

3.注释

注释语法

说明

-- 空格

单行注释

/**/

多行注释

#

MySQL特有的单行注释

4.SQL分类

 

数据查询语言(Data Query Language,DQL):

        DQL主要用于数据的查询,其基本结构是使用SELECT子句,FROM子句和WHERE子句的组合来查询一条或多条数据。

Select

From

Where

Order by

Having

数据操作语言(Data Manipulation Language,DML):

        DML主要用于对数据进行 增加、修改和删除操作。

Insert:增加数据

Update:修改数据

Delete:删除数据

 

数据定义语言(Data Definition Language,DDL):

        DDL主要用针对是数据库对象(数据库、表、索引、视图)进行创建,修改和删除操作。

Create:创建

Alter:修改alter

Drop:删除drop

Show:查看

数据控制语言(Data Control Language,DCL):

                DCL用来授予或回访数据库的权限。

Grant:授予用户权限

Revoke:收回授予的权限

 

事物控制语言(Transaction Control  Language,TCL):

        TCL用于数据库的事物管理

Start  transaction:开启事务

COMMIT:提交事务

ROLLBACK:滚回事务

三、表的约束

1. 约束的作用

        可以对表中的数据做一些限制, 从而保证数据的正确性, 有效性, 和完整性。

违反约束的不正确数据是无法插入到表中的。

2. 约束的分类
约束名关键字作用
主键primary key不可重复, 不能为空,即唯一 + 非空
唯一unique不可重复
非空not null不能为空
默认值default赋予默认值
检查(Mysql8提供)check取值范围
外键foreign key表与表之间的关系
3.主键约束 
 添加主键约束
-- 语法格式:
字段名 字段类型 primary key

-- 案例1:创建一个带有主键的emp表 字段 eid int  ename varchar(10)  esex char(1)
-- 方式一
create table emp(
	eid int primary key,  -- 设置主键 非空唯一
	ename varchar(10),
	sex char(1)
);
-- 方式二
drop table emp; -- 删除emp表
create table emp(
	eid int,
	ename varchar(10),
	sex char(1),
	primary key(eid)  -- 指定主键为eid字段
);
-- 方式三
drop table emp; -- 删除emp表
create table emp(
	eid int primary key,
	ename varchar(10),
	sex char(1)
);
-- 创建表时不指定主键, 然后通过DDL语句进行设置
alter table emp add primary key(eid);
 什么字段适合作主键:
  • 通常针对业务去设计主键, 每张表都设计一个主键id, 并且只能有一个主键.

  • 主键是给数据库和程序使用, 所以主键没有意义没有关系, 只要能保证不重复就好, 比如身份证就可以作为主键.

删除主键约束
-- 使用DDL 删除表中的主键约束
alter table emp drop primary key;

-- 删除唯一约束(了解)
-- 添加了唯一约束为 eid int not null, 通过设置字段属性删除唯一约束 
alter table emp modify eid int;
主键自增
-- 语法格式: 
关键字 auto_increment	 表示自增长(字段类型必须为整数类型)
-- 案例:为emp表eid字段添加主键约束, 并设置为自增
drop table emp;
create table emp(
	eid int primary key auto_increment,
	ename varchar(10),
	sex char(1)
);
4.非空约束
-- 语法格式: 字段名 字段类型 not null
-- 案例:创建emp表,eid为主键约束,自增,ename为非空约束
-- 删除存在的emp表 
drop table emp;
create table emp(
	eid int primary key auto_increment,
	ename varchar(10) not null,
	sex char(1)
);
 5.唯一约束
-- 语法格式: 
字段名 字段类型 unique
-- 案例:emp表 eid 主键约束,自增  ename 非空约束 esex唯一约束
drop table emp; -- 删除存在的emp表 
create table emp(
	eid int primary key auto_increment,
	ename varchar(10) not null,
	sex char(1) unique
);
6.默认值约束
-- 语法格式: 字段名 字段类型 default '值'
-- 案例:emp表 eid 主键约束,自增  ename 非空约束 esex默认值'男'
-- 删除存在的emp表 
drop table emp;
create table emp(
	eid int primary key auto_increment,
	ename varchar(10) not null,
	sex char(1) default '男'
);
7.检查约束
字段名 字段类型 check(字段='值' or 字段='值')
字段名 字段类型 check(字段>n or 字段<m)
字段名 字段类型 check(字段>n and 字段<m)

create table emp(
	eid int primary key auto_increment,
	ename varchar(10) not null,
	esex char(1) default '男' check(esex='男' or esex='女')
);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值