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

SQL:数据库查询语言的核心技术

SQL:数据库查询语言的核心技术

一、SQL 基础概念
  1. 定义与发展历程

    • 结构化查询语言(Structured Query Language)
    • 从 1970 年代 IBM 研发到 ANSI 标准化

核心功能分类

  • 数据定义语言(DDL):CREATE, ALTER, DROP
  • 数据操作语言(DML):INSERT, UPDATE, DELETE
  • 数据查询语言(DQL):SELECT
  • 数据控制语言(DCL):GRANT, REVOKE

命令

INSERT INTO [dbo].[葛大侠公司]
([姓名]
,[性别]
,[籍贯]
,[出生日期]
,[身份证号码]
,[工资]
,[电话号码]
,[职位]
,[备注])
VALUES
(<姓名, nvarchar(50),>
,<性别, nvarchar(50),>
,<籍贯, nvarchar(50),>
,<出生日期, nvarchar(50),>
,<身份证号码, varchar(50),>
,<工资, money,>
,<电话号码, nvarchar(11),>
,<职位, nvarchar(50),>
,<备注, nvarchar(2000),>)
GO
新建表

USE [sjh]
GO
###############################################################################
SELECT [编号]
,[姓名]
,[性别]
,[籍贯]
,[出生日期]
,[身份证号码]
,[工资]
,[电话号码]
,[职位]
,[备注]
FROM [dbo].[青大侠公司]

GO
查询
###############################################################################
UPDATE [dbo].[青大侠公司]
SET [姓名] = <姓名, nvarchar(50),>
,[性别] = <性别, nvarchar(50),>
,[籍贯] = <籍贯, nvarchar(50),>
,[出生日期] = <出生日期, nvarchar(50),>
,[身份证号码] = <身份证号码, varchar(50),>
,[工资] = <工资, money,>
,[电话号码] = <电话号码, nvarchar(11),>
,[职位] = <职位, nvarchar(50),>
,[备注] = <备注, nvarchar(2000),>
WHERE <搜索条件,,>
GO
修改
###############################################################################

SELECT *  
FROM  [dbo].[青大侠公司]
where   姓名 like '李%'  AND   [工资]   >= 10000
查询公司里所有姓*的并且工资高于10000的人员的姓名
###############################################################################

UPDATE [dbo].[青大侠公司]
SET [工资]= 6000
WHERE [性别]= '女'
GO
将所有女员工的工资调整到6000

###############################################################################
UPDATE [dbo].[青大侠公司]
SET [职位]= 'java工程师'
WHERE [姓名]= '张泽宇'
GO
将张泽宇的职位调整为java工程师

###############################################################################
SELECT [工资],[姓名]
FROM [dbo].[青大侠公司]
WHERE [身份证号码] LIKE '42%'
查询身份证号前两位为42的员工的姓名和工资

SELECT*
FROM [dbo].[青大侠公司]

GO
查询所有列
###############################################################################
SELECT [姓名],[职位],[工资]
FROM [dbo].[青大侠公司]

GO
查询特定列

###############################################################################

SELECT [姓名]
FROM [dbo].[青大侠公司]
WHERE [职位]= 'java工程师'
GO
条件查询
###############################################################################
SELECT*
FROM [dbo].[青大侠公司]
WHERE [工资]
BETWEEN 8000 AND 100000

GO
查询表中工资 8000到 100000
###############################################################################

SELECT*
FROM [dbo].[青大侠公司]
WHERE [工资]<10000   OR  [工资]>15000


查询表中工资低于10000或高于15000
###############################################################################

SELECT*
FROM [dbo].[青大侠公司]
WHERE [工资] IN (6000,10000,40000)

GO
查询表中工资等于 6000 10000 40000的
###############################################################################
SELECT*
FROM [dbo].[青大侠公司]
WHERE [身份证号码]LIKE '42%'
GO
查询身份证号42开头的
###############################################################################
SELECT*
FROM [dbo].[青大侠公司]
WHERE [姓名] LIKE '张%'AND [职位]= 'java工程师'
GO
查询表中姓张的java工程师
###############################################################################
SELECT*
FROM [dbo].[青大侠公司]
WHERE [备注] is not NULL
GO
查询表中填有备注的列

