数据定义和操作

news2024/11/15 9:12:37
一、数据定义语言和操作语言
1. 分析需求设计数据库表
根据“优乐网”系统需求:
  此系统满足以下需求:
系统支持生成商品的入库和出库。入库之后的商品可以在平台显示
所有用户都可以浏览系统的商品信息,只有注册用户才能订购团购商品和服务
系统支持订单数据自动生成
为方便用户检索所需的团购商品和服务信息,系统支持按商品和服务的类型、商家以及
所在地区进行分类
设计数据库表:
2. 数据定义语言
(1)概念:数据定义语言(Data Definition Language,DDL),主要是用在定义或改变
表的结构、数据类型、表之间的连接和约束等初始化工作上,比如 create、alter、drop
等。
(2)常用DDL语句:
数据库创建和维护的 DDL 语句:
  create database database_name 创建数据库
 show databases 查看数据库
  drop database database_name 删除数据库
  rename database old_database_name to new_database_name 更改数
据库名
  数据库表创建:
  create table table_name (
字段名 1 , 数据类型【列级别约束条件】【默认值】 ,
字段名 2 , 数据类型【列级别约束条件】【默认值】 ,
...
【列级别约束条件】
)
  演示例子:
CREATE TABLE `t_user` (
  `ID` int ( 11 ) NOT NULL AUTO_INCREMENT COMMENT ' 主键 ID' ,
`NAME` varchar ( 50 ) NOT NULL COMMENT ' 用户名 ' ,
`PASSWORD` varchar ( 10 ) DEFAULT NULL COMMENT ' 用户密码 ' ,
PRIMARY KEY ( `ID` )
  ) ENGINE = InnoDB AUTO_INCREMENT = 10 DEFAULT CHARSET = gbk
1 数据库表结构修改:
2 // 表结构语法:
3 alter table 表名 修改子句
4 修改子句类型:
5 新增字段子句:
6 add column_name data_type [ not null ] [ default default_value ]
7 变更字段名子句:
8 change column_name new_column_name data_type [ not null ] [ default default_
value ]
9 更新字段类型子句:
10 modify column_name new_data_type [ not null ] [ default default_value ]
11 删除字段:
12 drop column column_name
13 删除约束:
14 drop unique constraint_name ; // 删除唯一约束
15 drop constraint 约束名; // 删除约束
16 drop primary key ; // 删除主键
修改表结构例子:
1 具体要求如下:
2 新增字段供应商地址 address ,类型为 varchar ( 50 )
3 将字段 mobile 更名为 tel ,字段类型维持不变,仍为 varchar ( 20 )
4 将字段 pName 的类型修改为 varchar ( 50 ) ,原类型为 varchar ( 20 )
5 删除字段 contact
6 DDL 语句:
7 alter table provider add address varchar ( 50 ), change mobile tel varchar ( 2
0 ),
8 modify pName varchar ( 50 ), drop column contact ;
9 例子:
10 alter table t_user add address varchar ( 50 ), change NAME USER_NAME varcha
r ( 20 ),
11 modify PASSWORD varchar ( 8 )
3. 数据操作语言
(1)概念:数据操作语言DML,实现对数据库中数据的操作,以 insert、update、
delete 3 种指令为核心,分别代表插入、更新与删除。
(2)插入语句
1 语法结构:如果同时插入多行则 values 后跟多个 ( 值列表 ) ,以都好相隔
2 insert [ into ] table_name [( 字段列表 )] values ( 值列表 )
3 例子:
4 insert into t_user ( USER_NAME , PASSWORD , address )
5 values ( ' 张三 ' , '11111111' , 'xxx 学院 ' ); (3)更新语句:使用“update”SQL 语句来操作,该语句可以对表中的一行、多行甚至
所有记录进行修改
1 语法结构:
2 update table_name set
3 字段名 1 = 1 , 字段名 2 = 2 , , 字段名 n = n ;
4 [ where 条件表达式 ]
5 例子:
6 update t_user set USER_NAME = concat ( ' 欧阳 ' , USER_NAME );
(4)删除语句:
1 语法结构:
2 delete from table_name [ where 条件表达式 ]
3 注意:当删除有主从关系的表记录时,为避免发生删除时异常,一定要事先设置从表
4 外键约束的 删除时 状态为 null ,或者为 “cascade” 。在通常情况下,都是设置从表
5 外键约束的 删除时 状态为 null ,而不是 “cascade” ,因为这样容易误删除从表数据。
6
7 例子:
8 DELETE from t_user where USER_NAME = ' 欧阳张三 '
二、数据查询
1. select语句基本结构
(1)概念:select 语句可以使数据库服务器根据客户的要求查询所需要的信息,并按规定
的格式返回给客户
(2)select语法结构:
1 select < column1 , column2 , column3 … > from < table_name >
2 [ where < 条件表达式 > ]
3 [ group by column1 , column2 , column3 … | having < 条件表达式 > ]
4 [ order by < column1 , column2 , column3 … > [ asc desc ]]
(3)字段取别名,表取别名,按需查字段
1 select shopName as 商家名 , shopAddress as 商家地址 from product shop
2
3 例子:
4 SELECT * from t_user ;
5 select user_name as ' 姓名 ' , password as ' 密码 ' from t_user as userinfo
2. 查询结果排序
order by 字段名 排序方式:
可以对查询结果按照“字段 1,字段 2…”的次序进行升序或降序显示。
关键字 asc 表示升序(默认为升序,故升序时可省略 asc),desc 表示降序。
多列排序的规则为:依照排序列从左至右的次序依次降低例子:
1 SELECT * from t_user u order by id desc , phone asc ;
3. 过滤重复字段
1 distinct :用于过滤重复的字段信息。
2 select distinct director from movie
4. 限定指定记录
limit子句:MySQL 提供的 limit 子句可以被用于强制select 语句返回指定的记录数。

