初学MySQl简单sql语句(1)

目录

SQL语句介绍:

DDL创建数据库:

char和varchar比较

数值类型

数据库存储引擎

数据库存储引擎——InnoDB

数据库存储引擎——MyISAM

数据库存储引擎-MyISAM 和InnoDB区别

修改和删除数据库表

数据库设计三大范式

一、什么是范式

二、约束作用

三、三范式

约束?

作用?

约束种类?

非空约束(not null)

唯一性约束(unique)

主键约束(primary key)PK

外键约束(foreign key)FK

约束的添加:

添加非空约束

添加唯一约束

添加主键约束

添加外键约束

约束的删除:

删除not null约束

删除unique约束

删除primary key约束

删除foreign key约束


SQL语句介绍:

SQL语句,即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。

名词

解释

命令

DDL(数据定义语言)

定义和管理数据对象,如数据库,数据表等

CREATE、DROP、ALTER

DML(数据操作语言)

用于操作数据库对象中所包含的数据

INSERT、UPDATE、DELETE

DQL(数据查询语言)

用于查询数据库数据

SELECT

DCL(数据控制语言)

用来管理数据库的语言,包括管理权

限及数据更改

GRANT、COMMIT、ROLLBACK

DDL创建数据库:

语法:

CREATE TABLE[IF NOT EXISTS] `表名`(

`字段名1` 字段类型[属性][索引][注释],

`字段名2` 字段类型[属性][索引][注释],

......

`字段名n` 字段类型[属性][索引][注释],

)[表类型][表字符集]

其中‘[]’包含的内容可以省略 

类型

说明

取值范围

存储需求

char[(M)]

固定长字符串,检索快但费空

间, 0 <= M <= 255

M字符

char[(M)]

varchar[(M)]

可变字符串 0 <= M <= 65535

变长度

varchar[(M)]

tinytext

微型文本串

16777215长度+3个字节

tinytext

text

文本串(4个G左右大小)

4294967295长度+4个字节

text

char和varchar比较

数值类型

类型

说明

取值范围

存储需求

tinyint【taɪni】

非常小的数据

有符值:-2 ^7 ~ 2^7-1,无符号值:

0 ~ 28-1

1字节

smallint

较小的数据

有符值:-2 15 ~ 215 -1 ,无符号值: 0 ~ 216 -1

2字节

mediumint

【miːdiəm】

中等大小的数据

有符值:-2 23 ~ 223 -1 ,无符号值: 0 ~ 224 -1

 3字节

int

标准整数

有符值:-2^31 ~ 2^31-1,无符号值:0 ~ 2^32-1

4字节

bigint

较大的整数

有符值:-2^63 ~2^63-1,无符号值:0 ~2^64-1

8字节

float

单精度浮点数

±1.1754351e -38

4字节

double

双精度浮点数

+-2.2250738585072014e -308

8字节

Decimal(钱) 

【desɪml】

字符串形式的浮点数

decimal(m, d)

m个字节

数据库存储引擎

查看当前数据库支持的存储引擎:show engines;

数据库存储引擎——InnoDB

MySQL从3.23.34a开始就包含InnoDB存储引擎。大于等于5.5之后,默认采用InnoDB引擎。

InnoDB是MysQL的默认事务型引擎,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回滚(Rollback)。

除了增加和查询外,还需要更新、删除操作,那么,应优先选择InnoDB存储引擎。

除非有非常特别的原因需要使用其他的存储引擎,否则应该优先考虑InnoDB引擎。

数据文件结构:

表名.frm存储表结构(MySQL8.0时,合并在表名.ibd中)。

表名.ibd存储数据和索引

InnoDB是为处理巨大数据量的最大性能设计。

在以前的版本中,字典数据以元数据文件、非事务表等来存储。现在这些元数据文件被删除了。比如: .frm,.par , .trn ,.isl, .db.opt等都在MySQL8.0中不存在了。

对比MylISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保存数据和索引。

MyISAM只缓存索引,不缓存真实数据;InnoDB不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响。

数据库存储引擎——MyISAM

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务、行级锁、外键,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。

5.5之前默认的存储引擎

优势是访问的速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用

针对数据统计有额外的常数存储。故而count(*)的查询效率很高

数据文件结构:

表名.frm存储表结构。

