当前位置: 首页 > news >正文

SQL语句及其应用(上) (DDL语句以及DML语句)

SQL语句的定义:

概述:

全称叫 Structured Query Language, 结构化查询语言, 主要是实现 用户(程序员) 和 数据库软件(例如: MySQL, Oracle)之间交互用的.

分类:

DDL: 数据定义语言, 主要是操作 数据库, 数据表, 字段, 进行: 增删改查(CURD)
涉及到的关键字: create, drop, alter, show
DML: 数据操作语言, 主要是操作 表数据, 进行: 增删改(CDU) -> 统称为 更新语句.
涉及到的关键字: insert, delete, update
DQL: 数据查询语言, 主要是操作 表数据, 进行: 查询操作®
涉及到的关键字: select, from, where
DCL: 数据控制语言, 主要是 创建用户, 设置权限, 隔离级别等.

通用语法:

  1. SQL语句可以写一行, 也可以写多行, 最后用 分号 结尾.
  2. SQL语句不区分大小写, 为了阅读方便, 建议关键字大写, 其它都小写.
  3. 注释写法:
    /* 多行注释的文本 */
    # 单行注释
    – 单行注释

二, 数据类型的定义

概述:

就是用来限定某列值的范围的, 必须是: 整数, 小数, 字符串, 日期等…

常用的数据类型:

  • 整型: int
  • 浮点型: float, double, decimal
  • 日期型: datetime
  • 字符串型: varchar(长度)

三, 约束的定义

概述:

在数据类型的基础上, 进一步对该列值做 限定.