limit [offset,] rows

参数 offset 和 rows 必须为整数,offset 可以省略。
offset 指定第一个返回记录行的偏移量。注意:初始记录行的
偏移量是 0,而不是 1。
rows 指定返回记录行的最大数目
1 select movieName 电影名 , filmLength 片长(分钟) from movie
2 order by filmLength
3 limit 0 , 5
5. 模糊查询
like 运算符:进行模式匹配查询
通配符:
n%:包含零个或多个字符的任意字符串。
n_(下划线):任意单个字符。
n[]:指定范围(如 [a-d])或集合([abcdef])中的任意单个 字符。
n[^]:不属于指定范围(如 [^a-d])或集合([^abcdef])中
的任意单个字符
1 例子:
2 select movieName 电影名 , filmLength 片长(分钟) from movie
3 where actors like % %
三、聚合函数和分组统计
1. 聚合函数
(1)概念:聚合函数是 SQL 基本函数,它对一组值执行计算,并返回单个值。
(2)聚合函数:
除了 count(*) 函数以外,聚合函数都会忽略空值。
  例子:
获取电影的数量、最长片长、最短片长和平均片长
2 select count ( * ) 数量 , max ( filmLength ) (分钟) 最长片长 ,
3   min ( filmLength ) 最短片长(分钟) , avg ( filmLength ) 平均片长(分钟)
4   from movie
select count ( director ) 导演信息不为空的电影数量 from movie
2. group by分组统计
(1)概念:group by 子句可以将数据划分到不同的组中,实现对记录的分组统计
(2)语法结构:
1 group by 字段列表 [ having 条件表达式 ]
2 例子:
3 select typeID 类型 ID , count ( * ) 数量 , avg ( filmLength ) 平均片长(分钟) ,
4 max ( ticketPrice ) 最高票价(元) from movie
5 where ticketPrice <= 100 ‐‐ 分组前过滤
6 group by typeId
7 having avg ( filmLength ) > 100 ‐‐ 对分组结果过滤
8 order by avg ( filmLength )
四、连接查询
1. 内连接查询
(1)概念:内连接也称为连接,它还可以被称为完全匹配连接。
内连接使用比较运算
比较每个表共有的列的值 。(what)
(2)语法结构:
1 select fieldlist from table1
2 [ inner ] join table2
3 on table1 . column1 = table2 . column2 ‐‐column1 column2 通常为主键和外键
2. 多表连接查询
(1)概念:
如果在 from 子句中,直接列出所有要连接的表,然后在 where 子句中指定连
接条件,此为简单多表查询。
简单多表连接查询是内连接查询的简单表现形式, 它与内连接查询的功能相同
(2)语法结构:
1 select fieldlist from table1 , table2 where table1 . column1 = table2 . column2
3. 外连接查询
(1)概念
外连接可以是 左外连接、右外连接或全连接 .(what) 在内连接查询中,只有满足连接条件的记录才能出现在查询结果中。但在实际应 用中,如果希望不满足连接条件的记录也在查询结果中出现,这时就需要使用外连接 查询。(why)
(2)左外连接(left join)
结果集包括 left join 子句中指定的 左表 的所有行,而不仅仅是连接列所匹配的 行。
如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择 列表列均为空值。
  例子:
