MySQL-1:数据库基础知识(0-50%)

目录

前言

一、数据库基本概念和操作

1.数据库的概念和用途

概念

主要用途:

2.数据库服务器、数据库和表的关系

3.数据库的创建和删除

4.使用数据库

二、表的基本操作

1.表创建

2.表修改

3.表删除

三、数据类型和约束

1.数据类型

2.约束

总结


前言

        讲完了安装,这篇来讲数据库的基础知识

 

一、数据库基本概念和操作

1.数据库的概念和用途

概念

  • 数据库是一个有组织的数据集合,它们被存储在计算机上以便于管理和访问。
  • 数据库的主要目的是为了存储和管理数据,同时使数据能够被高效地访问、检索和更新。

主要用途:

  • 数据存储和管理:数据库可以帮助组织和存储大量的数据,包括结构化数据(如表格)和非结构化数据(如文本、图片和视频等)。
  • 数据访问:数据库可以提供高效的数据访问方式,包括查询、过滤、排序等操作,以便用户能够轻松地检索所需的数据。
  • 数据共享:多个用户可以同时访问数据库中的数据,从而实现数据的共享和协作。
  • 数据安全性:数据库可以提供安全性控制,包括访问控制和数据加密等,以保护数据的机密性和完整性。
  • 数据备份和恢复:数据库可以提供备份和恢复功能,以确保数据的可靠性和完整性。
  • 数据分析和挖掘:数据库可以提供高级数据分析和挖掘功能,包括统计分析、数据挖掘和机器学习等,以便用户可以从数据中获得更多的价值。

 

2.数据库服务器、数据库和表的关系

  • 数据库使用步骤:登录MySQL => 创建数据库 => 切换到指定数据库 => 创建表 => 使用表
  • 关系:数据库服务器 => 数据库 => 表,从左到右为一对多的关系。

 

3.数据库的创建和删除

  • 创建数据库
CREATE  DATABASE  [IF NOT EXISTS] db_name
  • 显示数据库语句
SHOW DATABASES
  • 显示数据库创建语句
SHOW CREATE DATABASE db_name
 
  • 数据库删除
DROP DATABASE  [IF EXISTS]  db_name 

 

4.使用数据库

  • 切换数据库
use db_name;
  • 查看当前使用的数据库
select database();

 

二、表的基本操作

1.表创建

  • 要创建一个新的表,需要使用SQL中的CREATE TABLE语句,并指定表名、列名和数据类型等信息。以下是一个基本的创建表的语法示例:
CREATE TABLE [IF NOT EXISTS]  students(
  id VARCHAR(255) PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  age INT,
  gender VARCHAR(255),
  clazz VARCHAR(255)
);
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据表时如果输入该字段的数据为NULL ,就会报错。
  • 加载本地数据:LOAD DATA local  INFILE 'students.txt' INTO TABLE students FIELDS TERMINATED BY ',' ;

 

2.表修改

  • 使用 ALTER TABLE 语句追加, 修改, 或删除列的语法.
  • 增加列
alter table students add length float;
  • 修改列类型,属性
alter table students modify length int not null;
  • 删除列
alter table students drop length;
  • 修改表的名称:rename table students to student;
  • 修改列的名称: alter table  student change id sid varchar(255);
  • 修改表的字符集:alter table student character set utf8;

字符集其实无需修改,因为在安装MySQL的时候就已经修改过了

 

3.表删除

  • 要删除表,需要使用SQL中的DROP TABLE语句,并指定要删除的表名。
DROP TABLE [IF NOT EXISTS ] students;

 

三、数据类型和约束

1.数据类型

  • 数值类型:INT、BIGINT、FLOAT、DOUBLE,DECIMAL等。
  • 字符串类型:CHAR、VARCHAR、TEXT等。
  • 日期和时间类型:DATE、DATETIME、TIMESTAMP等。
  • 二进制类型:BLOB、LONGBLOB、VARBINARY等。
  • 枚举类型:ENUM。
  • 集合类型:SET。

数值类型:

 

字符串类型:

  • 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
  • 字符串类型 主要是:varchar和char,  UTF-8:一个汉字=3个字节 GBK:一个汉字=2个字节

 

