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

sql数据库语法

https://www.w3school.com.cn/sql/index.asp

1. 数据定义语言 (DDL)

创建数据库和表

-- 创建数据库
CREATE DATABASE company;-- 使用数据库
USE company;-- 创建表
CREATE TABLE employees (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50) NOT NULL,age INT,department VARCHAR(50),salary DECIMAL(10,2),hire_date DATE
);-- 创建索引
CREATE INDEX idx_name ON employees(name);
CREATE INDEX idx_department ON employees(department);

修改表结构

-- 添加列
ALTER TABLE employees ADD COLUMN email VARCHAR(100);-- 修改列
ALTER TABLE employees MODIFY COLUMN name VARCHAR(100);-- 删除列
ALTER TABLE employees DROP COLUMN email;-- 重命名表
ALTER TABLE employees RENAME TO staff;

删除对象

-- 删除表
DROP TABLE employees;-- 删除数据库
DROP DATABASE company;-- 清空表数据
TRUNCATE TABLE employees;

2. 数据操作语言 (DML)

插入数据

-- 插入单条数据
INSERT INTO employees (name, age, department, salary, hire_date)
VALUES ('张三', 20, '技术部', 10000.00, '2025-10-20');-- 插入多条数据
INSERT INTO employees (name, age, department, salary, hire_date)
VALUES ('李四', 20, '销售部', 10000.00, '2025-10-20'),('王五', 20, '技术部', 10000.00, '2025-10-20'),('赵六', 20, '人事部', 10000.00, '2025-10-20');

更新数据

-- 更新特定记录
UPDATE employees 
SET salary = 16000.00, department = '高级技术部'
WHERE name = '张三';-- 批量更新
UPDATE employees 
SET salary = salary * 1.1 
WHERE department = '技术部';

删除数据

-- 删除特定记录
DELETE FROM employees WHERE name = '赵六';-- 删除多条记录
DELETE FROM employees WHERE age > 60;-- 清空表(谨慎使用)
DELETE FROM employees;

3. 数据查询语言 (DQL)

-- 查询所有列
SELECT * FROM employees;-- 查询特定列
SELECT name, department, salary FROM employees;-- 条件查询
SELECT name, salary 
FROM employees 
WHERE salary > 12000 AND department = '技术部';-- 排序
SELECT name, salary 
FROM employees 
ORDER BY salary DESC, name ASC;-- 限制结果集
SELECT name, salary 
FROM employees 
ORDER BY salary DESC 
LIMIT 10;
-- 分组统计
SELECT department,COUNT(*) as 人数,AVG(salary) as 平均工资,MAX(salary) as 最高工资,MIN(salary) as 最低工资
FROM employees 
GROUP BY department
HAVING AVG(salary) > 12000;-- 连接查询
SELECT e.name,e.salary,d.department_name,d.location
FROM employees e
INNER JOIN departments d ON e.department_id = d.id;-- 子查询
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);-- 联合查询
SELECT name, salary FROM employees WHERE department = '技术部'
UNION
SELECT name, salary FROM contractors WHERE department = '技术部';

日期函数

SELECT name,hire_date,YEAR(hire_date) as 入职年份,MONTH(hire_date) as 入职月份,DATEDIFF(CURRENT_DATE, hire_date) as 入职天数,DATE_ADD(hire_date, INTERVAL 1 YEAR) as 转正日期
FROM employees;

在SQL中取日期字段的前10个字符进行比较,主要有以下几种方法:

-- 使用 SUBSTRING
SUBSTRING(CONVERT(VARCHAR(20), a.时间1, 120), 1, 10) = SUBSTRING(CONVERT(VARCHAR(20), b.时间2, 120), 1, 10)-- 使用 LEFT (更简洁)
LEFT(CONVERT(VARCHAR(10), a.时间1, 120), 10) = LEFT(CONVERT(VARCHAR(10),b.时间2, 120), 10)

更推荐的日期比较方法

-- 方法1: 转换为DATE类型
CAST(a.时间1 AS DATE) = CAST(b.时间2 AS DATE)-- 方法2: 使用CONVERT转为DATE
CONVERT(DATE, a.时间1) = CONVERT(DATE, b.时间2)-- 方法3: 使用DATEDIFF
DATEDIFF(DAY,a.时间1,b.时间2) = 0

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

相关文章:

  • 使用jmeter进行压力测试
  • 长期网站外包wordpress主题php详解
  • 面试八股 快速讲解 集合类中的 fail-fast和fail-safe
  • MySQL K8S日志分析与数据还原
  • RK3588 RKLLM大语言模型AI开发环境搭建及板端部署
  • Android Studio配置指南:Gradle 安装
  • php能做手机网站吗网站开发 例子
  • 【完整源码+数据集+部署教程】【零售和消费品&存货】快递包裹条形码与二维码识别系统源码&数据集全套:改进yolo11-RFCBAMConv
  • 泉州seo建站wordpress 生成 应用
  • BearPi小熊派 鸿蒙开发入门笔记(3)
  • 欧几里得算法(Euclidean Algorithm):求最大公约数的经典方法
  • MLLM技术报告 核心创新一览
  • C++设计模式_行为型模式_策略模式Strategy
  • **发散创新:多智能体系统的探索与实践**随着人工智能技术的飞速发展,多智能体系统作为当今研究的热点领域,正受到越来越多关注
  • 音乐网站设计企业网络搭建与应用
  • Flink Data Sink 理论 、架构、语义保证、两阶段提交与可插拔拓扑
  • DeviceNet转Ethernet/IP食品饮料包装线码垛机器人高效通信方案
  • 《基于分布式多模态传感模块的全身尺度机器人皮肤:设计、评估与应用》TR-O 2025论文解析
  • 亿万网站网站开发详细流程
  • 还是网站好买一个app软件要多少钱
  • 无锡万度网站建设WordPress Demo演示
  • 智能外呼是什么意思
  • 【读论文】——基于光谱学的玉米种子品质检测及其成像技术综述
  • 如何自建网站满分作文网
  • 服务器/Pytorch——对于只调用一次的函数初始化,放在for训练外面和里面的差异
  • iOS 混淆与 IPA 加固一页式行动手册(多工具组合实战 源码成品运维闭环)
  • PySide6 使用搜索引擎搜索 多类实现 更新1次
  • 宁波网站优化的关键企业网站后台管理系统模板
  • 网站开发项目需求分析说明书电子商务网站开发与实现
  • 群晖实现证书90天自动更新(无需对外提供80端口)