MySQL 数据类型详解及SQL语言分类-DDL篇

在数据库开发中,选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型,包括数值类型、字符串类型和日期类型,并解释SQL语言的四大分类:DDL、DML、DQL和DCL。

1.MySQL 数据类型

SQL语言是不区分大小写的,大写小写都可以,以 ; 分隔开,注意所有符号都是英文的

(1)数值类型

无符号类型就是后面加上 unsigned

(2)字符串类型

有些类型后面需要加参数,例如:

char(10)表示10各字符大小,一旦设置好长度就是固定的,实际上我只需要1个字符大小,但是它占10个字符大小长度,不够的后面全是空格补充;

varchar(10)表示最大是10个字符长度,我输入2个字符它就占2个大小,上限是10;

(3)日期和时间类型

2.SQL 语言分类

DDL (Data Definition Language) : 数据定义语言,用于定义数据库结构。

  • CREATE: 创建数据库或表。
  • ALTER: 修改数据库或表结构。
  • DROP: 删除数据库或表。

DML (Data Manipulation Language): 数据操作语言,用于数据的增删改。

  • INSERT: 插入数据。
  • UPDATE: 更新数据。
  • DELETE: 删除数据。

DQL (Data Query Language): 数据查询语言,用于查询数据。

  • SELECT: 查询数据。

DCL (Data Control Language): 数据控制语言,用于权限控制。

  • GRANT: 授予权限。
  • REVOKE: 撤销权限。

3. DDL 语句示例及说明

让我们打开cmd 输入: mysql -u rooot -p 或者 直接打开 MySQL自带的命令行工具,来了解一下DDL的语法,它是针对于数据库的操作,而我们知道关系型数据库以二维表存储数据,也包含对表的操作,但是不能给表添加数据,添加数据就要用到DML

++再说一遍,大小写都可以,注意空格和英文符号,还有单词别拼错了++

数据库操作

  • SHOW DATABASES; 显示所有数据库。
  • CREATE DATABASE 数据库名; 创建一个名为 数据库名 的数据库。
  • USE 数据库名; 使用指定的数据库。
  • SELECT DATABASE(); 返回当前使用的数据库。
  • DROP DATABASE 数据库名; 删除名为 数据库名 的数据库。
常用SQL语句选项

这些可以写也可以不写,可以根据需求例如:

create database if not exists itheima default charset utf8mb4;

IF EXISTSIF NOT EXISTS

例如:如果一个数据库已经 存在/删除 ,我们不加这些选项 直接 创建/删除 时会报错 ,这就是为什么要加这个的原因,如果不存在就创建,如果存在就不创建, create database if not exists test;

DEFAULT CHARSET

用来设置字符集,MySQL8.0默认是 utf8

(1)show databases;

首先输入密码后,输入 show databases; 它会显示都有哪些数据库,information_schema,mysql,performance_schema,sys。这四个数据是系统默认会有的,别轻易修改里面的内容

sql 复制代码
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.39 MySQL Community Server - GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
(2)create database +数据库名;

我们用于学习,先自己创建一个数据库,输入 create database ittest; 这会创建一个名为 ittest 的数据库

sql 复制代码
mysql> create database if not exists ittest;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| ittest             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
(3)use 数据库名;

这个命令用来切换不同数据库进行操作,输入 use ittest; 出现 Database changed 说明成功切换到对 ittest 的操作

sql 复制代码
mysql> select database();
+------------+
| database() |
+------------+
| itheima    |
+------------+
1 row in set (0.00 sec)

mysql> use ittest;
Database changed
mysql>
(4)select database();

用来查询当前所在数据库是哪个,上面示例已经演示过了

(5)drop database 数据名;

用于删除数据库,输入 drop database ittest; 删除ittest数据库

sql 复制代码
mysql> use ittest;
Database changed
mysql> drop database ittest;
Query OK, 0 rows affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| itheima            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql>

表操作

(1)show tables;

