The operations in SQLServer2005(SQL)(一)

2014-11-24 16:39:26 · 作者: · 浏览: 8
The operations in SQLServer2005(SQL)
虽然现在Microsoft的产品SQLServer好像不太受欢迎(从我身边了解到的),这里就简单说说一些SQLServer的SQL,其中很多是标准的SQL语句, 数据库通用的。
连接步骤 www.2cto.com
//前期准备
[java]
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 //按照自己的设定
//利用发射机制创建类的加载和连接 www.2cto.com
[java]
Class.forName(driver);
Connection conn =DriverManager.getConnection(url,username,passWord);
//执行预编译
[java]
String sql ;
String[] param;
PreparedStatementpstm = conn.prepareStatement(sql);
If(param!=null& m.length>0){
for(inti=0;i
pstm.setString(i+1,paran[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自增做主键:
[sql]
insert into users values(‘ysjian’,22)--自增主键可以不给值
insert into users(name,age) values(‘ysjian’,22)--推荐带上列名
uniqueidentifier做主键:
[sql]
insert into users values(‘ysjian’,22)--自增主键可以不给值
insert into users(name,age) values(‘ysjian’,22)--推荐带上列名
--表示不等于20
[sql]
update users set name=N’袁’ where age<>20
update users set name=N’袁’ where age!=20
update users set name=N’袁’ where age>20 and age<30 or age=80
update users set name=N’袁’ where age between 20 and 30
◎删除语句
[sql]
delete from users--清空表(注意delete后面不能加*)
delete from users where age=20
◎查询语句(重点)
[sql]
select* from users
select name as ‘姓名’,ageas 年龄,id as ‘编号’from users
select ‘姓名’ =name , 年龄= age,id as ‘编号’from users
select age+3 as 年龄 from users
//聚合函数
[sql]
Select count(*) from users
Select max(age) from users
Select min(age) from users
Select avg(age) from users
Select from users
//排序
[sql]
Select * from users order by age desc--按年龄降序
Select * from users where age>20 order by age asc--按年龄升序
//模糊查询(通配符’_’和’%’)
[sql]
Select * from users where name like‘袁_’--查询以”袁”开头后面有一个字符
Select * from users where name like‘%袁%’--查询名字有”袁”字的数据
//null(不知道)
[sql]
Select * from users where name is null
Select null+1--结果为null
Select null+’123’--结果为null
//分组查询
[sql]
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(*)>