###############################################################################
SELECT TOP 5 *
FROM [dbo].[青大侠公司]
GO
查询前五行查询数据
###############################################################################
SELECT [姓名] AS nama,[身份证号码] AS idcard 
FROM [dbo].[青大侠公司]
GO
改变查询结果名称
###############################################################################
SELECT*
FROM [dbo].[青大侠公司]
ORDER BY [工资] DESC

  GO

SELECT*
FROM [dbo].[青大侠公司]
ORDER BY [工资] ASC

  GO

查询结果排序
注:ASC表示降序  DESC表示升序


###############################################################################
SELECT DISTINCT [职位]
FROM [dbo].[青大侠公司]
GO
查询结果去重
###############################################################################
SELECT [姓名] AS name,[身份证号码],[职位],[工资]
FROM [dbo].[青大侠公司]
WHERE [身份证号码] LIKE '__0%'  AND 职位 != '总经理'
ORDER BY 工资 DESC
GO

综合查询
###############################################################################
SELECT[姓名],[身份证号码],[职位] INTO [副公司]
FROM [dbo].[青大侠公司]
使用SELECT生成新数据
###############################################################################
INSERT INTO 极速 (姓名,职位,出生日期)
SELECT [姓名],[职位],[出生日期]
FROM [dbo].[葛大侠公司]  
WHERE [工资]>=15000
GO
INSERT使用SEELECT
###############################################################################
INSERT INTO TOC (姓名,职位,出生日期)
SELECT '大傻','经理','1988/11/11' UNION
SELECT '2傻','经理','1988/11/11'  UNION
SELECT 姓名,职位,出生日期
FROM [dbo].[青大侠公司]
GO
使用UNION关键字
###############################################################################
SELECT'运维'+[姓名]+'的基本工资是:'+ CAST(工资 as varchar (10))+'元'
FROM [dbo].[青大侠公司]
WHERE [职位]='运维'
GO
查询表中运维的姓名和工资和时间
###############################################################################
SELECT DATEADD (DD,10,GETDATE()) 
查询10天之后的日期和时间
###############################################################################
SELECT [姓名],DATEDIFF (YYYY,出生日期, GETDATE()) AS 年龄 
FROM [dbo].[青大侠公司]
查询表中所有人的年龄和姓名
YYYY-MM-DD 年-月-日
HH-MM-SS 时-分-秒
###############################################################################
SELECT [姓名],DATENAME (YYYY,出生日期) AS 出生年份
FROM [dbo].[青大侠公司]
WHERE 出生日期 BETWEEN    '1990-01-01' AND '1999-12-31' 
查看表中90后员工姓名和出生年份
###############################################################################
SELECT SUM (工资) AS 总工资 
FROM [dbo].[青大侠公司]
查询表里总工资
###############################################################################
SELECT MAX (工资) AS 最高工资,MIN (工资) AS 最低工资
FROM [dbo].[青大侠公司]
查询表中最低工资和最低的工资
###############################################################################
SELECT COUNT (*) AS 总行数
FROM [dbo].[青大侠公司]
查询表中总行数
###############################################################################
SELECT COUNT (出生日期) AS'90后人数'
FROM [dbo].[青大侠公司]
WHERE [出生日期]>='1990-01-01'
查询表中90后员工人数
###############################################################################
SELECT [职位], AVG(工资) AS 职务平均工资 
FROM [dbo].[青大侠公司]
GROUP BY [职位]
查询表中每个职位的基本工资
###############################################################################
SELECT [职位], AVG(工资) AS 职务平均工资 
FROM [dbo].[青大侠公司]
GROUP BY [职位]
HAVING AVG(工资)<10000
查询表中职务平均小于10000的
###############################################################################
SELECT [职位], AVG(工资) AS 职务平均工资 
FROM [dbo].[青大侠公司]
WHERE [姓名]!='刘婉清'
GROUP BY [职位]
HAVING AVG(工资)<10000
查询表中职务平均小于10000的 把刘琬清排除在外
###############################################################################
SELECT 姓名,出生日期,DATEDIFF(YYYY,出生日期,GETDATE()) AS 年龄,DATEDIFF(DD,GETDATE(),DATEADD(YYYY,30,出生日期))AS 距离30岁天数
FROM [dbo].[青大侠公司]
WHERE DATEDIFF(YYYY,出生日期,GETDATE())<=30
ORDER BY 出生日期
查询表中未满30岁的员工年龄 并计算距离30岁天有多少天
###############################################################################
SELECT'员工'+[姓名]+'的生日'+CONVERT(varchar(10),出生日期,111)+',现在的年龄是'+CAST(DATEDIFF(YYYY,出生日期,GETDATE()) AS varchar(10))+'岁'
+'距离30岁生日还有'+ CAST(DATEDIFF (DD,GETDATE(),DATEADD (YYYY,30,出生日期)) AS varchar(10))+'天'
FROM [dbo].[青大侠公司]
WHERE DATEDIFF  (YYYY,出生日期,GETDATE()) <=30
ORDER BY 出生日期
查询表中未满30岁的员工年龄 并计算距离30岁天有多少天
##############################################################################
--内#联接
select  A.姓名,A.学校,B.姓名,B.职业  
from  A,B 
where  A.姓名=B.姓名
--或者
select  A.姓名,A.学校,B.姓名,B.职业  
from  A  inner   join   B  on  A.姓名=B.姓名
###############################################################################
--外联接

