SQL学习: SQL入门与DDL

SQL 与数据库

无论是何种开发语言, 亦或是何种开发方向, SQL都是开发人员无法绕开的话题.

数据库就是存储数据的库

数据库可以分为 3 个层级: 库, 表, 数据

数据库是用来存储数据的,在这个过程中,会涉及到:

  • 数据的新增
  • 数据的删除
  • 数据的修改
  • 数据的查询
  • 数据库、数据表的管理

而 SQL 语言,就是一种对数据库、数据进行操作、管理、查询的工具。

简单来说, SQL语言就是操作数据库的专用工具

使用数据库软件去获得库 -> 表 -> 数据,这种数据组织、存储的能力, 并借助 SQL 语言,完成对数据的增删改查等操作

由于数据库管理系统 (数据库软件) 功能非常多, 不仅仅是存储数据, 还要包含: 数据个管理, 表的管理, 库的管理, 账户管理, 权限管理等.

所以, 操作数据库的SQL语言, 也基于功能, 可以划分为 4 类:

  • 数据定义: DDL (Data Definition Lanauage)
    • 库的创建删除, 表的创建删除等
  • 数据操纵: DML (Data Manipulation Language)
    • 新增数据, 删除数据, 修改数据等
  • 数据控制: DCL (Data Control Language)
    • 新增用户, 删除用户, 密码修改, 权限管理等
  • 数据查询: DQL (Data Query Language)
    • 基于需求查询和计算数据

SQL 的语法特征

  1. SQL 语言大小写不敏感
  2. SQL 可以单行或者多行书写, 最后以 ; 号结束
  3. SQL 支持注释:
    • 单行注释: -- 注释内容, (--后一定要有一个空格)
    • 单行注释: # 注释内容 (# 后可以不加空格, 推荐加上)
    • 多行注释: /* 注释内容 */
sql 复制代码
-- 注释 

# 注释

/*
 注释
 */

在终端输入以下命令就可以进入MySQL 的命令行环境了

python 复制代码
 mysql -uroot -p

DDL

库的相关操作

基础命令及功能:

命令 功能
show databases; 查看哪些数据库
use 数据库名 charset UTF8mb4; 使用某个数据库
exit 退出MySQL的命令行环境
create databases 数据库名; 创建自己的数据库
select database(); 查看当前正在使用哪个数据库
drop database 数据库; 删除数据库
sql 复制代码
-- 查看数据库
show databases; 

-- 创建数据库 
-- create database world;  
-- 默认 utf8mb4
create database world charset utf8mb4;

-- 使用数据库 
use world

-- 查看当前正在使用的数据库 
select database()

-- 删除数据库 
drop database world;

表的相关操作

基本命令及功能

命令 功能
show tables; 查看当前数据库内有哪些表
drop table 表名称 删除表
drop table if exists 表名称 删除表
drop table 表名

直接删除表。

  • 如果表存在:正常删掉表(表结构 + 全部数据一起消失)
  • 如果表不存在:直接报错,整条 SQL 脚本停止往下执行。

示例:student 已经被删掉,再执行

drop table student; → 报错误:Table 'world.student' doesn't exist,后面的 SQL 不再运行。

drop table if exists 表名

if exists = 如果存在才执行删除

  • 表存在:删除表,和上面效果一模一样
  • 表不存在:不报错,静默跳过,继续执行后面的 SQL

创建表

sql 复制代码
create table 表名称( 
	列名称 列类型, 
	列名称 列类型, 
	...
); 

列类型有:

名称 类型
int 整数
float 浮点数
varchar(最大长度) 文本, 长度为数字, 做最大长度限制
date 日期类型
timestamp 时间戳类型
sql 复制代码
use world

-- 创建一个学生表
create table Student(
	id int, 
	-- 括号内表示最大长度限制
	name varchar(10),  
	age int
);  

-- 查看当前库中的表
show tables;  

-- 删除表 
drop table Student; 
相关推荐
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(45):ReMemR1——让长期上下文 Agent 可以回溯历史记忆进行非线性推理
论文阅读·人工智能·学习·开源·github
个 人 练 习 生1 小时前
数据结构链表:带头双向循环链表
c语言·数据结构·经验分享·学习·其他·链表
Shaoxi Zhang11 小时前
JAVA学习笔记035——对象和JSON格式
java·笔记·学习
Python私教12 小时前
从表格到管理系统:别先写页面,先补齐权限、流程和审计
数据库·后端·架构
陈皮波比茶12 小时前
Redis学习
数据库·redis·学习
—Miss. Z—12 小时前
备份与恢复
数据库·oracle
ltl12 小时前
RocksDB Leveled Compaction:层级不变式与 CompactionPicker
数据库
ltl12 小时前
DuckDB 向量化与 Morsel-Driven Pipeline
数据库