Sql基础

打印 上一主题 下一主题

主题 1846|帖子 1846|积分 5538

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
sql基础

1.数据库常用的数据类型


  • image:存储byte[],存储什么都可以只要是byte[]
  • 字符串类型:

    • char
    • nchar
    • varchar
    • nvarchar
    • text
    • ntext
    • varchar(max)
    • nvarchar(max)

  • 数值类型

    • int
    • float
    • decimal

带n与不带n的区别


  • char(2)表示可以存储两个字节
  • 不带n的数据类型,存储中文等双字节符,占用两个字节,存储英文、数字等每个字符占用1个字节。
  • nchar(2)表示存储两个字符
  • 带n的数据类型,不论存储数字、英文还是中文都是一个字符,都是占两个字节。
  • 带n的数据类型长度最长可以设置为4000,而不带n的数据类型的长度最长可以设置为8000
  • char(8000) varchar(8000)      nchar(4000)nvarchar(4000)
带var与不带var的区别


  • char(10)固定的长度,存储一个字节也是要占用10个字节,会自动补9个字节。
  • varchar(10)可变长度,会根据存储数据的大小动态的重新分配存储空间,相对来说节省存储空间。
  • 10表示10字节,无论是可变长度还是固定长度,超过10个字节都会报错。
2.基础操作

更新语句
  1. update 表名 set 列=新值,列2=新值2 where 条件
复制代码
删除语句
  1. delete form 表名 where 条件(条件可有可无)
  2. truncate table 表名 (不可以加where条件)
复制代码

  • 删除整个表发起是用truncate
  • truncate 删除时自动编号会规复初始的值。
  • 利用truncate删除表中全部的数据的时间要比delete服从高的多。
约束


  • 非空约束
  • 主键(PK)
  • 唯一约束(UQ)
  • 默认约束(DF)
  • 检查约束(CK)
  • 外键约束(FK)
修改表结构
  1. alter table 表名 drop(你要进行的操作alter) coulumn 列名
复制代码
查询表
  1. select *from 表名 order by(默认为升序排序asc,降序为desc)
  2. select Top 5 *from 表名 order by 列名 排序关键字。
  3. select Top 30 percent  *from 表名 order by 列名 排序关键字。(百分比取的话系统自动向上取整)
  4. select distinct 列名 from 表名
复制代码
distinct:针对内存中查询出的结果集,去除重复记录。
Top:一般与order by(排序)来配合利用,不排序的话前几名就没有什么意义。
模糊查询  _   %  [ ]  ^


  • _表示任意的单个字符
  • %表示多个任意的字符
  • [ ]表示筛选一个范围。如[0-9]
  • ^非的意思
多表查询

语法:SELECT TABLE. FROM TABLENAME1 LEFT JOIN TABLENAME2 ON TABLENAME1.=TABLENAME2. WHERE
LEFT JOIN :返回左表中的全部数据
RIGHT JOIN :返回右表中的数据
FULL OUTER JOIN:返回左右表中的数据
  1. SELECT
  2. P.ProName AS '省份',
  3. P.ProID,
  4. ISNULL( C.CityName,'未匹配') as '省份',
  5. C.CityID FROM Province AS P
  6. LEFT JOIN City AS C
  7. ON P.ProID=C.ProID
  8. WHERE P.ProName='山东省'
  9. ORDER BY P.ProID;
复制代码
3.ADO连接数据库

连接数据库的根本步骤:(重点检查数据库连接字符串的还有sql语句的执行)

  • 创建数据库连接字符。
  • 创建数据库连接对象。
  • 创建执行指向sql 语句的对象(sqlcommand)。
  • 打开数据库连接。
  • 执行sql语句。
  • cmd.ExecuteNonQuery();//insert/delete/update语句时这个方法,这个方法有一个int的返回值,值是受影响的行数。执行其他的sql语句时永远返回-1。
  • cmd.ExecuteScalar();//执行返回单个结果的时间利用这个方法。
  • cmd.ExecuteReader();//查询出多行,多列时利用这个方法。
  1. string constr = "Data Source=127.0.0.1;Initial Catalog=Test;User=sa;Password=neu@1234 ";
  2. //创建数据库连接对象
  3. using (SqlConnection con=new SqlConnection(constr))
  4. {
  5.     #region 插入语句的执行
  6.     string sqlInsert = "insert into Tb_Student values('小黄','男',1333333333,18,'5454878','112')";
  7.     //创建执行sql语句的对象
  8.     using (SqlCommand cmd=new SqlCommand(sqlInsert, con))//插入数据
  9.     {
  10.         con.Open();
  11.         Console.WriteLine("打开数据库连接成功!");
  12.         int r= cmd.ExecuteNonQuery();
  13.         Console.WriteLine("成功插入了{0}行",r);
  14.         //cmd.ExecuteNonQuery();//insert/delete/update语句时这个方法,这个方法有一个int的返回值,值是受影响的行数。执行其他的sql语句时永远返回-1.
  15.        //cmd.ExecuteScalar();//执行返回单个结果的时候使用这个方法
  16.        //cmd.ExecuteReader();//查询出多行,多列时使用这个方法
  17. }
复制代码
将变量作为入参传入sql语句:
string sql = string.Format("insert into Tb_Class values(N'{0}',N'{1}')", name, info);
利用string.Format方法,采用的也是挖坑填坑的方法。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

欢乐狗

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表