日期和时间类型:

  • 表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR

类型

大小

范围

格式

用途

( bytes)

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

YYYY-MM-DD hh:mm:ss

混合日期和时间值

TIMESTAMP

4

'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC

YYYY-MM-DD hh:mm:ss

混合日期和时间值,时间戳

结束时间是第2147483647秒,北京时间2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

 

2.约束

  • 主键约束(PRIMARY KEY):用于唯一标识表中的每一行数据,通常使用整数类型的列。
  • 唯一约束(UNIQUE):保证列中的所有值都是唯一的,可以包含空值。
  • 外键约束(FOREIGN KEY):用于定义列与其他表的关系,保证引用完整性。
  • 非空约束(NOT NULL):确保列中不包含空值。
  • 默认值约束(DEFAULT ):在插入新行时,如果没有指定列的值,则使用默认值。
  • 检查约束(CHECK):用于确保列中的值满足特定的条件,可以使用各种表达式和运算符来定义。

示例:

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100) UNIQUE,
  password VARCHAR(100) NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  age INT CHECK(age >= 18),
  address TEXT,
  role ENUM('admin', 'user') DEFAULT 'user'
);

这个语句将创建一个名为users的表,包含多个列和约束。

其中id列是主键,name列是非空字符串,email列是唯一的,password列是非空字符串,created_at列是日期时间类型,updated_at列是日期时间类型,但在更新时会自动更新,age列使用检查约束以确保其值大于等于18,address列是文本类型,role列是枚举类型,且默认值为'user'。

 

PRIMARY KEY使用

  • PRIMARY KEY 是一列或一组列,其值唯一标识表中的每一行。
  • 一个表只能有一个PRIMARY KEY。
  • 在表创建时,可以指定其中的一列为主键,也可以使用多列来组合作为主键。
  • 对于多列组合主键,它们的值的组合必须是唯一的。
CREATE TABLE employees (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

 

UNIQUE使用

  • 假设有一个“学生”数据表,其中包含学生ID、姓名和电子邮件地址。
  • 为了确保每个学生的电子邮件地址是唯一的,可以在“电子邮件地址”列上创建UNIQUE约束。
CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);
  • 在上面的代码中,我们创建了一个名为“students”的数据表,并在“email”列上创建了一个UNIQUE约束。
  • 这将确保每个学生的电子邮件地址是唯一的。

 

FOREIGN KEY使用

  • 假设有一个“订单”数据表和一个“产品”数据表,其中“订单”表包含订单ID、订单日期和产品ID,而“产品”表包含产品ID、产品名称和产品价格。
  • 为了确保订单中的每个产品ID都是有效的,可以在“订单”表中为“产品ID”列创建FOREIGN KEY约束,该约束参照“产品”表中的“产品ID”列。
CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(50) NOT NULL,
    price DECIMAL(8, 2) NOT NULL
);

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE NOT NULL,
    product_id INT,
    FOREIGN KEY (product_id) REFERENCES products(product_id) 
    # 这里将 product_id 作为 products表里 product_id列的外键
);
  • 在上面的代码中,我们创建了一个名为“products”的数据表和一个名为“orders”的数据表,并在“orders”表中为“product_id”列创建了一个FOREIGN KEY约束。
  • 这将确保订单中的每个产品ID都是有效的,并且参照了“products”表中的产品ID列。

 

AUTO_INCREMENT使用

  • AUTO_INCREMENT是一种MySQL特有的属性,它允许一个整数列自动增长,每次插入新行时自动递增。
  • 这通常用于为表创建一个唯一的、自动生成的数字标识符。
  • 必须将AUTO_INCREMENT属性与INTEGER数据类型一起使用,通常是使用INT或BIGINT数据类型。
CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50)
);
  • 在上面的代码中,每次插入一行时,MySQL将自动为id列生成一个新的唯一值,而不需要手动为该列指定一个值。
  • 这使得插入新行时更加方便,同时也确保每个行都有一个唯一的标识符。

 

总结

        本篇讲了百分之五十的基础知识,下一篇将会补充完整

  • 22
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃什么芹菜卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值