在数据库开发中,选择合适的数据类型和理解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 EXISTS 和 IF NOT EXISTS
例如:如果一个数据库已经 存在/删除 ,我们不加这些选项 直接 创建/删除 时会报错 ,这就是为什么要加这个的原因,如果不存在就创建,如果存在就不创建, create database if not exists test;
DEFAULT CHARSET
用来设置字符集,MySQL8.0默认是 utf8
(1)show databases;
首先输入密码后,输入 show databases; 它会显示都有哪些数据库,information_schema,mysql,performance_schema,sys。这四个数据是系统默认会有的,别轻易修改里面的内容
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 的数据库
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 的操作
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数据库
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; 我们可以看到有两个表(当然这两个表是我提前创建好的)
mysql> show tables;
+-------------------+
| Tables_in_itheima |
+-------------------+
| emp |
| tb_user |
+-------------------+
2 rows in set (0.00 sec)
mysql>
(2)create table 表名;
创建表格,注意格式,每行用 , 逗号隔开,最后一行除外,注释用 comment '注释内容'
进行描述,末位再写 ; 分号,格式如下
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; 会显示数据类型
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 用来重命名表单
-- 在表 `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 语句,它会删除表中的所有记录,但保留表的结构、列、索引和约束。(其实是删除重新创建了一个)
-- 清空 `employees` 表中的所有数据
TRUNCATE TABLE employees;
总结:
我们详细了解了MySQL中的各种数据类型,包括数值类型、字符串类型和日期类型,并且对每种类型的范围和占用字节大小有了清晰的认识。此外,我们深入学习了DDL,接着我会继续更新DML,DQL,DCL的部分。
最后制作不易,给个赞吧…