ITPub博客

首页 > 大数据 > 数据挖掘 > 黑马程序员-数据库学习笔记

黑马程序员-数据库学习笔记

数据挖掘 作者:WUXIWENYU 时间:2013-12-13 15:14:16 0 删除 编辑

---------------------- asp.net+android+ios/">http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发、
.net/">http://edu.csdn.net"target="blank">.Net培训、期待与您交流! ----------------------

 

1、sql语句中字符串用单引号

主键策略:

2、int 设置自动增长列  将字段的“是标识列”设置为“是”一个表只能有一个标识列。解决并发问题。优   点:占用空间小,无需开发人员干预,易读;缺点:效率低,数据导入导出很痛苦。
3、GUID做主键 ID数据类型选择uniqueidentifier  GUID算法产生的值都是不同的,SQL Sever中产生guid   的函数是newid(),.net中有一个GUID类,有一个Guid.NewGuid()方法可以产生一个永远不会重复的guid   。优点:效率高,数据导入导出很方便;缺点:占空间太大,不易读。
   insert into 表名(ID,字段) values(newid(),值)
4、sql语句中出现中文就在中文前面加一个N,否则有可能出现错误,update 表名 set 字段=N'中文';
5、sql中不等于号两种!=或者<>
6、创建一个员工表并插入数据sql语句
   create table T_Employee (FNumber varchar(20),FName varchar(20),FAge int,
   FSalary numeric(10,2),primary key(FNumber));
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('DEV001','Tom',25,8300);
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('DEV002','Jerry',28,2300);
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('SALES001','John',23,5000);
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('SALES002','Kerry',28,6200);
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('SALES003','Stone',22,1200);
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('HR001','Jane',23,2200);
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('HR002','Tina',25,5200);
   insert into T_Employee (FNumber,FName,FAge,FSalary) values('IT001','Smith',28,3900);
   insert into T_Employee (FNumber,FAge,FSalary) values('IT002',27,2800);
7、varchar和nvarchar区别
   varchar(n)
   长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数   值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。

   nvarchar(n)
   包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大   小是所输入字符个数的两倍。

   两字段分别有字段值:我和coffee
   那么varchar字段占2×2+6=10个字节的存储空间,而nvarchar字段占8×2=16个字节的存储空间。

   如字段值只是英文可选择varchar,而字段值存在较多的双字节(中文、韩文等)字符时用nvarchar
8、as给列起别名 select FName as '姓名' from 表名
9、sqlsever中的null表示不知道而不表示空,所以有null参与的运算,结果基本都是null,例如:
   (select null+1)的结果就是null  (select null+'字符串')结果也是null
10、取出查询后的数据的前几行用top 数据量非常大的时候可以用top 只取前几条数据
   select top 3 * from 表名
11、为表T_Employee增加两个字段并插入数据
alter table T_Employee add FSubCompany varchar(20);
alter table T_Employee add FDepartment varchar(20);
update T_Employee set FSubCompany='Beijing',FDepartment='Development'
where FNumber='DEV001';
update T_Employee set FSubCompany='ShenZhen',FDepartment='Development'
where FNumber='DEV002';
update T_Employee set FSubCompany='Beijing',FDepartment='HumanResource'
where FNumber='HR001';
update T_Employee set FSubCompany='Beijing',FDepartment='HumanResource'
where FNumber='HR002';
update T_Employee set FSubCompany='Beijing',FDepartment='InfoTech'
where FNumber='IT001';
update T_Employee set FSubCompany='ShenZhen',FDepartment='InfoTech'
where FNumber='IT002';
update T_Employee set FSubCompany='Beijing',FDepartment='Sales'
where FNumber='SALES001';
update T_Employee set FSubCompany='Beijing',FDepartment='Sales'
where FNumber='SALES002';
update T_Employee set FSubCompany='ShenZhen',FDepartment='Sales'
where FNumber='SALES003';
12、创建一个表T_TempEmployee
create table T_TempEmployee(FIdCardNumber varchar(20),FName varchar(20),FAge int, primary key(FIdCardNumber));
insert into T_TempEmployee(FIdCardNumber ,FName ,FAge) values('1234567890121','Saranl',33);
insert into T_TempEmployee(FIdCardNumber ,FName ,FAge) values('1234567890122','Tom',26);
insert into T_TempEmployee(FIdCardNumber ,FName ,FAge) values('1234567890123','Yalaha',38);
insert into T_TempEmployee(FIdCardNumber ,FName ,FAge) values('1234567890124','Tina',26);
insert into T_TempEmployee(FIdCardNumber ,FName ,FAge) values('1234567890125','Konkaya',29);
insert into T_TempEmployee(FIdCardNumber ,FName ,FAge) values('1234567890126','Fotifa',46);
13、一些常用的函数ABS()求绝对值,CEILING()舍入到最大整数,FLOOR()舍入到最小整数,ROUND(小数,精度)四舍五入,LEN('字符串')求字符串长度,SUBSTRING('字符串',开始位置,截取长度),GETDATE()取当前日期,DATEADD(datepart,number,getdate())
DATEPART()取日期的部分,DATADIFF(datepart,开始时间,结束时间)计算日期差
14、数据类型转换cast(expression AS data_type),convert(data_type,expression),例如:cast('123' AS int),convert()
--ISNULL()函数对结果是NULL的值进行处理,下面例子是将NULL换成佚名
select ISNULL(FName,'佚名') as 姓名 from T_Employee
case用法
select FName,
(
case FLevel --用户级别
when 1 then '普通客户'
when 2 then '会员'
when 3 then 'VIP'
else  '未知客户类型'
end
) as 客户类型
from T_Customer
15、表连接用JOIN
 --查询表T_Employee和表T_TempEmployee中名字相同的人
select o.FName,o.FAge,c.FAge
from T_Employee as o join T_TempEmployee as c on o.FName=c.FName
16、数据库中有一个自增Id字段,获得插入数据后系统为Id字段自动增加的值用语句 Insert into 表名(字段) output inserted.Id values(值),返回新增Id的值
17、字符串拼接小心sql注入
用cmd.CommandText = "select * from T_user where UserName=@UserName";
                    cmd.Parameters.Add(new SqlParameter("@UserName",txtUserName.Text));可以解决这个问题
18、
SQLSERVER .net/C#中
int  int
bigint  long(长int)
bit(0,1) bool
numeric  decimal
19、truncate table tablename(表名)可以解决删除表中数据后自增字段无法恢复到初始值问题
20、向数据库中批量插入数据用SqlBulkCopy类
21、如果数据库中的值为Null则返回DBNull.Value
22、数据库中bit类型的字段值要写false或true但是sql语句中要写0或1

 

---------------------- asp.net+android+ios/">http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发、
.net/">http://edu.csdn.net"target="blank">.Net培训、期待与您交流! ----------------------

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21822526/viewspace-1118822/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-06-05