‐‐ 需求
采用左外连接方式显示所有电影的相关信息,要求输出电影名、导演名、票价和类型
‐‐sql 语句
select movieName 电影名 , director 导演名 , ticketPrice 票价(元) , typeName
类型
from movie m
left join movie_type mt
on m . typeId = mt . id
(3)右外连接(right join)
右外连接是左外连接的反向连接,它返回 右表 的所有行。 如果右表的某行在左表中没有匹配行,则在相关联的结果集行中,表的所有选择 列表列均为空值。
  例子:
‐‐ 需求:
采用右外连接方式显示所有电影类型的相关信息,要求输出电影名、导演名、票价和类型。
‐‐sql 语句:
select movieName 电影名 , director 导演名 , ticketPrice 票价(元) , typeName
类型
5 from movie m right join movie_type mt on m . typeId = mt . id
(4)全连接(full join)
全连接返回左表和右表中的所有行。
当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。 MySQL 目前在语法上暂不支持全连接, 但可 以通过将左外连接和右外连接使用
union 进行连接来实现全连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机械学习—零基础学习日志(python编程)

零基础为了学人工智能&#xff0c;正在艰苦的学习 昨天给高等数学的学习按下暂停键&#xff0c;现在开始学习python编程。 我学习的思路是直接去阿里云的AI学习课堂里面学习。 整体感觉&#xff0c;阿里云的AI课堂还是有一些乱&#xff0c;早期课程和新出内容没有更新和归档…

进阶学习------linux运维读写执行权限

进阶学习------linux运维读写执行权限 在UNIX和类UNIX操作系统中&#xff0c;文件权限是通过一组特定的数字来表示的&#xff0c;这些数字分为三组&#xff0c;分别对应于用户&#xff08;文件所有者&#xff09;、组和其他用户的权限。每组权限由三个二进制位表示&#xff0c;…

如何进行硬件调试?

硬件调试是硬件系统设计、开发和制造过程中不可或缺的一环&#xff0c;旨在对可能出现的问题进行分析和解决。以下是进行硬件调试的一般步骤和方法&#xff1a; 一、准备阶段 熟悉设计文档&#xff1a;在开始调试之前&#xff0c;需要详细阅读和理解硬件系统的设计文档、原理图…

【探索数据结构与算法】——深入了解双向链表(图文详解)

目录 一、双向链表的基本概念 ​​​ 二、双向链表的结构 三、双向链表的基本操作实现方法 1.双向链表的初始化 2.双向链表的头插 3.双向链表的尾插 6.查找节点 7.在指定位置之前插入节点 8.删除指定位置节点 9.打印链表数据 10.双向链表销毁 四、完整代码实现 …

html+css+js网页设计 星享咖啡6个页面(带js) ui还原度90%

htmlcssjs网页设计 星享咖啡6个页面&#xff08;带js&#xff09; ui还原度90% 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等…

一个拳打Claude3.5 Artifacts 脚踢软件外包公司的国产AI神器

Claude3.5的Artifacts功能想必大家都有所耳闻吧。 不了解的小伙伴也没关系&#xff0c;看下面这个视频。 更详细的介绍可以看之前我写的文章 关于Claude3.5-Sonnet引以为傲的功能&#xff0c;在半年前就被某国产平台无情碾压的那档事&#xff01;_claude 3.5 sonnet 国内能用…

20240808在飞凌OK3588-C开发板上使用HDMI OUT接口的SONY索尼8530机芯的YUV模式录像

20240808在飞凌OK3588-C开发板上使用HDMI OUT接口的SONY索尼8530机芯的YUV模式录像 2024/8/8 15:26 v4l2-ctl --list-devices v4l2-ctl --list-formats-ext -d /dev/video8 v4l2-ctl -V -d /dev/video8 根据规格书《FCB-CR8550_8530_TM_20190730.pdf》&#xff0c;很容易知道8…

【秋招突围】2024届校招-拼多多笔试题-第一套

🍭 大家好这里是 大厂笔试突围,一起备战秋招笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🌻 听说本周PDD的笔…

elasticSearch和ik分词插件安装和使用

