推广 热搜: 行业  设备    系统  参数  经纪    教师  机械  中国 

SQL语法

   日期:2024-11-19     作者:xasic    caijiyuan   评论:0    移动:http://mip.xhstdz.com/news/7227.html
核心提示:关键字和函数名称通常不区分大小写,但保持一致的编码风格有助于提高代码的可读性和跨系统兼容性字段名通常不需要引号。如
  • 关键字和函数名称通常不区分大小写,但保持一致的编码风格有助于提高代码的可读性和跨系统兼容性
  • 字段名通常不需要引号。如果字段名包含空格、特殊字符,或者是 SQL 保留字,需要用反引或双引号包围

选择数据库

  • 在进行表操作之前,确保已经切换到了正确的数据库。
    • 例如,切换到 数据库
       

分割

  • 字段之间使用逗号 分隔。
  • 多条 SQL 语句之间使用分号 分隔。

注释


SQL语法

创建数据库之前需要在相应盘符建立文件夹

创建educ数据库

 

逻辑名称,大小,最大容量,每次增长,存储位置及物理名称

on 定义数据文件 primary 指定主文件,若没有关键字 则命令中第一个文件将成为主文件

创建test数据库

filegroup的上一行末尾需要加 “,”

 

新增文件

如若新增的数据文件需要添加到fg组中,则需先创建fg组

 

移除文件/文件组

,移除组之前要清空组中的所有文件

 

修改文件

,只可小改大,不可大改小

 

修改数据库名

 

可能出现的报错

“无法用排他锁锁定数据库”

重命名数据库时提示 “无法用排他锁锁定数据库” 右键想要重命名的数据库–属性–选项–限制访问选择–单用户模式


类型用途int整型bigint整形float浮点型double浮点型decimal浮点型 可指定总的数字位数(精度)和小数点后的位数(标度)datetime日期类型(data是日期 time是时间)timestamp日期类型(可存储时间戳)char定长字符(存储不满则补空格)varchar不定长字符text大文本,存储长的字符内容blob字节数据类型,存储图片、音频等文件

一个汉字占两个字符,即char(2)


在标准的 SQL 语句中,如果字段名在所有涉及的表中都是唯一的,那么可以不用指定表名。 但如果存在同名字段或为了提高可读性,最佳做法是指定字段所属的表名。

 

约束和属性都是可选的 存在则不创建

约束

  • PRIMARY KEY:主键约束。用于唯一标识表中的每一行。一个表只能有一个主键,主键字段的值必须是唯一的,且不能为NULL。
  • FOREIGN KEY:外键约束。用于建立两个表之间的关系。外键字段的值必须是另一个表的主键字段的值,或者是NULL。
  • UNIQUE:唯一性约束。保证某一列的每行都必须有唯一的值。与主键不同,唯一约束允许有NULL值。
  • NOT NULL:非空约束。确保某一列不能有NULL值。
  • CHECK:检查约束。用于确保某一列中的值满足特定条件。例如,可以用CHECK约束来确保年龄字段的值不小于18。
  • DEFAULT:默认值约束。用于在未指定值的情况下为列提供默认值。

属性

  • AUTO_INCREMENT: 用于在插入新记录时自动递增字段的值,用于自动生成唯一的标识符
  • COMMENT: 用于为字段或表添加描述性文本,不影响字段的功能或数据库的操作

