MySQL数据库——SQL(1)-SQL通用语法、SQL分类、DDL(数据库操作、表操作)

news/2025/2/15 22:19:41/

目录

SQL通用语法

SQL分类

DDL

数据库操作

表操作-查询

1.查询当前数据库所有表

2.查询表结构

3.查询指定表的建表语句

表操作-创建

表操作-数据类型

数值类型

字符串类型

日期类型

 DDL小案例

 表操作-修改&删除

1.添加字段

2. 修改数据类型

3.修改字段名和字段类型

4.删除字段

5.修改表名

6.删除表&删除并重新创建表

DDL总结

数据库操作

表操作


SQL(1)

分为六点内容:

  • SQL通用语法
  • SQL分类
  • DDL
  • DML
  • DQL
  • DCL

SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格/缩进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,但关键字建议使用大写。
  4. 注释:

单行注释: --注释内容 或 #注释内容 (MySQL特有)

多行注释: /*注释内容*/

SQL分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

数据库操作

1.查询所有数据库

SHOW DATABASES;

2.查询当前数据库

SELECT DATABASE();

3.创建

CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET 字符集 COLLATE 排序规则;

解释: 

 4.删除

DROP DATABASE IF EXISTS 数据库名;

解释:

此处的IF EXISTS与第3点的作用类似。 

5.使用

USE 数据库名;

表操作-查询

1.查询当前数据库所有表

SHOW TABLES;

2.查询表结构

DESC 表名;

3.查询指定表的建表语句

SHOW CREATE TABLE 表名;

表操作-创建

CREATE TABLE 表名(字段1 字段1类型[COMMENT 字段1注释],字段2 字段2类型[COMMENT 字段2注释],字段3 字段3类型[COMMENT 字段3注释],......字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];

注意:[......]为可选参数,最后一个字段后面没有逗号.

我们来尝试一下,创建数据库->使用数据库->建表

 ->查看表结构->查询表的建表语句。

表操作-数据类型

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

数值类型

分类类型大小描述
数值类型TINYINT1 byte小整数值
SMALLINT2 bytes大整数值
MEDIUMINT3 bytes大整数值
INT 或 INTEGER4 bytes大整数值
BIGINT8 bytes极大整数值
FLOAT 4 bytes单精度浮点数值
DOUBLE8 bytes双精度浮点数值
DECIMAL/小数值(精度确定点数)

注:DECIMAL依赖于M(精度)和D(标度)的值,例如:570.68,其精度为5,标度为2;

使用DOUBLE时也需要标明精度和标准,如分数80.5、100.0,记为:score DOUBLE(4,1).

我们之前写的age实际上用不到INT这样稍微大的空间,而且因为其一定为整数,所以可以改写为:age TINYINT UNSIGNED.

字符串类型

分类类型描述大小
字符串类型CHAR定长字符串0-255 bytes
VARCHAR变长字符串0-65535 bytes
TINYBLOB不超过255个字符的二进制数据0-255 bytes
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

重点解释一下char(定长字符串)和varchar(变长字符串)的区别

char在给定字符长度的情况下,只能固定占用一定的空间,

而varchar在给定字符长度的情况下,会对数据进行计算之后再占用空间。

例如:char(10)和varchar(10),二者都存储着4个字节的数据,char占用10个字节,而varchar则只会占用4个字节。

性能上,char比varchar更好,不需要对数据的大小进行计算。

日期类型

分类类型描述大小格式范围
日期类型DATE日期值3YYYY-MM-DD1000-01-01至9999-12-31
TIME时间值或持续时间3HH:MM:SS-838:59:59至838:59:59
TEAR年份值1YYYY1901至2155
DATETIME混合日期和时间值8YYYY-MM-DD HH:MM:SS1000-01-01 00:00:00至9999-12-31 23:59:59
TIMESTAMP混合日期和时间值,时间戳4YYYY-MM-DD HH:MM:SS1970-01-01 00:00:01至2038-01-19 03:14:07

 DDL小案例