查看数据库的表单信息,输入 show tables; 我们可以看到有两个表(当然这两个表是我提前创建好的)

sql 复制代码
mysql> show tables;
+-------------------+
| Tables_in_itheima |
+-------------------+
| emp               |
| tb_user           |
+-------------------+
2 rows in set (0.00 sec)

mysql>
(2) create table 表名;

创建表格,注意格式,每行用 , 逗号隔开,最后一行除外,注释用 comment '注释内容'

进行描述,末位再写 ; 分号,格式如下

sql 复制代码
 CREATE TABLE tb_user (
    ->     id INT COMMENT '编号',
    ->     name VARCHAR(50) COMMENT '姓名',
    ->     age INT COMMENT '年龄',
    ->     gender VARCHAR(1) COMMENT '性别'
    -> ) COMMENT='用户表';
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+-------------------+
| Tables_in_itheima |
+-------------------+
| tb_user           |
+-------------------+
1 row in set (0.00 sec)
(3)desc 表名;

查看表单,输入 desc tb_user; 会显示数据类型

sql 复制代码
 desc tb_user;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | YES  |     | NULL    |       |
| name   | varchar(50) | YES  |     | NULL    |       |
| age    | int         | YES  |     | NULL    |       |
| gender | varchar(1)  | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
(4)alter table 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...;

add 用来增加信息,modify修改 数据类型,change 修改 名称和数据类型 ,drop用来删除,rename to 用来重命名表单

sql 复制代码
-- 在表 `employees` 中添加一个新的列 `email`,数据类型为 VARCHAR(100)
ALTER TABLE employees ADD email VARCHAR(100) COMMENT '员工电子邮件';

-- 修改表 `employees` 中 `age` 列的数据类型为 `SMALLINT`,并添加注释
ALTER TABLE employees MODIFY age SMALLINT UNSIGNED COMMENT '员工年龄';

-- 修改表 `employees` 中的列 `name`,将其名称更改为 `full_name` 并将数据类型更改为 `VARCHAR(255)`
ALTER TABLE employees CHANGE name full_name VARCHAR(255) COMMENT '员工全名';

-- 删除表 `employees` 中的列 `email`
ALTER TABLE employees DROP email;

-- 将表 `employees` 重命名为 `staff`
ALTER TABLE employees RENAME TO staff;
(5)truncate table 表名;

TRUNCATE TABLE 是 MySQL 中用于快速清空表数据的 SQL 语句,它会删除表中的所有记录,但保留表的结构、列、索引和约束。(其实是删除重新创建了一个

sql 复制代码
-- 清空 `employees` 表中的所有数据
TRUNCATE TABLE employees;

总结:

我们详细了解了MySQL中的各种数据类型,包括数值类型、字符串类型和日期类型,并且对每种类型的范围和占用字节大小有了清晰的认识。此外,我们深入学习了DDL,接着我会继续更新DML,DQL,DCL的部分。

最后制作不易,给个赞吧...

相关推荐
齐 飞7 分钟前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
云空8 分钟前
《Python 与 SQLite:强大的数据库组合》
数据库·python·sqlite
暮毅12 分钟前
10.Node.js连接MongoDb
数据库·mongodb·node.js
wowocpp15 分钟前
ubuntu 22.04 server 格式化 磁盘 为 ext4 并 自动挂载 LTS
服务器·数据库·ubuntu
成富38 分钟前
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
数据库·人工智能·sql·spring·oracle
songqq2739 分钟前
SQL题:使用hive查询各类型专利top 10申请人,以及对应的专利申请数
数据库·sql
计算机学长felix42 分钟前
基于SpringBoot的“校园交友网站”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·毕业设计·交友
小码的头发丝、1 小时前
Django中ListView 和 DetailView类的区别
数据库·python·django
小兜全糖(xdqt)2 小时前
mysql数据同步到sql server
mysql·adb
Karoku0662 小时前
【企业级分布式系统】Zabbix监控系统与部署安装
运维·服务器·数据库·redis·mysql·zabbix