编码(字符集

编码或字符集决定了表中存储的字符串数据如何被表示和存储。常见的字符集包括

  • UTF-8:这是最常用的字符集,支持多种语言,包括英语、中文、日文等。它对于国际化的应用是一个很好的选择。
  • Latin1:这是MySQL的默认字符集,也称为ISO-8859-1,主要用于西欧语言。

存储引擎

存储引擎决定了MySQL如何存储和处理表中的数据。不同的存储引擎提供不同的功能,如事务处理、全文索引等。常见的存储引擎包括

  • InnoDB:这是MySQL的默认存储引擎,支持事务处理、外键等。适合大多数应用场景。
  • MyISAM:这是早期的默认存储引擎,不支持事务处理,读取速度较快,但在并发写入时性能较差。

创建stu表

 

创建cj表

 

创建websites表

 

可能出现的错误

创建表后在最左侧对象资源管理器中看不到

点击有修改更新的数据库后,点击刷新,再展开就可以看到了

无法保存更改后的表设计视图

工具菜单 – 选项 – Designers(设计器) – 阻止保存要求重新创建表的更改 – 取消勾选

更改编辑前n行数据

工具菜单 – 选项 – SQL Server对象资源管理器 – 命令 – “表和视图选项” – 选择前’行命令的值

增加不了约束,发生冲突

可能因为表中对应字段有数据 把相关数据表的数据删除掉,再执行添加约束语句 https://blog.csdn.net/weixin_46218781/article/details/105934703


字段数量和值数量要保持一致,不写字段默认即全部字段

 

向stu表中添加数据

 

向websites表中添加数据

 

添加数据练习

假定有一个cj表格 使用insert向其中指定字段添加内容 再使用insert select将cj中查找到的制定内容插入到新建的bk表中

向 cj 表中添加内容

 

创建 bk 表格

 

insert…select 查询查找

不用括号

 

删除表

 

以防表格不存在

 

删除表格中数据

 

删除test表中一条数据

 

清空表格所有数据

 

命令

用于修改表中的现有数据。

  • 基本用法
     
  • 示例
     

命令

用于修改表的结构,包括列操作和约束操作。

列操作
  • 删除列
     
  • 添加列
     
  • 修改列类型
     
约束操作
  • 添加主键
     
  • 添加唯一约束
     
  • 添加默认值
     
  • 添加检查约束
     
  • 删除约束
     

  • :用于代替任意数量的字符,主要用于子句中。
  • :在某些数据库系统中,用于代替单个字符,但在标准SQL中使用来匹配单个字符。

table的数据来源可以是select的子查询

有两个结构相同的表stu、jaj stu有数据,而jaj无数据

jaj表结构

 

拷贝数据到 jaj 表中

 
 

查询基本操作

  • 投影查询(SELECT子句:选择特定的列。
    • 列函数:, , , ,
  • 保存查询(INTO子句:将查询结果保存到新表。
  • 连接查询(FROM子句:结合多个表的数据。
  • 选择查询(WHERe子句:基于条件筛选数据。
  • 分组查询(GROUP BY子句:根据指定列对数据进行分组。
  • 限定查询(HAVINg子句:对分组后的结果进行条件过滤。
  • 排序查询(ORDER BY子句:根据一个或多个列对结果排序。

SQL运算符

  • 关系运算符:, , , , , 用于条件比较。
  • 逻辑运算符:, , 用于组合条件。
  • 范围运算符: 用于指定值的范围。
  • 模式匹配运算符: 用于字符串模式匹配。
  • 列表运算符: 用于比较一组值。
  • 空值判断符: 用于检查空值。
  • 非空判断

注意事项

  • 表和字段的引用:使用来引用特定表的字段,字段之间用逗号分隔。
  • 零值与空值:在SQL中,不是空值)。
  • 函数中的字段引用:在函数中使用字段时,通常不需要指定表名,除非在JOIN操作中引用多个表的同名字段。

select练习

查询全部字段
 

实际开发中尽量少使用 这样的操作

查询单一字段

从student中查询sex字段

 
去除重复项

从student中查询sex,去除重复项

 
显示前n条数据
 
更改查询结果字段名

使用AS关键字或直接空格来为查询结果的字段指定别名

 

通过学分计算出学时,并生成单独的字段并命名为学时

 
连接查询

两张及以上不同的表进行查询时,需要连接。连接可以使用WHERe或FROM子句实现。

使用where进行连接
 
使用from进行连接
 
where 过滤

where子句用于过滤记录,支持逻辑表达式

查询性别为女,专业为计算机的学生

 
group by 分组

当SELECt中包含多个字段和聚合函数时,且需要使用GROUP BY时,除聚合函数外的所有字段都应放在GROUP BY子句中。

按姓名分组统计人数

 
order by 排序

  • asc 升序 默认
  • dese 降序

order必须放在group by后面

 

可以多依据排序,先根据总分降序再根据学号升序

 
having 过滤

用于在分组查询中设置条件

  1. 应用时机不同: 子句在数据分组之前应用,即它过滤的是原始数据。而 子句在数据分组和聚合之后应用,即它过滤的是分组后的聚合结果
  2. 用途不同: 子句用于过滤原始数据集中的行,而 子句用于过滤基于聚合函数(如 , , 等)的结果
 
into 生成

使用查询结果生成新表

 

运算符

between…and

用于选择介于两个值之间的数据范围(包括边界值

 
like
 
in

在 WHERe 子句中指定一个值列表,然后选择列表中任何一个值匹配的行

 

等价于

is null

在进行空判断或者非空判断的时候要注意,任何和null比较的值返回的都是false,所以使用 和 而不用 或

 

聚合字段

计数、最大、最小、求和、平均

总人数、最高分、最低分、总分、平均分

 
count()

用于统计行数或非 NULL 值的数量

  • 当用 时,它只计算该字段中非 NULL 的行数。
  • 使用 时,它会计算表中的所有行数,无论字段值是否为 NULL。

按专业分组,统计不同专业人数

 

如果 是主键或者不包含 NULL 值,那么 和 的结果将相同

统计性别为男的总人数

 
avg()

计算每个专业的平均总分

 

计算每个学生的平均分数

 
year()

通过出生日期字段,查询出年龄字段

 
 

sum()

统计不同人的总分

 

其中from与where做的连接 可以替换为只用from做连接,不写where


类型

  • 唯一索引:确保索引列的每行数据都是唯一的。主键自动成为唯一索引。
  • 聚集索引:物理改变表中数据的存储顺序,以索引的顺序存储。一个表只能有一个聚集索引。
  • 非聚集索引:逻辑改变数据的存储顺序,创建一个单独的数据结构来存储索引信息。

建立索引

  • 创建非聚集索引
     
  • 示例 假设有一个stu表,并想加快基于student_id列的搜索速度,可以创建如下索引
     
  • 建立一个不唯一非聚集的索引
     

删除索引

  • 删除索引
     

注意事项

  • 主键和唯一索引:主键自动创建唯一索引,但唯一索引不一定是主键。
  • 索引选择:选择合适的列进行索引,一般是经常用于查询条件的列。
  • 性能和存储:索引虽然提高查询效率,但会增加存储空间需求并可能降低写操作的性能。

  • 常量:字符型常量需要使用单引号括起来,例如:‘abc’,‘123’,‘2*6’。`
  • 常量: 是小数型常量,例如: 表示999.99。`
  • 常量: 表示布尔型或逻辑型常量,只能是0或1。
  • 开头: 局部变量或函数的参数
  • 开头: 全局变量
  • 开头: 临时表或是个存储过程
  • 开头: 全局的临时数据库对象

变量创建

定义单个变量

同时定义多个

声明变量可以赋初始值

声明变量不可赋值,可以同时定义多个,没有赋值时默认为Null

access中使用dim 定义变量,默认值是0

变量赋值

可以对多个变量赋值,可以对来源于数据表的数据进行赋值

 
 
 

使用select输出是表格形式

使用print输出只输出数据

 

getDATE 当前日期

 

DATENAME 显示日期格式

 

DATADD相加 DATEIFF相减

 

获取出生日期

 

直接显示ASIIC码对应的值

 

查看某一个人的分数

 
 

一整句的select可以改成两句

select @n=sname from where sname=‘梁艾琳’ select @s=score from student inner join cj on student.SID=cj.SID where=‘梁艾琳’

一个declare可以直接定义多个变量

declare @s nvarchar(255) declare @n char(6)

 
 

数据 数据库中存储的基本对象

数据库(DB 长期储存在计算机内有组织、可共享的大量数据集合

数据库管理员(DBA) 管理操作数据库人员

数据库管理系统(DBMS 是管理和维护数据库的软件,如MySQL、MariaDB、PostgreSQL、Oracle、SQL Server 等

数据库系统(DBS 实现有组织的、动态地存储大量关联数据、方便多用户访问的计算机软件、硬件和数据资源组成的系统,由数据库DB、数据库管理系统DBMS、计算机系统(硬件、软件平台、人DBA)

原文链接:https://blog.csdn.net/a1097304791/article/details/115006567

目前还分不清为什么Mysql体量那么大,目前用的是MariaDB

下载

MariaDB官网下载 版本选最新,有三种选项

  • MariaDB Server: 数据库服务器的完整安装包。
  • MariaDB Server Repositories: 指向各种Linux发行版的软件仓库
  • Connectors: MariaDB的连接器,用于从不同的编程语言和环境连接到现有的MariaDB数据库。

安装 无脑下一步 设置编码格式为UTF-8,管理员密码可以是root或123456

null和任何值比较都为false

好的,下面是删除数据库、查看已有数据库以及导入数据库的命令,以及每个命令执行后的预期结果。

删除数据库

删除数据库
  1. 登录到 MySQL

     
  2. 删除数据库

     

预期结果:如果命令成功执行,会看到以下结果

 

查看已有数据库

查看所有数据库
  1. 登录到 MySQL

     
  2. 显示所有数据库

     

预期结果:列出所有数据库,例如

 

导入数据库

导入数据库
  1. 确保数据库已经创建(如果尚未创建,可以先创建数据库

     

预期结果:如果命令成功执行,会看到以下结果

 
  1. 退出 MySQL 命令行

     
  2. 在命令行中导入数据库

     

预期结果:成功导入后,提示符返回到命令行,并没有错误信息。

结合这些命令的完整操作流程

  1. 登录到 MySQL

     
  2. 查看已有数据库

     
  3. 删除现有数据库(如果需要

     
  4. 创建新的空数据库

     
  5. 退出 MySQL 命令行

     
  6. 在命令行中导入数据库

     
本文地址:http://sjzytwl.xhstdz.com/news/7227.html    物流园资讯网 http://sjzytwl.xhstdz.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新文章
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新文章
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号