(常用的)分类:

  • 单表约束:
    • primary key 主键约束, 特点: 非空, 唯一, 一般结合 auto_increment(自动增长, 自增)一起使用.`
    • not null 非空约束, 即: 该列值不能为null, 但是可以 重复.
    • unique 唯一约束, 即: 该列值必须不重复, 但是可以 为空.
    • default 默认约束, 等价于Python的 缺省参数.
  • 多表约束:
    • foreign key 外键约束

四, DDL语句(数据定义语言)

DDL语句的定义

DDL: 数据定义语言, 主要是操作 数据库, 数据表, 字段, 进行: 增删改查(CURD)
涉及到的关键字: create, drop, alter, show

案例

案例(1) DDL语句, 操作数据库
案例需求

DDL语句, 操作数据库

实现思路
  1. 查看当前所有的数据库.
  2. 删除数据库.
  3. 创建数据库.
  4. 方式1: 数据库存在时, 报错.
  5. 方式2: 数据库存在时, 什么都不做.
  6. 方式3: 创建数据库, 指定码表.
  7. 查看两个数据库的详细信息(码表信息).
  8. 修改数据库的码表.
  9. 切换数据库.
  10. 查看当前使用的是哪个数据库.
# 1. 查看当前所有的数据库.
show databases ;

# 2. 删除数据库.
drop database day10;

# 3. 创建数据库.
# 4. 方式1: 数据库存在时, 报错.
create database day01 charset 'utf8';
# 5. 方式2: 数据存在时, 什么都不做.
create database if not exists day01 charset 'utf8';
# 6. 方式3: 创建数据库, 指定码表.
create database if not exists day02 charset 'gbk'; 

# 7. 查看两个数据库的详细信息(码表信息)
show create database if not exists day01;	# utf8
show create database if not exists day02;	# gbk 

# 8. 修改数据库的码表.
alter database day02 charset 'utf8';

# 9. 切换数据库.
use day01;

# 10. 查看当前使用的是哪个数据库.
select database();		  # day01 	
案例(2)DDL语句, 操作数据表
扩展:创建数据表的格式:
# 格式:
create table [if not exists] 数据表名(
	字段名 数据类型 [约束],
	字段名 数据类型 [约束],
	......
	字段名 数据结构 [约束]
);
# 细节:
	# 上述的中括号中的部分, 可表示选项, 写不写都行.
案例需求

DDL语句, 操作数据表

实现思路
  1. 务必先切库, 即: 之后的表, 都是在这个库中玩儿的.
  2. 查看(当前数据库中)所有的数据表.
  3. 核心: 查看某张表的结构信息(字段名, 结构类型, 约束等…)
  4. 创建数据表.
  5. 需求: 创建用户表users, 字段为: id, username, password
  6. 修改表名.
  7. 格式1: alter table 旧表名 rename 新表名;
  8. 格式2: rename table 旧表名 to 新表名;
  9. 删除数据表.
# 0. 务必线切库, 即: 之后的表, 都是在这个库中玩的.
use day01;

# 1. 查看(当前数据库中)所有的数据表.
show tables;
# 3. 核心: 查看某张表的结构信息(字段表, 数据类型, 约束等...)
desc users;
# 4. 创建数据表.
# 5. 需求: 创建用户表user, 字段为: id, userbname, password
create table if not exists users(
	id int, 				# id列, 整型.
	username varchar(20), 	# 账号, 字符串类型
	passward varchar(20),	# 密码, 字符串类型
);

# 6. 修改表名.
# 7. 格式1: alter table 旧表名 rename 新表名;
alter table users rename user_tmp;
# 8. 格式2: rename table 旧表名 to 新表名;
rename table user_tmp to users;

# 9. 删除数据表.
drop table users;
案例(3)DDL语句, 操作字段
案例需求

DDL语句 操作字段

实现思路
  1. 查看某表的结构信息(字段信息)
  2. 给表新增字段: address, int, 非空(约束)
  3. 格式: alter table 表名 add 字段名 数据类型 [约束];
  4. 修改表的字段信息.
  5. 场景1: 只修改 数据类型 和 约束, 例如: address, int, 非空 -> address, varchar(10), 非空
  6. 格式: alter table 表名 modify 字段名 新的数据结构 [新的约束];
  7. 场景2: 修改列名, 数据类型, 约束. address, varcher(10), 非空 -> addr,vaerchar(20), 非空
  8. 格式: alter table 表名 change 旧字段名 新字段名 新的数据类型 [新的约束];
  9. 删除addr字段. 需求: 删除addr字段.
  10. 格式: alter table 表名 drop 旧字段名;
# 1. 查看某表的结构信息(字段信息)
desc user;

# 2. 给表新增字段: address, int, 非空(约束)
# 3. 格式: alter table 表名 add 字段名 数据类型 [约束];
alter table users add address int not null;

# 4. 修改表的字段信息.
# 5. 场景1: 只修改 数据类型 和 约束, 例如: address, int, 非空 -> address, varchar(10), 非空
# 6. 格式: alter table 表名 modify 字段名 新的数据结构 [新的约束];
alter table users modify address vaerchar(10);				# 如果没加约束, 则之前的非空约束就没了.
alter table users modify address vaerchar(10) not null;		# 这个才是符合题设的SQL语句.
# 7. 场景2: 修改列名, 数据类型, 约束.	address, varcher(10), 非空 -> addr,vaerchar(20), 非空
# 8. 格式: alter table 表名 change 旧字段名 新字段名 新的数据类型 [新的约束];
# 9. 删除addr字段.		需求: 删除addr字段.
# 10. 格式: alter table 表名 drop 旧字段名;
alter table users drop addr;

DML(数据操作语言)

DML语句的定义

DML语句: 主要操作的是: 表数据. 对表数据进行增, 删, 改的操作.

SQL中, 给表添加数据的格式:

# 格式1: 普通写法.
insert into 表名(列名1, 列名2...) values(1,2...);			# 列的个数和类型 要和后续 值的个数和类型完全一致.
# 格式2: 省略列名.
insert into 表名 values(1,2...);		# 如果不写列名, 则默认表示: 全列名.

# 格式3: 如果有了主键约束, 则添加表数据的动作可以简写为:
insert into 表名 values(null,1,2...);

# 格式4: 如果要同时添加多条数据, 写法如下:
insert into 表名 values(1,2,3), (4,5,6).......;   							

案例: DML语句操作 表数据 -> 增

案例需求

DML语句操作表数据 -> 增

实现思路
  1. 切库.
  2. 查表.
  3. 查看表数据, 目前先了解, 稍后讲.
  4. 往 用户表中添加数据.
  5. 格式1:普通写法.
  6. 格式2: 省略列名, 默认 = 全列名.
  7. 格式3: 同时添加多个用户信息.
# 1. 切库.
use day01;
# 2. 查表.
show tables;
# 3. 查看表数据.
select * from users;

# 4. 往 用户表中添加数据.
# 格式1: 普通写法.
insert into users(id, username, passward) values(1, 'admin01', 'pwd111');
insert into users(username) values('admin01');

# 格式2: 省略列名,默认 = 全列名
insert into users values(1, 'admin01', 'pwd111');

# 格式3: 同时添加多个用户信息.
insert into users values(2,'admin01', 'pwd222'), (3, 'admin03', 'pwd333');


五, 总结

  • Q1: SQL语句的定义?

    • 全称叫Structured Query Language,结构化查询语言,主要是实现用户(程序员)和数据库软件(例如:MySQL,Oracle)之间交互用的
  • Q2: SQL语句的分类?

    • DDL: 数据定义语言, 主要是操作 数据库, 数据表, 字段, 进行: 增删改查(CURD)
      涉及到的关键字: create, drop, alter, show
    • DML: 数据操作语言, 主要是操作 表数据, 进行: 增删改(CDU) -> 统称为 更新语句.
      涉及到的关键字: insert, delete, update
    • DQL: 数据查询语言, 主要是操作 表数据, 进行: 查询操作®
      涉及到的关键字: select, from, where
    • DCL: 数据控制语言, 主要是 创建用户, 设置权限, 隔离级别等.
  • Q3: SQL语句中常用的数据类型?

    • 整型: int
    • 浮点型: float, double, decimal
    • 日期型: datetime
    • 字符串型: varchar(长度)
  • Q4: DDL语句(数据定义 语言)的常用操作?

    • DDL语句, 操作数据库
    • DDL语句, 操作数据表
    • DDL语句, 操作字段
  • Q5: DML语句(数据操作语言)的常用操作?

    • DML语句操作 表数据 -> 增

相关文章:

  • React 中的错误边界(Error Boundaries),如何使用它们捕获组件错误
  • HCIP——园区网、VLAN
  • 【后端】【Django DRF】从零实现RBAC 权限管理系统
  • 从零开始的大模型强化学习框架verl解析
  • leetcode 150. 逆波兰表达式求值
  • MongoDB入门实战:从零开始掌握文档数据库操作
  • 科普:特征、规则、模型,及Lift(提升度)
  • Stable Diffusion 3.0 :一键开启你的AI绘画之旅
  • C++ --- 二叉搜索树
  • Ubuntu 重置密码方法
  • 【教学类-58-14】黑白三角拼图12——单页1页图。参考图1页6张(黑白、彩色)、板式(无圆点、黑圆点、白圆点)、宫格2-10、张数6张,适合集体操作)
  • 使用飞书API自动化更新共享表格数据
  • C++ 继承:面向对象编程的核心概念(一)
  • STL之list
  • Selenium之Web Driver常用属性
  • WPF ContentPresenter详解2
  • Docker-清理容器空间prune
  • 顺序表(C语言源码详解,附加测试代码)
  • 波斯白板(Persian Whiteboard)
  • MFC中如何判断一个窗口当前状态是显示还是隐藏
  • 商务部新闻发言人就中美经贸对话磋商情况答记者问
  • 先去上海后赴北京,苏中城市泰州为何接连拥抱顶流“大城”?
  • AI世界的年轻人,如何作答未来
  • 阿斯利康中国区一季度收入增5%,或面临最高800万美元新罚单
  • 神十九乘组安全顺利出舱
  • 阿里开源首个“混合推理模型”:集成“快思考”、“慢思考”能力