一、什么是SQL
SQL 是用于访问和处理数据库的标准的计算机语言。
SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。但是由于各种各样的数据库出现,导致很多不同版本的 SQL 语言,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等),这些就是我们要学习的SQL基础。
二、SQL连接
SQL连接
ADO.NET提供了多种方式来连接和操作数据库,例如使用SqlConnection(针对SQL Server),OleDbConnection(针对OLE DB),OdbcConnection(针对ODBC),MySqlConnection(针对MySQL),等等。以下是使用SqlConnection连接SQL Server数据库的基本步骤:
使用之前需要添加类库,引用命名空间 using System.Data.SqlClient;
string connectionString = @"Server=你的服务器地址;Database=你的数据库名称;User Id=你的用户名;Password=你的密码;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
try
{
connection.Open(); // 打开连接
Console.WriteLine("数据库连接成功!");
// 在这里执行你的数据库操作,例如查询、插入等
}
catch (Exception ex)
{
Console.WriteLine("数据库连接失败:" + ex.Message);
}
}
三、SQL基础语言学习
1.创建表 Crete Table
string createTableSQL = @"
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[你的表名]') AND type in (N'U’))
BEGIN
CREATE TABLE [dbo].[你的表名] (
[Id] INT PRIMARY KEY IDENTITY(1,1),
[Name] NVARCHAR(50),
[Age] INT
);
END";
using (SqlCommand command = new SqlCommand(createTableSQL, connection))
{
command.ExecuteNonQuery();
Console.WriteLine("表已成功创建。");
}
2.INSERT – 插入数据
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// 创建参数化SQL语句
string sql = "INSERT INTO TableName (Column1, Column2) VALUES (@Value1, @Value2)";
// 创建参数对象并设置参数值
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("@Value1", value1);
command.Parameters.AddWithValue("@Value2", value2);
// 执行SQL语句
command.ExecuteNonQuery();
}
3. SELECT – 查询数据
string sql = "SELECT COUNT(*) FROM table_name";
SQLiteCommand command = new SQLiteCommand(sql, conn);
SQLiteDataReader reader = command.ExecuteReader();
4.INSERT – 插入数据
string sql = "INSERT INTO 你的表名 (列1, 列2, 列3) VALUES (@Value1, @Value2, @Value3)";
using (SqlCommand command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@Value1", "值1");
command.Parameters.AddWithValue("@Value2", "值2");
command.Parameters.AddWithValue("@Value3", "值3");
int result = command.ExecuteNonQuery();
}
5.DISTINCT – 去除重复值
string sql = "SELECT DISTINCT column1, column2 FROM table_name"; // 或者使用其他去重方法如GROUP BY等
using (SqlCommand cmd = new SqlCommand(sql, con))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader[0]}, {reader[1]}"); // 输出或处理结果
}
}
}
6.AND & OR 运算符
string sql = "string query = "SELECT * FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值";
string sql = "string query = "SELECT * FROM 表名称 WHERE 列 运算符 值 OR 列 运算符 值";
7. ORDER BY 排序
string sql = "SELECT * FROM 表名称 ORDER BY 列1,列2 DESC”
8. UPDATE – 更新数据
string sql = "UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值”
9. DELETE – 删除数据
string sql = "DELETE FROM 表名称 WHERE 列名称 = 值”
10. TRUNCATE TABLE – 清除表数据
string sql = "TRUNCATE TABLE 表名称”
11. DROP TABLE – 删除表
string sql = "DROP TABLE 表名称";
三、SQL高级语言学习
1. LIKE – 查找类似值
string sql = "SELECT 列名/(*) FROM 表名称 WHERE 列名称 LIKE 值";
2. IN – 锁定多个值
string sql = "SELECT 列名/(*) FROM 表名称 WHERE 列名称 IN (值1,值2,值3)";
3. BETWEEN – 选取区间数据
string sql = "SELECT 列名/(*) FROM 表名称 WHERE 列名称 BETWEEN 值1 AND 值2”
4. AS – 别名
通过使用 SQL,可以为列名称和表名称指定别名(Alias),别名使查询程序更易阅读和书写。
string sql = "SELECT 列名称/(*) FROM 表名称 AS 别名”
5. JOIN – 多表关联
JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
string sql = "select 列名
from 表A
INNER|LEFT|RIGHT|FULL JOIN 表B
ON 表A主键列 = 表B外键列”
JOIN: 如果表中有至少一个匹配,则返回行
INNER JOIN: 内部连接,返回两表中匹配的行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
6. UNION – 合并结果集 操作符用于合并两个或多个 SELECT 语句的结果集。
string sql = "SELECT 列名 FROM 表A UNION SELECT 列名 FROM 表B";
7. NOT NULL – 非空 NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
string sql = "CREATE TABLE 表 ( 列 int NOT NULL )";
8. VIEW – 视图 视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据
string sql = "CREATE OR REPLACE VIEW 视图名 AS SELECT 列名 FROM 表名 WHERE 查询条件”
四、SQL常规函数学习
1.AVG – 平均值
string sql = “SELECT AVG(列名) FROM 表名";
2. COUNT – 汇总行数。
string sql = "select count(*) from persons";
3. MAX – 最大值
string sql = "SELECT MAX(列名) FROM 表名”
4. MIN – 最小值
string sql = "SELECT MIN(列名) FROM 表名”
5. SUM – 求和
string sql = "SELECT SUM(列名) FROM 表名”
6. GROUP BY – 分组
string sql = "SELECT 列名A, 统计函数(列名B) FROM 表名 WHERE 查询条件 GROUP BY 列名A”
7.HAVING – 句尾连接 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。
string sql = “SELECT 列名A, 统计函数(列名B) FROM table_name WHERE 查询条件 GROUP BY 列名A HAVING 统计函数(列名B) 查询条件";
8. UCASE/UPPER – 大写
string sql = "select upper(列名) from 表名";
9. LCASE/LOWER – 小写
string sql = "select lower(列名) from 表名”
10. LEN/LENGTH – 获取长度
string sql = "select length(列名) from 表名”
11. ROUND – 数值取舍
string sql = "select round(列名,精度) from 表名”
12. NOW/SYSDATE – 当前时间
string sql = "select sysdate from 表名”