Sql基础
[*]1. sql基础
[*]1.1. 数据库常用的数据类型
[*]1.2. 带n与不带n的区别
[*]1.3. 带var与不带var的区别
[*]1.4. 2.基础操作
[*]1.4.1. 更新语句
[*]1.4.2. 删除语句
[*]1.4.3. 约束
[*]1.4.4. 修改表结构
[*]1.4.5. 查询表
[*]1.4.6. 模糊查询_ %[ ]^
[*]1.4.7. 多表查询
[*]1.5. 3.ADO连接数据库
1. sql基础
1.1. 数据库常用的数据类型
[*]image:存储byte[],存储什么都可以只要是byte[]
[*]字符串类型:
[*]char
[*]nchar
[*]varchar
[*]nvarchar
[*]text
[*]ntext
[*]varchar(max)
[*]nvarchar(max)
[*]数值类型
[*]int
[*]float
[*]decimal
1.2. 带n与不带n的区别
[*]char(2)表示可以存储两个字节
[*]不带n的数据类型,存储中文等双字节符,占用两个字节,存储英文、数字等每个字符占用1个字节。
[*]nchar(2)表示存储两个字符
[*]带n的数据类型,不论存储数字、英文还是中文都是一个字符,都是占两个字节。
[*]带n的数据类型长度最长可以设置为4000,而不带n的数据类型的长度最长可以设置为8000
[*]char(8000) varchar(8000) nchar(4000)nvarchar(4000)
1.3. 带var与不带var的区别
[*]char(10)固定的长度,存储一个字节也是要占用10个字节,会自动补9个字节。
[*]varchar(10)可变长度,会根据存储数据的大小动态的重新分配存储空间,相对来说节省存储空间。
[*]10表示10字节,无论是可变长度还是固定长度,超过10个字节都会报错。
1.4. 2.基础操作
1.4.1. 更新语句
update 表名 set 列=新值,列2=新值2 where 条件1.4.2. 删除语句
delete form 表名 where 条件(条件可有可无)
truncate table 表名 (不可以加where条件)
[*]删除整个表建议是用truncate
[*]truncate 删除时自动编号会恢复初始的值。
[*]使用truncate删除表中所有的数据的时候要比delete效率高的多。
1.4.3. 约束
[*]非空约束
[*]主键(PK)
[*]唯一约束(UQ)
[*]默认约束(DF)
[*]检查约束(CK)
[*]外键约束(FK)
1.4.4. 修改表结构
alter table 表名 drop(你要进行的操作alter) coulumn 列名1.4.5. 查询表
select *from 表名 order by(默认为升序排序asc,降序为desc)
select Top 5 *from 表名 order by 列名 排序关键字。
select Top 30 percent*from 表名 order by 列名 排序关键字。(百分比取的话系统自动向上取整)
select distinct 列名 from 表名distinct:针对内存中查询出的结果集,去除重复记录。
Top:一般与order by(排序)来配合使用,不排序的话前几名就没有什么意义。
1.4.6. 模糊查询_ %[ ]^
[*]_表示任意的单个字符
[*]%表示多个任意的字符
[*][ ]表示筛选一个范围。如
[*]^非的意思
1.4.7. 多表查询
语法:SELECT TABLE. FROM TABLENAME1 LEFT JOIN TABLENAME2 ON TABLENAME1.=TABLENAME2. WHERE
LEFT JOIN :返回左表中的所有数据
RIGHT JOIN :返回右表中的数据
FULL OUTER JOIN:返回左右表中的数据
SELECT
P.ProName AS '省份',
P.ProID,
ISNULL( C.CityName,'未匹配') as '省份',
C.CityID FROM Province AS P
LEFT JOIN City AS C
ON P.ProID=C.ProID
WHERE P.ProName='山东省'
ORDER BY P.ProID;1.5. 3.ADO连接数据库
连接数据库的基本步骤:(重点检查数据库连接字符串的还有sql语句的执行)
[*]创建数据库连接字符。
[*]创建数据库连接对象。
[*]创建执行指向sql 语句的对象(sqlcommand)。
[*]打开数据库连接。
[*]执行sql语句。
[*]cmd.ExecuteNonQuery();//insert/delete/update语句时这个方法,这个方法有一个int的返回值,值是受影响的行数。执行其他的sql语句时永远返回-1。
[*]cmd.ExecuteScalar();//执行返回单个结果的时候使用这个方法。
[*]cmd.ExecuteReader();//查询出多行,多列时使用这个方法。
string constr = "Data Source=127.0.0.1;Initial Catalog=Test;User=sa;Password=neu@1234 ";
//创建数据库连接对象
using (SqlConnection con=new SqlConnection(constr))
{
#region 插入语句的执行
string sqlInsert = "insert into Tb_Student values('小黄','男',1333333333,18,'5454878','112')";
//创建执行sql语句的对象
using (SqlCommand cmd=new SqlCommand(sqlInsert, con))//插入数据
{
con.Open();
Console.WriteLine("打开数据库连接成功!");
int r= cmd.ExecuteNonQuery();
Console.WriteLine("成功插入了{0}行",r);
//cmd.ExecuteNonQuery();//insert/delete/update语句时这个方法,这个方法有一个int的返回值,值是受影响的行数。执行其他的sql语句时永远返回-1.
//cmd.ExecuteScalar();//执行返回单个结果的时候使用这个方法
//cmd.ExecuteReader();//查询出多行,多列时使用这个方法
} 将变量作为入参传入sql语句:
string sql = string.Format("insert into Tb_Class values(N'{0}',N'{1}')", name, info);
使用string.Format方法,采用的也是挖坑填坑的方法。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]