通配符:
单个字符'_'
任意长度%
指定范围内[]
不在括号内[^]
建立数据库:
CREATE DATABASE 数据库名 ON([<数据文件参数>...n]) [LOG ON] ([<日志文件参数>...n])
建立表格:
CREATE TABLE 表面{[列名1 数据类型 列描述],[列名2 数据类型 列描述],[...]}
TSQL标示符规则为:字母、数字、@、#、$、下划线等组成,数字不能为首字符。
增加记录:
INSERT [INTO] <表名> [列名] VALUES <列表名>
更新记录:
UPDATE <表名> SET 列名=更新值[,列名=更新值] [WHERE<更新条件>] 如果WHERE省略,则表中所有记录都会被修改。
删除记录:
DELETE <表名> [WHERE <删除条件>]
查询数据:
SELECT <列名> [as/= 列的别名] FROM <表名> [WHERE <查询条件表达式>] [ORDER BY <排序的列名>[ASC或DESC]]
查询条件表达式:
IN('条件值1','条件值2'...)
IS 条件值 比如null
LIKE '匹配字符串' 通配符'_'代表一个任意字符,'%'表示任意长度的字符串,'[]'代表指定范围内的一个字符,如[0-9]
关联查询:
内联接:SELECT * FROM TA [inner] JOIN TB ON TA.EID=TB.EID
左外联接:SELECT * FROM TA LEFT JOIN TB ON TA.EID=TB.EID
右外联接:SELECT * FROM TA RIGHT JOIN TB ON TA.EID=TB.EID
笛卡尔联接(交叉联接):SELECT * FROM TA CROSS JOIN TB ON TA.EID=TB.EID
存储过程:CREATE PROC[EDURE] 存储过程名 [@参数... 数据类型=默认值OUTPUT,] [@参数... 数据类型=默认值OUTPUT] AS SQL语句集 Go
string connectionString="server=servername\\SQLEXPRESS;database=master;uid=sa;pwd=123";
//string connectionString="server=servername\\SQLEXPRESS;database=master;Integrated Security=SSPI";
string querySql="SELECT * FROM PERSON;";
//连接数据库:
using(SqlConnection cn=new SqlConnection(connectionString))
{
cn.Open();
//操作数据库:(增、删、改、查)
cn.CommandText=CommandType.Text //CommandType.Text表示执行SQL语句,是默认值,CommandType.StoredProcedure 表示执行存储过程
SqlCommand cmd=new SqlCommand(querySql,cn);
//cmd.ExecuteNonQuery(); //用于执行增、删、改
//ExecuteScalar返回一个Object类型的值,用于执行带有聚合函数的SQL语句,比如COUNT、AVG。
//ExecuteReader返回一个SqlDataReader类型的结果集,通过SqlDataReader的Read方法来逐一读取记录。Read返回false表示已读完。
SqlDataReader reader=command.ExecuteReader();
while(reader.Read())
{
//通过四种方式获取当前记录的列值。前三种返回Object类型数据,需要拆箱操作,效率低。
//第四种根据列值类型调用对应的方法。
Console.WriteLine(reader[0],reader[1]); //通过列号
Console.WriteLine(reader["colume1"],reader["colume2"]); //通过列名
Console.WriteLine(reader.GetValue(0),readerGetValue(1)); //通过GetValue方法和列号
Console.WriteLine(reader.GetString(0),reader.GetString(1)); //通过GetX方法和列号
}
cn.Close();
}
事务操作保证了操作的一致性
带参数的操作:
也可以自定义参数对象,定义完后要加入到命令对象里面: