目录
一、数据库基本概念
二、数据库类型和常用数据库
1.关系型数据库
2.非关系型数据库
三、数据库的数据类型
四、SQL语句
1.简介
2.分类
五、SQL语句的使用
1.数据库操作
(1)创建数据库
编辑
(2)查看数据库
(3)使用(进入)数据库
编辑
(4)删除数据库
编辑
2.数据库表操作
(1)查看数据库中的表
(2)创建数据库表
(3)查看数据库表的结构
(4)删除数据库表
(5)修改数据库表结构
3.表中的数据操作
(1)添加记录
(2)查询表中记录
(3)删除记录
(4)修改记录
六、数据库表进阶操作
1.if 判断创建表
2.克隆表
3.查看表结构和详细信息
4.重建表(格式化)
5.创建临时表
6.外键连接
数据:描述事物的符号记录,包括数字,文字、图形、图像、声音、档案记录等,以“记录”形式按统一的格式进行存储。
表:将不同的记录组织在一起用来存储具体数据。
数据库:表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据集合,是按照数据结构来组织、存储和管理数据的仓库。
数据库管理系统(DBMS):是实现对数据库资源有效组织、管理和存取的系统软件。数据库的建立和维护功能、数据定义功能、数据操纵功能、数据库的运行管理功能、通信功能。
数据库系统:是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成,用户可以通过DBMS或应用程序操作数据库。
关系数据库系统是基于关系模型的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
- 每一行称为一条记录,用来描述一个对象的信息
- 每一列称为一个字段,用来描述对象的一个属性
关系模型可用简单的“实体-关系”(E-R)图来表示
E-R图中包含了实体(数据对象)、关系和属性三个要素
非关系数据库也被称作NoSQL (Not Only SQL)
存储数据不以关系模型为依据,不需要固定的表格式
非关系型数据库的优点
- 数据库可高并发读写
- 对海量数据高效率存储与访问
- 数据库具有高扩展性与高可用性
缓存型数据库 Redis、Memcache
索引型数据库 ES(Elasticsearch)
时序型数据库 Prometheus
文档型数据库 MongoDB
整型
数据类型 | 含义 |
---|---|
tinyint(m) | 1个字节 范围(-128~127) |
smallint(m) | 2个字节 范围(-32768~32767) |
mediumint(m) | 3个字节 范围(-8388608~8388607) |
int(m) | 4个字节 范围(-2147483648~2147483647) |
bigint(m) | 8个字节 范围(±9.22*10的18次方) |
浮点型
字符串
常用数据类型
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等。
DML:数据操纵语言,用于对表中的数据进行管理。
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录。
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限。
CREATE DATABASE `数据库名`;
SHOW DATABASES;
USE `数据库名`;
DROP DATABASE `数据库名`;
SHOW TABLES; 进入数据库中,查看所有的表
CREATE TABLE `表名` (字段1 数据类型,字段2 数据类型,...);
在创建时,数据类型后面加上约束条件(用空格隔开)实现约束效果
常用约束条件 | 作用 |
---|---|
not null | 非空约束(值不能为空) |
primary key | 主键约束(设为主键,包含了not null的效果) |
unique key | 唯一键约束(值在字段中唯一) |
default 指定值 | 默认值约束(将默认值设为指定值,字符串要用' '括起来) |
auto_increment | 自增约束(起始为1,随记录条目数增加自增1) |
foreign key | 外键约束(将字字段设为外键,与子表中的字段关联) |
zerofill | 位数不满足用0填充 |
DESC `表名`;
DROP TABLE `表名`;
ALTER TABLE `旧表名` RENAME `新表名`; 修改表名
ALTER TBALE `表名` ADD 字段名 数据类型; 添加字段
ALTER TABLE `表名` CHANGE 旧字段名 新字段名 数据类型; 修改字段名
ALTER TBALE `表名` DROP 字段名; 删除字段
INSERT INTO `表名` (字段1,字段2,...) VALUES (数字,'字符串');
如果没有非空限制,未指定字段的部分默认为NULL。
全字段填入数据可以不指定字段,即INSERT INTO 表名 VALUES (数字,'字符串');
SELECT * FROM `表名`; 查看表中所有记录
SELECT * FROM `表名` limit 数字; 查看表中指定条目数记录
SELECT * FROM `表名` limit 数字1,数字2; 查看表中指定数字1条之后的数字2条记录
SELECT 字段x,字段y,... FROM `表名`; 查询指定字段记录
SELECT 字段x,字段y,... FROM `表名`\G 将查询到的记录纵向显示(适用于字段较多)
SELECT * FROM `表名` WHERE 条件1 [AND 条件2] [OR 条件3]; 根据条件查询记录
DELETE FROM `表名`; 删除表中所有记录
DELETE FROM `表名` WHERE 条件1 [AND 条件2] [OR 条件3]; 删除表中指定条件记录
(一般以主键为条件)
UPDATE `表名` SET 字段=值 WHERE 条件1 [AND 条件2] [OR 条件3]; 修改指定条件记录
创建表前判断表是否存在,不存在则创建,存在则不创建。
CREATE TABLE IF NOT EXISTS `表名` (字段1 数据类型,字段2 数据类型,...);
CREATE TABLE `新表` LIKE `旧表`; 通过like方法复制旧表的表结构
INSERT INTO `新表` SELECT * FROM `旧表`; 向新表插入旧表查询的数据
SHOW CREATE TABLE `表名`; 以SQL命令格式展示表结构,还能显示表的其它信息
TRUNCATE TABLE `表名`;
与清空表数据的区别
delete from 表名; 是一行一行的删除数据记录,删除效率较慢,执行完后会返回删除的记录条目数,且删完后再插入数据记录,自增字段仍然会以原来的最大记录自增。而truncate table 表名; 是直接重建表,清空速度比delete更快,执行完后不会返回记录条目数,且清空表后再插入数据,自增字段会重新从1开始递增。
CREATE TEMPORARY `表名` (字段1 数据类型,字段2 数据类型,...);
临时表只能在当前连接中有效,能正常被增删改查,但是show tables是看不到的,并且换一个或者退出当前连接后临时表都会失效.
外键的定义
如果同一个属性字段x在表一中是主键,而在表二中不是主键,则字段x称为表二的外键。
主键表和外键表的理解
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)
注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表;主从表的字段具备相同的数据类型、字符长度和约束。
举例:创建两张表,主键表为供货商的编号和名字,外键表为货物表,将供货商编号作为外键。
先创建主键表(供货商表)
为主表添加一个主键约束(主键名建议以"PK_"开头)
再创建外键表(货物表)
为从表添加外键,并将主表的pid字段和从表的providers_id字段建立外键关联(外键名建议以"FK_"开头)
插入数据时,先主再外
删除数据时,先外再主