--左外联接
select  A.姓名,A.学校,B.姓名,B.职业
from  A  left   join  B  on  A.姓名=B.姓名

--右外联接
select  A.姓名,A.学校,B.姓名,B.职业
from  A  right join B  on   A.姓名=B.姓名

--完整外联接
select  A.姓名,A.学校,B.姓名,B.职业
from  A  full  join   B   on  A.姓名=B.姓名
###############################################################################

提醒 写的时候要记得检查标点符号和大小写

http://www.dtcms.com/a/274827.html

相关文章:

  • 无人设备遥控器之通信控制技术篇
  • Responsetype blob会把接口接收的二进制文件转换成blob格式
  • C++编程基础
  • 飞算JavaAI:给Java开发装上“智能引擎”的超级助手
  • 自我提升目录
  • MySQL内置函数(8)
  • [1-03-02].第06节:常用命令 - 文件操作命令
  • 2025年主流数据库连接池推荐:从原理到场景的深度解析
  • 【Python练习】037. 编写一个函数,实现二分查找算法
  • 你见过的最差的程序员是怎样的?
  • VOB如何转换成MP4格式?3种快速转换教程推荐
  • (LeetCode 面试经典 150 题 ) 15. 三数之和 (排序+双指针)
  • UML 图类型全解析:结构图与行为图分类详解
  • 拼多多电商运营技巧---补坑产经验
  • 软件测试(白盒测试)
  • 用FunctionCall实现文件解析(二):创建单例客户端
  • 2025亚太中文赛项 B题疾病的预测与大数据分析保姆级教程思路分析
  • JVM方法区的运行时常量区到底存储哪些数据?
  • 【南金研CAN数采仪助力福田祥菱 QEV车型售后问题处理
  • 制作 ext4 文件系统
  • java 导入利用布隆BloomFilter
  • SSE事件流简单示例
  • Paimon 写入磁盘文件名字生成机制
  • 2025年NSSCTF-青海民族大学 2025 新生赛WP
  • 学习C++、QT---20(C++的常用的4种信号与槽、自定义信号与槽的讲解)
  • 动力系统模拟与推导-AI云计算数值分析和代码验证
  • BLE低功耗设计:从广播模式到连接参数优化的全链路分析与真题解析
  • Django母婴商城项目实践(一)
  • 【JMeter】接口加密
  • 蜗轮丝杆升降机拆装图