Loading... ## 前言 这篇文章主要是介绍数据库的基础查询相关操作,适合没有任何数据库操作基础的人员查阅。如果您有相关的数据库开发经验,那这篇文章将对您没有任何帮助。 ## 查询语法 ```sql SELECT [TOP N [PERCENT]] <列名> FROM <表名> -- TOP N 表示取前面N条数据,PERCENT表示取前面N%的数据(百分百) [WHERE <查询条件表达式>] [GROUP BY <分组的列名> [HAVING <分组后的数据查询条件表达式>]] --HAVING表达式需要和分组一同使用 [ORDER BY <排序的列名> [ASC或DESC]] -- 默认排序为升序ASC --ORDER BY只能出现在查询语句的末尾 ``` ### 演示案例 #### 原始表结构 ![原始表结构](https://www.jbea.cn/usr/uploads/2023/09/2323547493.png) #### 查询所有列数据 执行SQL语句: `SELECT * FROM Student` 查询结果: ![查询所有列数据的执行结果](https://www.jbea.cn/usr/uploads/2023/09/1022701204.png) #### 查询部分列 执行SQL语句:`SELECT StudentNo,StudentName,Email,BornDate FROM Student` 执行结果: ![查询部分列的执行结果](https://www.jbea.cn/usr/uploads/2023/09/2545980835.png) #### 查询中使用别名 执行SQL语句: ```sql SELECT S.StudentNo AS '学号', --使用AS关键字的形式 S.StudentName '学生姓名', --使用空格的形式 '邮箱' = S.Email, --使用等于("=")符号的形式 S.BornDate --可以使用表别名.列名的形式访问对应表的列 FROM Student S --表别名,在单表查询模式中不推荐使用,在多表连接查询中使用频率较高 ``` 执行结果: ![查询中使用别名查询结果](https://www.jbea.cn/usr/uploads/2023/09/2863609795.png) ### SQL中的运算符 #### 算术运算符 | 运算符 | 说 明 | | ------ | ------------------------------------------------------------------------------------------------------------ | | + | 加运算,求两个数或表达式相加的和。<br />例如:SELECT 1+2,返回:3 | | - | 减运算,求两个数或表达式相减的差。<br />例如:SELECT 2-1,返回:1 | | * | 乘运算,求两个数或表达式相乘的积。<br />例如:SELECT 2*2,返回:4 | | / | 除运算,求两个数或表达式相除的商。<br />例如:<br />SELECT 5/5,返回:1;<br />SELECT 5.7/3,返回:1.900000 | | % | 取模运算,求两个数或表达式相除的余数,<br />例如:SELECT 5%3,返回:2 | 演示案例: ```sql -- 为查询结果添加新列 “折扣后价格”,结合算术运算符实现图书价格8折计算 SELECT Name AS 图书名称, Price AS 价格, Author AS 作者, Price * 0.8 AS 折扣后价格 -- 实现图书价格8折计算 FROM BookInfo ``` #### 比较运算符 | 运算符 | 说 明 | | ------ | ----------------------- | | = | 等于,例如:age=23 | | > | 大于,例如:price>100 | | < | 小于 | | <> | 不等于 | | >= | 大于等于 | | <= | 小于等于 | | != | 不等于(非SQL-92标准 ) | 演示案例: ```sql SELECT Name AS 图书名称, Price AS 价格, Author AS 作者 FROM BookInfo WHERE Price < 100 -- 查询出图书价格低于100元的图书信息 ``` #### 赋值运算符 | 运算符 | 说 明 | | ------ | ----------------------------------------------------- | | = | 把一个数或变量或表达式赋值给另一变量,如:Name='王华' | #### 逻辑运算符 | 运算符 | 说 明 | | ------- | ------------------------------------------------------ | | AND | 当且仅当两个布尔表达式都为true时,返回TRUE | | OR | 当且仅当两个布尔表达式都为false,返回FALSE | | NOT | 对布尔表达式的值取反,优先级别最高 | | IS NULL | 把某个值与NULL值进行比较,当表达式值为NULL时,返回TRUE | 演示案例: ```sql SELECT Name AS 图书名称, Price AS 价格, Author AS 作者 FROM BookInfo WHERE Name = 'C#高级' AND Author = '克里斯琴•内格尔' -- 多个查询条件 ``` ### 查询语句中的排序 使用ORDER BY子句对查询后的结果集按指定列进行排序,支持多列排序 * ASC升序(默认) * DESC降序 ### 系统函数 #### 日期函数-用于操作日期值 | 函数名称 | 说明 | 示例 | | ---------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | 📌DATEADD | 将指定的数值添加到指定的日期部分后的日期 | SELECT DATEADD(dd,3,'2021-03-01')<br />返回:以当前数据库的日期格式返回2021-03-04 | | 📌DATEDIFF | 两个日期之间的指定日期部分的间隔 | SELECT DATEDIFF(dd, '2021-03-01', '2021-03-04')<br />返回:3 | | 📌GETDATE | 取得当前系统的时间和日期 | SELECT GETDATE()<br />返回:2021-03-16 15:22:47.087 | | DATENAME | 日期中指定日期部分的字符串形式 | SELECT DATENAME(dw, '2021-03-01')<br />返回:星期一 | | DATEPART | 日期中指定日期部分的整数形式 | SELECT DATEPART(day, '2021-03-10')<br />返回:10 | | DAY | 取得指定日期中的天的整数 | SELECT DAY(GETDATE())<br />返回:今天的日期中天的整数<br />例如:GETDATE()为2021-2-25 12:00:00.000,则DAY()返回25 | | MONTH | 取得指定日期中的月份的整数 | SELECT MONTH (GETDATE())<br />返回:今天的日期中月份的整数<br />例如:GETDATE()为2021-2-25 12:00:00.000,则MONTH()返回2 | | YEAR | 取得指定日期中的年份的整数 | SELECT YEAR (GETDATE())<br />返回:今天的日期中年份的整数<br />例如:GETDATE()为2021-2-25 12:00:00.000,则YEAR()返回2021 | 日期部分参数简写说明对照表 | 日期部分参数 | 缩写 | 日期部分参数 | 缩写 | | ------------ | -------- | ------------- | ----- | | 📌year | yy, yyyy | weekday | dw, w | | quarter | qq, q | 📌hour | hh | | 📌month | mm, m | 📌minute | mi, n | | dayofyear | dy, y | 📌second | ss, s | | 📌day | dd, d | 📌millisecond | ms | | week | wk,ww | | | #### 数学函数-用于对数值进行代数运算 | 函数名称 | 说明 | 示例 | | --------- | ------------------------------------------------ | ----------------------------------------- | | 📌RAND | 返回从0到1之间的随机float值,不包括0和1 | SELECT RAND()<br />返回:0.79288062146374 | | ABS | 取数值表达式的绝对值 | SELECT ABS(-43)<br />返回:43 | | 📌CEILING | 向上取整,取大于或等于指定数值、表达式的最小整数 | SELECT CEILING(43.5)<br />返回:44 | | 📌FLOOR | 向下取整,取小于或等于指定表达式的最大整数 | SELECT FLOOR(43.5)<br />返回:43 | | POWER | 取数值表达式的幂值 | SELECT POWER(5,2)<br />返回:25 | | 📌ROUND | 将数值表达式四舍五入为指定精度 | SELECT ROUND(43.543,1)<br />返回:43.500 | | SIGN | 对于正数返回+1,对于负数返回-1,对于0则返回0 | SELECT SIGN(-43)<br />返回:-1 | | SQRT | 取浮点表达式的平方根 | SELECT SQRT(9)<br />返回:3 | | PI | 返回值为圆周率 | SELECT PI()<br />返回:3.14159263589979 | #### 系统函数-获取有关SQL Server中对象和设置的系统信息 | 函数名称 | 说明 | 示例 | | ------------ | ------------------------------ | -------------------------------------------------------- | | 📌CONVERT | 用来转变数据类型 | SELECT CONVERT (VARCHAR(5),12345)<br />返回:字符串12345 | | CURRENT_USER | 返回当前用户的名称 | SELECT CURRENT_USER<br />返回:你登录的用户名 | | DATALENGTH | 返回指定表达式的字节数 | SELECT DATALENGTH ('C#高级')<br />返回:6 | | HOST_NAME | 返回当前用户所登录的计算机名称 | SELECT HOST_NAME()<br />返回:你所登录的计算机的名称 | | SYSTEM_USER | 返回当前所登录的用户名称 | SELECT SYSTEM_USER<br />返回:你当前所登录的用户名 | | USER_NAME | 从给定的用户ID返回用户名 | SELECT USER_NAME(1)<br />返回:从任意数据库中返回“dbo” | #### 字符串函数-用于控制返回给用户的字符串 | 函数名称 | 说明 | 示例 | | ----------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------- | | CHARINDEX | 用来寻找一个指定的字符串在另一个字符串中的起始位置 | SELECT CHARINDEX('NAME','MynameisTom',1 )<br />返回:4 | | 📌SUBSTRING | 从字符串的制定位置截取制定长度的字符串 | SELECT SUBSTRING('Hello word',2,2)<br />返回:el | | 📌LEN | 返回传递给它的字符串长度 | SELECT LEN('SQL Server高级编程')<br />返回:14 | | UPPER | 把传递给它的字符串转换为大写 | SELECT UPPER('sqlserver高级编程')<br />返回:SQL SERVER高级编程 | | LTRIM | 清除字符左边的空格 | SELECT LTRIM (' 李智 ')<br />返回:李智 (后面的空格保留) | | RTRIM | 清除字符右边的空格 | SELECT RTRIM (' 李智 ')<br />返回: 李智(前面的空格保留) | | 📌RIGHT | 从字符串右边返回指定数目的字符 | SELECT RIGHT('克里斯琴•内格尔',3)<br />返回:内格尔 | | LEFT | 从字符串左边返回指定数目的字符 | SELECT RIGHT('克里斯琴•内格尔',4)<br />返回:克里斯琴 | | 📌REPLACE | 替换一个字符串中的字符 | SELESELECT REPLACE('克里斯琴','克','莫')<br />返回:莫里斯琴 | | 📌STUFF | 在一个字符串中,删除指定长度的字符,并在该位置插入一个新的字符串 | SELECT STUFF('hello world', 2, 3, '我的世界我做主')<br />返回:h我的世界我做主o world | ## 总结 ![笔记总结](https://www.jbea.cn/usr/uploads/2023/09/629012482.png) 最后修改:2023 年 09 月 25 日 © 允许规范转载 赞 都滑到这里了,不点赞再走!?
1 条评论
博主太厉害了!