2020-09-04

tech2025-09-17  13

MySQl

数据库:

数据的保存

数据的完整性

数据的读取

数据的安全性

数据库的特点:

1、结构化

2、共享性

3、独立性

4、安全性

数据库的概念(Database,简称DB)

长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据"仓库"。

作用:存放和管理数据

常见的数据库:

关系型数据库:MySQL、oracle、

NoSQL非关系型数据库:redis、mongoDB(数据库越多效率越高)

MySQL数据库的特点:

1、操作便捷

2、小巧、功能齐全

3、免费、开源的数据库

4、可运行与windows或Linux系统

数据库还原:

mysql -u root -p dbname < path/db_name.sql;

数据库的备份:

mysqldump -h localhost -u root -p dbname>path/dbname.sql;

“dbname”表示需要恢复的数据库,

“/path/db_name.sql”表示所恢复数据库的备份文件绝对路径。

SQL的分类:

DDL(数据定义语言)对库和表的操作:create drop alter

DML(数据操纵语言):insert update dalete

DQL(数据查询语言):select

DCL(数据控制语言):对权限,配置的更改。用来管理数据库的语言,包括管理权 限及数据更改

常用:IDENTIFIED grant privileges

数据库结构:

数据库(database)

数据表(table)

一个表没有主键就是非法表

字段(filed)

实体或记录(record)

命令:

#查询所有的库 SHOW DATABASES;

#删除库 DROP DATABASE 库名;

#创建库 CREATE DATABASE 库名;

#使用库 use 库名;

#创建表 各个字段之间用逗号隔开 CREATE TABLE Student( 字段名 数据类型(M) not null default ' 默认值 ',

M:表示字段的长度

)

数据库字段类型:

字符串类型:

char[ ( M ) ] M 0 ---255 (固定长度) 取值范围:M

varchar[ ( M ) ] M 0---65535(可变长度) 取值范围:M

tinytext 微型文本串 取值范围:2^8-1字节

text 文本串 取值范围:2^16-1字节

数值型:

tinyint 取值范围:-2^7 ---2^7-1 1字节

int 取值范围:-2^31---2^31-1 4字节

bigint 取值范围:

float(精确到7位):

double(精确到小数点后15位或14位):

Decimal(钱):

decimal(m,a)

日期型:

DATE YYYY-MM-DD

DATETIME YY-MM-DD hh:mm:ss

设置当前 创建时间,或者是更新时间时给TIMESTAMP或者DATETIME字段 设置 DEFAULT CURRENT_TIMESTAMP 添加当前默认时间

NULL类型:

理解为“没有值”或“未知值”;

不要用NULL进行算术运算,结果仍为NULL;

MySQL中,0或NULL都意味着为假,1为真。

五表权限:权限设计 用户 角色 功能

反引号:

CREATE TABLE table( #反引号 表名、库名、字段名、 #不建议使用反引号

)

查看当前版本mysql支持的存储引擎:

select distinct(ENGINE) from information_schema.tables

查看表结构:

desc 表名(没有分号) show create table 表名;(有分号)

select * from \G;

存储引擎:

提供规则来存储数据

InnoDB在MySQL5中:查询慢

MySQL8中:InnoDB:查询快、支持事务

MySQL5.5中:MyISAM:查询快、但不支持事务

有些存储引擎不支持事物(MyISAM),用MyISAM创建的表有三个文件:

1、表结构

2、索引

3、数据

MEMORY:只有表结构,数据在内存中,如果重启数据库数据不见了

对表结构进行增删:

修改表名:

alter table 表名 rename as 新表名;

添加字段:

alter table 表名 add 字段名 int not null default 0;

删除字段:

alter table 表名 drop 字段名;

修改字段:

1、modify修改属性不修改内容

alter table 表名 modify 字段名 数据类型 not null default '默认值'

2、change修改字段名字和属性

alter table 表名 change 旧字段名 新字段名 数据类型

删除表:

drop table 表名;

约束:

约束的种类:

非空约束(not NUll):

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

唯一约束(unique):

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

写在字段后:是行级约束

在建表的时候,单独的用unique(字段) 来设置字段的约束:是表级约束

constraint是约束关键字

CONSTRAINT 自己取名字 UNIQUE(字段名,字段名)

主键约束(primary key)PK:

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

主键约束与“not null unique”区别:

给某个字段添加主键约束之后,该字段不能重复也不能为空,效果和”not null unique”约束 相同,但是本质不同。 主键约束除了可以做到”not null unique”之外,还会默认添加”索引——index”

唯一的且不为空

在字段名后加 primary key

在MySQL数据库提供了一个自增的数字,专门用来自动生成主键值,主键值不用用户维护,自动 生成,自增数从1开始,以1递增(auto_increment)

递增:auto_increment

按主键约束的字段数量分类 :

无论是单一主键还是复合主键,一张表主键约束只能有一个(约束只能有一个,但可以作用到好 几个字段) 单一主键:给一个字段添加主键约束 复合主键:给多个字段联合添加一个主键约束(只能用表级定义)

外键支持(foreign key)FK:

什么是外键 :

若有两个表A、B,id是A的主键,而B中也有id字段,则id就是表B的外键,外键约束主要用来维护 两个表之间数据的一致性。 A为基本表,B为信息表 只能是表级定义 foreign key(表的字段名) references t_class(父表的字段名) 某个字段添加外键约束之后,该字段称为外键字段,外键字段中每个数据都是外键值

外键只能定义表级约束

foreign key(表的字段名) reference 表名

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

单一外键:给一个字段添加外键约束 复合外键:给多个字段联合添加一个外键约束 一张表可以有多个外键字段(与主键不同) 注意: 外键值可以为null 外键字段去引用一张表的某个字段的时候,被引用的字段必须具有unique约束 有了外键引用之后,表分为父表和子表 班级表:父表 学生表:子表 创建先创建父表 删除先删除子表数据 插入先插入父表数据

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

##

删除非空约束:

alter table test modify test_student char(10) not null; 删除非空约束

添加唯一约束:

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

添加外键约束:

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 外键名;

 

(DML)对数据库的增删改:

数据增加

关键字INSERT,主要功能是 给数据库表增加记录。

关键字是UPDATE,主要功能是 修改数据库表中已有的记录。可以依 照条件去做修改。

关键字DELETE,主要功能室删除 数据库表中已有的记录。可以根据条件去做修改。

新增:

insert into 表名(字段名) value/values (值,值,值)

如果有自增的字段,可以写null或者default

• 字段或值之间用英文逗号隔开; • 可同时插入多条数据,values 后用英文逗号隔开; • values和value的方式均可。

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。 目标表中任何已存在的行都不会受影响。

修改:

update 表名 set 字段名=值,字段名=值......where 条件(xxx=xxx)

(必须写条件)

删除:

delete from 表名 where 条件

注意:主外键关系----处理对应的字表中的数据

清空表(截断表):

truncate 表名

最新回复(0)