首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL笔记1-数据库基础与DDL-基于黑马

MySQL笔记1-数据库基础与DDL-基于黑马

作者头像
超级苦力怕
发布2025-12-23 17:41:06
发布2025-12-23 17:41:06
1470
举报

概述

数据库基本概念【理解】
  • 数据(data) 数据是数据库中存储的基本对象,是用来描述事物的符号记录,数据有两个特点:
    • 数据与数据的语义是不可分割的
    • 数据在不同的语境有不同的含义,也称语义

名称

全称

简称

数据库

存储数据的仓库,数据是有组织的进行存储

DataBase (DB)

数据库管理系统

操纵和管理数据库的大型软件

DataBase Management System (DBMS)

SQL

操作关系型数据库的编程语言,定义了一套操作 SQL 关系型数据库统一标准

Structured Query Language (SQL)

  • 关系关型数据库(RDBMS)

概念: 建立在关系模型基础上,由多张互相链接的二维表组成的数据库。

特点:

1.   使用表存储数据,格式统一,便于维护

2.   使用SQL语言操作,标准统一,使用方便

  • 数据模型
    • 我们可以通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库。
    • 可以使用SQL语句,通过数据库管理系统操作数据库,以及操作数据库中的表结构及数据。
    • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包含多行记录。

SQL

  •  SQL通用语法
    • SQL语句可以单行或者多行书写,以分号结尾。
    • SQL语句可以使用空格/缩进来增强语句的可读性
    • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
    • 注释:
      •     单行注释: -- 注释内容 或 # 注释内容(MySQL特有)
      •     多行注释:  /* 注释内容 */     
  • SQL分类

           SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。

分类

全称

说明

DDL

Data Definition Language

数据定义语言,用来定义数据库对象(数据库,表,字段)

DML

Data Manipulation Language

数据操作语言,用来对数据库表中的数据及逆行增删改

DQL

Data Query Language

数据查询语言,用来查询数据库中表的记录

DCL

Data Control Language

数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

  • DDL-数据库操作 

 注:[ ]为可选项

拓展:一般使用utf8字符集的时候,会选择utf8mp4,以防特殊字符占四个字节。

方法

说明

show databases;

查询所有数据库

select database();

查询当前数据库

create database[if not exists] 数据库名 [default charset 字符集] [collage 排序规则];

创建

drop database [if exists] 数据库名;

删除

use 数据库名;

使用

代码语言:javascript
复制
#查询所有数据库
mysql> show databases;

#创建itcast数据库
mysql> create database itcast;

#如果当前存在数据库,再次创建会报错,使用if not exists则不会报错
mysql> create database if not exists itcast;

#使用utf8字符集创建数据库
mysql> create database if not exists itcast default charset utf8mb4;

#使用itcast数据库
mysql> use itcast;

#查询当前数据库内容
mysql> select database();

#删除数据库[不要动系统库,删自己建的]
mysql> drop database if exists itcast;
  • DDL-表操作-查询  

方法

说明

show tables;

查询当前数据库所有表

desc 表名;

查询表结构

show create table 表名;

查询指定表的建表语句

代码语言:javascript
复制
#查询当前数据库所有表[先使用其中一个表]
mysql> show tables;

#查询表结构
mysql> desc student;

#查询表的建表语句
mysql> show create table student;
  • DDL-表操作-创建
  • 方法

 create table 表名(      字段1 字段1类型[comment 字段1注释],      字段2 字段2类型[comment 字段2注释],      字段3 字段3类型[comment 字段3注释],      ......      字段n 字段n类型[comment 字段n注释] )[comment 字段n注释];

代码语言:javascript
复制
示例
mysql> create table student(
    -> id int comment '学号',
    -> name varchar(50) comment '姓名',
    -> address varchar(50) comment '地址'
    -> )comment '学生';
  • DDL-表操作-数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

字符类型

类型

大小

范围(有符号)

范围(无符号)

用途

tinyInt

1 Bytes

(-128,127)

(0,255)

小整数值

smallint

2 Bytes

(-32 768,32 767)

(0,65 535)

大整数值

mediumInt

3 Bytes

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

int或integer

4 Bytes

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

bigint

8 Bytes

(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

float

4 Bytes

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度 浮点数值

double

8 Bytes

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度 浮点数值

decimal

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

小数值

字符串类型

类型

大小

用途

char

0-255 bytes

定长字符串

varchar

0-65535 bytes

变长字符串

tinyblob

0-255 bytes

不超过 255 个字符的二进制字符串

tinytext

0-255 bytes

短文本字符串

blob

0-65 535 bytes

二进制形式的长文本数据

text

0-65 535 bytes

长文本数据

mediumblob

0-16 777 215 bytes

二进制形式的中等长度文本数据

mediumtext

0-16 777 215 bytes

中等长度文本数据

longblob

0-4 294 967 295 bytes

二进制形式的极大文本数据

longtext

0-4 294 967 295 bytes

极大文本数据

日期类型

类型

大小 (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 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss

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

根据需求创建表 【案例】

设计一张员工信息表,要求如下:

  1. 编号(纯数字)
  2. 员工工号(字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)
代码语言:javascript
复制
mysql> create table emp (
    ->     id int comment '编号',
    ->     workno varchar(10) comment '工号',
    ->     name varchar(10) comment '姓名',
    ->     gender char(1) comment '性别',
    ->     age tinyint comment '年龄',
    ->     idcard char(18) comment '身份证号',
    ->     entrydate date comment '入职时间'
    -> ) comment '员工表';
DDL-表操作-修改

方法

说明

alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]

添加字段

alter table 表名 modify 字段名 新数据类型(长度);

修改数据类型

alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束]

修改字段名和字段数据

alter table 表名 drop 字段名;

删除字段

alter table 表名 rename to 新表名;

修改表名

drop table[if exists] 表名;

删除表名

注意:删除表时,表中数据也同时会被删除

代码语言:javascript
复制
#往emp表添加新的字段,名称为nickname,类型为varchar(20)
alter table emp add nickname varchar(20) comment '名称';

#将emp表的nickname字段修改为username,类型为varchar(30)
alter table emp change nickname username varchar(30) comment '用户名';

#将emp表的字段username删除
alter table emp drop username;

#将emp表的表名修改为employee
alter table emp rename to employee;

#删除指定表,并重新创建该表
truncate table employee;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
    • 数据库基本概念【理解】
  • SQL
  • DDL
    • 根据需求创建表 【案例】
    • DDL-表操作-修改
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档