表名.MYD存储数据(MYData)。

表名.MYI存储索引 (MYIndex)

应用场景:只读应用或者以读为主的业务

数据库存储引擎-MyISAM 和InnoDB区别

对比项

MyISAM

InnoDB

外键

不支持

支持

事务

不支持

支持

行表锁

表锁,即使操作一条记录也会锁住整 个表,不适合高并发操作

行锁,操作时只锁某一行,不对其它行有影响,适合高并发操作

缓存

只缓存索引,不缓存真实数据

不仅缓存索引还要缓存真实数据,对内存 要求较高,而且内存大小对性能有决定性的影响

默认安装

Y

Y

默认使用

N

Y

关注点

性能:节省资源、消耗少、简单业务

事务:并发写,事务、更大资源

修改和删除数据库表

修改表名:AITER TABLE 旧表名 RENAME AS 新表名

修改字段:ALTER TABLE 表名 MODIFY 字段名 列类型[属性] ALTER TABLE 表名 CHANGE 旧段名 列类型[属性]

删除字段:ALTER TABLE 表名 DROP 字段名

添加字段:ALTER TABLE 表名 ADD 字段名 列类型[属性]

删除表:DROP TABLE [IF EXISTS] 表名

数据库设计三大范式
一、什么是范式

为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就叫做范式。

二、约束作用

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。

三、三范式

第一范式:确保每列保持原子性

第二范式:确保表中的每列都和主键相关

第三范式:确保每列都和主键列直接相关,而不是间接相关

第一范式(1NF)确保每列保持原子性

第二范式(2NF)属性完全依赖于主键

第三范式(3NF)属性不依赖于其他非主属性 属性直接依赖于主键

注:数据不能存在传递关系,即每个属性都跟主键右直接关系而不是间接关系

约束?

实际上就是表中数据的限制条件

作用?

表在设计时加入约束就是为了保证表中的记录完整和有效

约束种类?
非空约束(not null)

用not null约束的字段不能为null值,必须给定具体的数据

create table test1(

name varchar(20) not null,  

age int

);

Insert into test1(age) values(16) //这里只给age字段名存值,并没有给不

//为空的name存值,mysql会报错

唯一性约束(unique)

unique约束的字段,具有唯一性,不可重复,但可以为null

     表级约束:

  1. 在建表时,单独用unique(字段)来设置字段的约束
  2. 使用表级约束,给多个字段联合约束
  3. 表级约束可以给约束起名字

create table test1(

id int(10),

name varchar(20) not null,  

email varchar(128),

unique(name,email)

);

主键约束(primary key)PK

主键(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录

表中的某个字段添加主键约束后,该字段为主键字段,主键字段中出现的每一个数据都称为主键值

复合主键(表级定义)

create table test1(

id int(10),

name varchar(20) not null,  

email varchar(128),

primary key(id,name)

);

外键约束(foreign key)FK

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

若有两个表A、B,id是A的主键,而B中也有id字段,则id就是表B的外键

A为基本表或父标,主表,B为信息表,子表,副表

创建外键:

foreign key(表的字段名) references 父表表名(父表的字段名)

按外键约束的字段数量分类

单一外键:给一个字段添加外键约束

复合外键:给多个字段联合添加一个外键约束

注意:

一张表可以有多个外键字段(与主键不同)

外键值可以为null

外键字段去引用一张表的某个字段的时候,被引用的字段必须具有unique约束

有了外键引用之后,表分为父表和子表

班级表:父表

学生表:子表

创建先创建父表

删除先删除子表数据

插入先插入父表数据

检查约束(目前MySQL不支持,Oracle支持)

约束的添加:

添加非空约束

alter table 表名 modify test_student char(10) not null;

添加唯一约束

alter table 表名 add unique(表字段名,字段,字段,字段);

添加主键约束

alter table 表名 add primary key(表的字段名,字段,字段);

添加外键约束

alter table 表名 add constraint N1 foreign key (表字段名) references 父表(父表字段名);

约束的删除:

删除not null约束

alter table 表名 modify 列名 类型;

删除unique约束

alter table 表名 drop index 唯一约束名;

删除primary key约束

alter table 表名 drop primary key;

删除foreign key约束

alter table 表名 drop foreign key 外键名;

  • 21
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值