elasticSearch 特点&#xff1a;分布式搜索和分析引擎&#xff0c;可以用http以json的方式进行数据索引。 由来&#xff1a;ES全称Elastic Stack&#xff08;ELK Stack&#xff09;&#xff0c;是由三个产品elasticSearch&#xff0c;logstack&#xff08;数据收集&#xff0…

【新手必备】5分钟学会Transformer算法的核心要点

Transformer 是近年来在自然语言处理&#xff08;NLP&#xff09;领域取得显著成果的一种深度学习模型&#xff0c;最初由 Vaswani et al. 在 2017 年提出。 与传统的序列模型&#xff08;如 RNN 和 LSTM&#xff09;相比&#xff0c;Transformer 的主要优势在于其能够更好地处…

零基础5分钟上手亚马逊云科技AWS核心云架构知识-用S3桶托管静态网页

简介&#xff1a; 小李哥从今天开始将开启全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;让大家0基础5分钟通过这篇文章就能完全学会亚马逊云科技一个经典的服务开发架构。 我将每天介绍一个基于亚马逊云…

go之protobuf和grpc

一、Protobuf Protobuf是接口规范的描述语言&#xff0c;可以通过工具生成代码&#xff0c;将结构化数据序列化。 二、grpc gRPC 是 Google 公司基于 Protobuf 开发的跨语言的开源 RPC 框架。 三、使用教程 3.1 student.proto syntax "proto3"; import "go…

软件测试---接口测试

一、接口及接口测试概念 &#xff08;1&#xff09;接口的类型 &#xff08;2&#xff09;接口测试的概念 &#xff08;3&#xff09;接口测试的原理 &#xff08;4&#xff09;接口测试的特点 &#xff08;5&#xff09;接口测试的实现方式 二、HTTP协议 &#xff08;1&#…

【人工智能】AI时代程序员----是缔造AI程序员,还是AI缔造程序员?

是缔造AI程序员&#xff0c;还是AI缔造程序员&#xff1f; 前言 随着AIGC&#xff08;如ChatGPT、MidJourney、Claude等&#xff09;大语言模型的涌现&#xff0c;AI辅助编程工具日益普及&#xff0c;程序员的工作方式正在发生深刻变革。 ​ ChatGPT ​ Midjourney ​ Claude …

【免费测试】人脸身份证比对接口如何用Java对接?(一)

一、什么是人脸身份证比对&#xff1f; 人脸身份证比对又称人证比对&#xff0c;实人比对&#xff0c;人像比对&#xff0c;输入姓名、身份证号码和头像照片&#xff0c;与公安库身份证头像进行权威比对&#xff0c;返回分值作为判断依据。 二、人脸身份证比对接口适用哪些场…

Processing之函数

一.函数基础 函数是processing程序中最基本的结构。经常使用的函数有draw()、line()、size()等。计算机每次运行程序的一行。当一个函数运行时&#xff0c;计算机跳到函数定义的位置&#xff0c;运行到哪里的代码&#xff0c;然后在跳回它离开的位置。 1.1掷骰子 案例代码如图…

离线安装windows应用商店中的应用

以windows notepad为例 1.百度windows应用商店&#xff0c;notepad 进入https://apps.microsoft.com/detail/9msmlrh6lzf3?hlen-aq&glAQ 是一个名为windows notepad的应用&#xff0c;复制地址栏里面detail后面的字符9msmlrh6lzf3 有很多notepad类似的应用&#xff0c;wi…

2024年新能源汽车充电桩建设驶入快车道

2024年新能源汽车市场大爆发&#xff1a;渗透率飙升&#xff0c;保有量创新高&#xff0c;充电桩建设驶入快车道 随着2024年新能源汽车市场的持续繁荣&#xff0c;一场前所未有的绿色革命正在全球范围内加速推进。这一年&#xff0c;新能源汽车的渗透率不仅实现了质的飞跃&…

CSS 实现两边固定宽,中间自适应

0. **Flexbox 实现**&#xff1a; css复制代码.container { display: flex; } ​ .fixed { width: 200px; /* 两边固定宽度 */ } ​ .flexible { flex: 1; /* 中间自适应 */ } html复制代码<div class…

指纹失效,忘记iPhone屏幕解锁密码怎么应对?

为保证手机的安全及隐私&#xff0c;我们会给手机设置屏幕锁屏密码&#xff0c;通过输入设置密码来解锁手机屏幕锁&#xff0c;但为了给大家提供快速便捷的解锁方式&#xff0c;苹果公司提供了指纹解锁&#xff0c;不仅解锁更便捷了还极大地增强了设备的安全性。但有时我们手指…