数据库的原理
数据库是什么?
顾名思义,我们可以把他理解成一个存放数据的仓库;仓库,一般是指具有储存设施,对物品(物资)进行集中、整理、保管和分发等工作的场所,数据库是就是与这种相同,只是他是针对数据。
DBMS是什么?
-
Database Management System:
数据库管理系统,相当于仓库的管理人员,我们后续针对数据库进行的各种管理操作就是通过该系统来完成的; -
数据库管理系统的分类:
包含两大类SQL(关系型数据库)和NoSQL(非关系型数据库)
两者的区别:
1、关系型数据库是通过外键来建立表与表之间的联系,表中的每行代表着一个对象;
2、非关系数据库则没有行和列的概念,他的关系是键值对,他以对象的形式存储在数据库中,而对象之间的关系通过对象自身的属性来决定;
3、我们查询数据,对关系型数据库,输出结果是一个对象;对非关系型数据库,输出结果是一个数组。
MySQL基本原理
数据类型
数值
tingint | 十分小的数据,1个字节 |
---|---|
smallint | 较小的数据,2个字节 |
mediumint | 中等的数据,3个字节 |
int | 标准的整数4个字节 |
bigint | 较大的数据 8个字节 |
float | 浮点数 4个字节 |
double | 浮点数 8个字节 (精度问题) |
decimal | 字符串形式的浮点数,金融计算的时候,一般用 |
字符串
char | 字符串固定大小 0-255 |
---|---|
varchar | 可变字符串 0-65535(常用 |
tinytext | 微型文本 2^8-1 |
text | 文本串 2^16-1 (保存大文本) |
时间类型
date | YYYY-MM-DD,日期 |
---|---|
time | HH:mm:ss 时间格式 |
datetime | YYYY-MM-DD HH:mm:ss 最常用的时间格式 |
null
表示没有值,注意,不要使用null进行运算,结果为null
字段类型
unsigened
无符号的整数;声明该列不能声明负数。
zerofill
0填充的:比如10的长度 1 – 0000000001 不足位数用0填充。
自增:
1、通常理解为自增,自动在上一条记录的基础上+1 ;
2、 通常用来设计唯一的主键 index,必须是整数。
假设设置为 not null,如何不给他赋值,就会报错 NULL 如果不填写,默认为NULL非空 NULL not Null:
默认:
设置默认的值!
操作数据库
创建数据库:CREATE DATABASE IF NOT EXISTS wrok;
删除数据库:DROP DATABASE IF EXISTS wrok
使用数据库:USE 'wrok'
查看所有数据库:SHOW DATABASES
创建数据库表
1、格式:
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名` 列类型[属性][索引][注释],
`字段名` 列类型[属性][索引][注释],
...
`字段名` 列类型[属性][索引][注释]
)[表类型][表的字符集设置][注释]
2、例如:
CREATE DATABASE school
CREATE TABLE IF NOT EXISTS `work` (
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '工号',
`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
删除和修改数据库表
1、修改
-- 修改表名 ALTER TABLE 旧表面 AS 新表名
ALTER TABLE student RENAME AS student1
-- 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE student1 ADD age INT(11)
-- 修改表的字段(重命名,修改约束)
ALTER TABLE student1 MODIFY age VARCHAR(11) -- 修改约束
ALTER TABLE student1 CHANGE age age1 INT(1) -- 字段重命名
2、删除
-- 删除表
DROP TABLE IF EXISTS student1
所有的创建和删除操作尽量加上判断,以免报错
注意点:
`` 字段名,使用这个包裹
注释 – /**/
sql 关键字大小写不敏感,建议写小写
所有的符号全部用英文