您好,欢迎访问一九零五行业门户网

The operations in SQLServer2005(SQL)

虽然现在microsoft的产品sqlserver好像不太受欢迎(从我身边了解到的),这里就简单说说一些sqlserver的sql,其中很多是标准的sql语句,数据库通用的。 连接步骤 //前期准备 string driver =com.microsoft.sqlserver.jdbc.sqlserverdriver;url: string url =jd
虽然现在microsoft的产品sqlserver好像不太受欢迎(从我身边了解到的),这里就简单说说一些sqlserver的sql,其中很多是标准的sql语句,数据库通用的。
连接步骤
//前期准备
string driver =com.microsoft.sqlserver.jdbc.sqlserverdriver;url: string url =jdbc:sqlserver://localhost:1433;databadename=db_blog;username: string username = sa;password: string password = ysjian //按照自己的设定
//利用发射机制创建类的加载和连接
class.forname(driver);connection conn =drivermanager.getconnection(url,username,password);
//执行预编译
string sql ;string[] param;preparedstatementpstm = conn.preparestatement(sql);if(param!=null&?m.length>0){ for(inti=0;i
执行查询:resultsetrs = pstm.executequery();
执行更新:int result = pstm.executeupdate();
主键(primarykey):数据的唯一标识,不会重复的列做主键
1.      业务主键:使用有业务意义的字段做主键,如用户名,身份证号,银行账号等(不推荐)
2.      逻辑主键:使用无任何意义的字段做主键,因为很难保证业务主键不会重复,所以推荐使用逻辑主键
外键(foreignkey):在表与表之间建立联系的枢纽,标间关联
列的数据类型:
bit(0或1):相当于boolean类型的数据;
char(n):不可变的字符串,不足部分用空格填充
varchar(n):最大长度为8000
nvarchar(max):类似无限大,2^31-1
datetime(时间类型):date
timestamp:时间戳,时间格式较全的格式
uniqueidentifier:唯一标示符(推荐做主键)
主键的选择:
1.      int(bigint)+标识列(自增字段)
2.      uniqueidentifier(guid):业界主流
int自增做主键的优缺点:
         优点:占用空间小,无需开发人员干预
         缺点:效率低,数据导入导出时不便
guid做主键的优缺点
         优点:效率高,数据的导入导出方便
         缺点: 占用空间大,不易读
sql语句
◎插入语句
int自增做主键:
insert into users values(‘ysjian’,22)--自增主键可以不给值insert into users(name,age) values(‘ysjian’,22)--推荐带上列名

uniqueidentifier做主键:
insert into users values(‘ysjian’,22)--自增主键可以不给值insert into users(name,age) values(‘ysjian’,22)--推荐带上列名
--表示不等于20
update users set name=n’袁’ where age20 update users set name=n’袁’ where age!=20 update users set name=n’袁’ where age>20 and age◎删除语句
delete from users--清空表(注意delete后面不能加*) delete from users where age=20
◎查询语句(重点)
select* from usersselect name as ‘姓名’,ageas 年龄,id as ‘编号’from usersselect ‘姓名’ =name , 年龄= age,id as ‘编号’from usersselect age+3 as 年龄 from users
//聚合函数
select count(*) from users select max(age) from users select min(age) from users select avg(age) from users select from users
//排序
select * from users order by age desc--按年龄降序 select * from users where age>20 order by age asc--按年龄升序
//模糊查询(通配符’_’和’%’)
select * from users where name like‘袁_’--查询以”袁”开头后面有一个字符 select * from users where name like‘%袁%’--查询名字有”袁”字的数据
//null(不知道)
select * from users where name is null select null+1--结果为null select null+’123’--结果为null
//分组查询
select age ,count(*) from users group by age --查询的列名必须与分组一致,聚合函数不能出现在where子句中(错)select count(*) from users where count(*)>5 group by age(错)--having子句是对分组后的信息过滤,能用的列是查询的列(错)select count(*) from users group by age having id>5(错)selectage, count(*) from users group by age having age>20 and count(*)>5
//限行查询
select top 5 * from users order by age desc select top 5 percent * from users
//经典例子:按工资从高到低的排序检索从第六名开始一共五人信息
select top 5 salary from employee where id not in(select top 5 id from users order by salary desc) order by salary desc
//保持数据的唯一
select distinct ename fromemployee--保持整行数据的唯一性
//联合查询,上下字段的个数必须一致,且数据类型相容
select name,age from users union all--默认会将完全重复的数据合并,all可以阻止合并 select name,5 from users2
//(联合查询的运用)报表的制作
select ‘正式工最大年龄’,max(fage) from t_employee union all select ‘正式工最小年龄’,min(fage) from t_employee union all select ‘临时工最小年龄’,min(fage) from t_tempemployee union all select ‘临时工最大年龄’,max(fage) from t_tempemployee select fnumber,fsalary from t_employee union all select ‘工资合计’,sum(fsalary) from t_employee
//数据库函数
select abs(-5)--绝对值5 select ceiling(5.2) --大于5.2的最小整数 select floor(-3.5)--小于-3.5的最大整数 select round(3.1415926,3)--四舍五入,指定取舍位3,结果为3.1420000 select len(‘abc’)--3 select lower(‘abc’)--abc select upper(‘abc’)--abc select ltrim(‘ china ’)--china select rtrim(‘ china ’)-- china select substring(‘yuanshenjian’,3,5)--开始位置为3,长度为5
//日期函数
select getdate();--取得当前日期 select daeadd(day,5,getdate())--当前时间天数加3 select datediff(day,’1990-08-02’,getdate())--1990-08-02距离当前时间的天数 select datepart(year,getdate())--返回一个日期的特定部分
//经典语句
select datediff(year,findate,getdate()), count(*) from t_employeegroup by datediff(year,findate,getdate())having count(*)>2
//类型转换
select cast (‘123’asint),cast(‘2012-11-23’as datetime) select convert(datetime,’2012-11-23’),convert(varchar(50),123)
//流控函数,如果fname为null,赋值为“佚名”
select isnull(fname,’佚名’) as 姓名 from t_employee
//单值判断
select fname,( case flevel when 1 then‘普通客户’ when 2 then‘会员’ when 3 then‘vip’ else ‘未知客户类型’ end--一定要加end)as 客户类型 from t_customer
//l练习:表中有a,b,c三列,但a大于b时选a,否则选b,但b大于c时
选b,否则选c
select(casewhen a>b then a else bend),(casewhen b>c then b else cend)from player
//练习二
select name as 队名,sum( case scores when ‘胜’ then 1 else 0 end)as 胜,sum( case scores when ‘负’ then 1 else 0 end)as 负from teamgroup by name
//数据库的创建
if exsits(select * from sys.database when [name]=’market’)drop database marketcreate database marketon( name=’market.mdf’, filename=’e:\microsoft\market.mdf’, size=5, maxsize=555, filegrowth=55)log on( name=’market’, filename=’market.ldf’, size=5, maxsize=55, filegrowth=55%)
//表的创建
if exists(select * from sys.objects where[name]=’employee’)drop table employeecreate table employee( eid varchar(5) not null primary key, esex bit not null default(1), uidint not null identity pid varchar not null foreign key references employees(pid))
其它类似信息

推荐信息