根据需求创建表(设计合理的数据类型、长度)

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

  1. 编号(纯数字)
  2. 员工工号(字符串类型,长度不超过10位)
  3. 员工姓名(字符串,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)

代码: 

CREATE TABLE emp(id INT COMMENT '编号',worknumber VARCHAR(10) COMMENT '工号',name VARCHAR(10) COMMENT '姓名',gender CHAR(1) COMMENT '性别',age TINYINT UNSIGNED COMMENT '年龄',idcard CHAR(18) COMMENT '身份证号',entrydate DATE COMMENT '入职时间'
)COMMENT '员工表';

创建之后查询表格情况(DESC EMP;): 

 表操作-修改&删除

1.添加字段

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释];

为emp表增加一个新的字段“昵称”为nickname,类型为varchar(20)

 

 

2. 修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

3.修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释];

将emp表的nickname字段修改为username,类型为varchar(30):

4.删除字段

ALTER TABLE 表名 DROP 字段名;

将emp表的字段username删除:

5.修改表名

ALTER TABLE 表名 RENAME TO 新表名;

将emp表的表名修改为employee:

6.删除表&删除并重新创建表

删除表

DROP TABLE [IF EXISTS] 表名;

删除指定表,并重新创建该表

TRUNCATE TABLE 表名;

(后者保留表结构)

注意:在删除表时,表中的全部数据也会被删除。

删除表操作:

 删除并重建表操作:

 

DDL总结

数据库操作

SHOW DATABASES;
CREATE DATABASE 数据库名;
USE 数据库名;
SELECT DATABASE();
DROP DATABASE 数据库名;

 

表操作

SHOW TABLES;
CREATE TABLE 表名(字段 字段类型,字段 字段类型);
DESC 表名;
SHOW CREATE TABLE 表名;
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...;
DROP TABLE 表名;

end


学习自:黑马程序员——MySQL数据库


http://www.ppmy.cn/news/1036146.html

相关文章

系统学习Linux-MongoDB

概述 mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON 相关概念实例:系统上运行的mongodb的进程,类似于mysql实例;库:每个数…

windows11下配置vscode中c/c++环境

本文默认已经下载且安装好vscode,主要是解决环境变量配置以及编译task、launch文件的问题。 自己尝试过许多博客,最后还是通过这种方法配置成功了。 Linux(ubuntu 20.04)配置vscode可以直接跳转到配置task、launch文件,不需要下载mingw与配…

HTTP协议详细介绍

HTTP协议详细介绍 1. 一.概述 HTTP(HyperText Transfer Protocol):超文本传输协议,是一种允许通讯双方的一端获取资源 (如 HTML 文档)的协议。它是互联网上任何数据交换的基础,属于 C/S(客户端/服务器)协议, 这意味着请求是由接收…

JavaScript实现在线Excel的附件上传与下载

摘要:本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求&am…

计蒜客T1126——单词倒排

超级水的一道题&#xff0c;和T1122类似但更简单&#xff0c;分割后逆序输出即可~ 题干&#xff1a; #include <iostream> #include <string> #include <vector> using namespace std;int main(int argc, char** argv) {string S;vector<string> V;get…

Linux文件权限一共10位长度,分成四段

Linux文件权限一共10位长度,分成四段 Linux文件权限 1、 文件aaa的访问权限为rw-r--r--,现要增加所有用户的执行权限和同组用户的写权限&#xff0c;下列哪些命令是正确的&#xff1f; a) chmod ax gw aaa √ b) chmod 764 aaa c) chmod 775 aaa √ d)…

windows Socket简单编程实例

服务端 #include <winsock2.h> #include <string.h> #include <stdio.h> #include <stdlib.h>#pragma comment(lib, "Ws2_32.lib")void error_handing(const char* message) {fputs(message, stderr);fputc(\n, stderr);exit(1); } int mai…

css鼠标样式 cursor: pointer

cursor: none; cursor:not-allowed; 禁止选择 user-select: none; pointer-events:none;禁止触发事件, 该样式会阻止默认事件的发生&#xff0c;但鼠标样式会变成箭头