| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2509 人关注过本帖, 2 人收藏
标题:贡献数据库基本语法的总结[ 经典 ]
只看楼主 加入收藏
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏(2)
 问题点数:0 回复次数:11 
贡献数据库基本语法的总结[ 经典 ]
贡献数据库基本语法的总结 (数据库的基本查询还有函数等)

                                
-------------创建数据库和标
create database 数据库名
on
(
  name = 主要数据文件名,
  filename = 主要数据文件存放路径(注; 保证存放目录事先存在,若不存在,得先手动创建某目录),
  size = 初始大小,
  maxsize = 最大大小,
  filegrowth = 文件增长量(注:默认为兆字节的方式,可以指定为百分比增长)
)
log on
(
  name = 日至文件名 (注: 不能和主要数据文件同名),
  filename = 日至文件存放路径(注: 和主要数据文件存放路径相同),
  size = 初始大小,
  maxsize = 最大大小,
  filegrowth = 文件增长量(注:默认为兆字节的方式增长,可以指定为百分比增长)
)
go
------------------------使用数据库
use 数据库名  
-----------------------创建数据库表
create table 数据库表名
(
  字段1 数据类型 约束,
  字段2 数据类型 约束,
  ......,
  ......
)
go

------------示例
-----创建数据库
create database Manager
on
(
  name = Manage_data,
  filename = 'd:\Manage_data.mdf',
  size = 10mb,
  maxsize = 20mb,
  filegrowth = 10
)
log on
(
  name = Manage_log,
  filename = 'd:\Manage_log.ldf',
  size = 5mb,
  maxsize = 10mb,
  filegrowth = 5%
)
---------使用数据库
use Manager
---------创建数据库表
create table Boss                  ----------创建boss表,包含有 bid , bname , bsex , bage四个字段
(
  BID int primary key identity(1,1),
  BName varchar(50),
  BSex varchar(20),
  BAge int not null
)
go
------删除表
drop table boss                     -----------删除表后,表结构被删除
delete from boss                    -----------一行一行记录删除,不能在delete后接字段名,可接where子句限制,速度慢,表结构存在
truncate table boss                 -----------一次删除表中的所有记录,表结构存在,速度快,但对于有外键的表只能用delete from 而不能用truncate table

--------------
go
create table Employee               ---------------创建Employee 表,包含有eid,ename,esex,eage四个字段
(
  EID int primary key identity(1,1),
  EName varchar(50) default('zhangsan'),
  ESex varchar(20),
  EAge int not null  
)
go


---------------------向表中间插入数据
------单行插入
insert [into] 表名(字段名) values(值)
------多行插入
insert into 表1[(字段)] select 字段 from 表2                      ---------将表2中的所有记录插入到表1中,要求这两个表事先存在
select 字段1,字段2...  into 新表 from 旧表                     ----------创建新表,同时将旧表中的所有记录插入到新表中,新表不含标识列
select 字段1,字段2... 标识列字段(数据类型,标识起始值,标识增长量) [as 别名] into 新表 from 旧表            ---------创建新表,同时将旧表中的所有记录插入到新表中,含标识列字段

insert into 表(字段1,字段2...)
select '值1','值2'... union
select '值a','值b'... union
select '值3','值4'... union
select '值5','值6'...


-----------------------------------------示例
----------------为Boss表插入数据

insert into Boss(BName,BSex,BAge) values('zcb','男',21)                        -----常规方式单行插入

insert Boss values('cxm','女',20)                                              -----插入时省略 into 和 字段名,注意:不能插入标识列

insert into Boss(BName,BSex,BAge)                                              -----通过union 联合关键词,向表中一次插入多行
select 'xrr','女',20 union
select 'xmm','女',19 union
select 'tangbi','男',26 union
select 'zhanliu','男',25

select BName , BSex , BAge into 新表1 from Boss                                  ----建立新表,同时将Empoyee表中的内容一次插入到新表中,新表不包含标识列

select BName, BSex,BAge , identity(int,1,1) as 老板编号 into 新表2 from Boss      ----------建立新表,同时将Empoyee表中的内容一次插入到新表中,新表包含标识列
go



-----------------为表Empoyee插入数据
insert into Employee(EName,ESex,EAge) values('aaa','男',21)                        -----常规方式单行插入

insert Employee values('bbb','女',20)                                              -----插入时省略 into 和 字段名,注意:不能插入标识列

insert into Employee(EName,ESex,EAge)                                              -----通过union 联合关键词,向表中一次插入多行
select 'ccc','女',20 union
select 'ddd','女',19 union
select 'eee','男',26 union
select 'fff','男',25


insert into Employee(ESex,EAge)                                              -----通过union 联合关键词,向表中一次插入多行。注意:采用默认值的时候,不为该列插入
select '女',20 union
select '女',19 union
select '男',26 union
select '男',25

insert into Employee(EAge) values(22)                                         ------为Empoyee表插入一行数据. 注意: 向Empoyee表中插入一行数据,对EName 采用默认值的方式,对ESex 采用为空的形式

select EName , ESex , EAge into 新表3 from Employee                                 ----建立新表,同时将Empoyee表中的内容一次插入到新表中,新表不包含标识列

select EName, ESex,EAge , identity(int,1,1) as 雇员编号 into 新表4 from Employee      ----------建立新表,同时将Empoyee表中的内容一次插入到新表中,新表包含标识列
go


-----------------------------查询表中的数据
-------简单的查询
select * from Boss                            -----------查询表中所有记录
select * from Employee                        
go
select BName,BSex from Boss                   ----------查询某些字段的记录
go
select * from Boss where BSex = '女' and BAge< 20        --------查询满足某些条件的所有记录
go
select BName ,BSex from Boss where Bsex = '男' and BID > 4    ----------查询满足某些条件的某些字段的记录
go
select * from Boss order by BAge desc  --asc                  ----------查询表中所有字段,并且按BAge进行排序,默认为升序排列,如果想按降序排列,则须指定BAge 为 desc
go
select * from Boss where BSex = '男' order by BAge desc       ----------查询表中满足条件的所有字段,并按BAge 进行排序。注意:order by 一定是写在where 条件的后面


------模糊查询(五种方式)
----1 . like 模糊查询
select * from Boss where BName like 'z_'
select * from Boss where BName like 'z%'
select * from Boss where BAge like '[0-9]'
select * from Boss where BAge like '[0-9][0-9]'
select * from Boss where BName like '%[^A-Z]%'

------查询字段时重命名字段(给字段命别名)
select * from Employee
go
select EID as '雇员编号', EName as 雇员姓名,ESex as '雇员性别', EAge as 雇员年龄 from Employee    -------给字段起别名的三种方式,注意对比.  别名可以用 '' 也可以不用

select EID '雇员编号', EName 雇员姓名,ESex '雇员性别', EAge 雇员年龄 from Employee

select '雇员编号' = EID, 雇员姓名 = EName,'雇员性别' = ESex, 雇员年龄 = EAge from Employee

-------查询是否为空的值
select * from Employee where ESex is NULL

select * from Employee where ESex is not null

-------查询常量值
select EID as '雇员编号', EName as 雇员姓名,ESex as '雇员性别', EAge as 雇员年龄 , '雇员地址' = '北京海淀' ,'空值' = ''from Employee      --------只是查询时存在,并没有改变表的结构

-------查询限定行数的值
select top 6 * from Employee

select top 4 EName,EAge from Employee

select top 50 percent * from Employee
 
select top 25 percent EID , ESex from Employee                       -------如果百分比其结果为小数,取整

------查询后排序  ( order by 字段 asc/desc )
select * from Boss order by BAge desc  --asc                  ----------查询表中所有字段,并且按BAge进行排序,默认为升序排列,如果想按降序排列,则须指定BAge 为 desc
go
select * from Boss where BSex = '男' order by BAge desc       ----------查询表中满足条件的所有字段,并按BAge 进行排序。注意:order by 一定是写在where 条件的后面


---------------------字符串函数,日期函数,数学函数,系统函数--------------------------------------


----------------更新表中的数据
update 表名 set 字段名 = 新值 where 条件 ......

-------------示例
select * from Boss
update Boss set BName = 'zhaoliu' where BID = 6


-----------------删除表中数据
drop table 表名               --------删除整个表 ,表结构被删除
delete from 表名 [where 条件]  --------删除表中的数据(与truncate table 的区别见前面)
truncate table 表名           ---------删除表中的数据

----------------示例
delete from Boss where BID = 6

delete from Boss

truncate table Boss

----------------------------------------------聚合函数--------------------------------


----------------分组查询
select * from 表名 group by 字段

select * from 表名 where 条件 group by 字段         -----错误

select 字段1,字段2... from 表名 where 条件 group by 字段1,字段2 ...

select 聚合函数,字段1,字段2... from 表名 where 条件 group by 字段1,字段2 ...

----------------示例
select * from Boss

select * from Boss group by BName                ----错误

select BName , BAge from Boss group by BName,BAge   -------一定要对所查询的所有字段都进行group by

select avg(BAge),max(BName),count(*) from Boss
  
select avg(BAge),max(BName),count(*) , BName from Boss group by BName         

select avg(BAge),max(BName),count(*) ,BName from Boss where BAge < 28 group by BName               -----注意:group by一般在where后面

-----------------摔选 ( having )    注意having 一定是在group by的后面

select avg(BAge),max(BName),count(*) ,BName from Boss where BAge < 28 group by BName having BSex <> '女'   ------错误

select avg(BAge),max(BName),count(*) ,BName from Boss where BAge < 28 group by BName having BName <>'xmm'


------------------------------查询语句的一般形式
select 字段名/... from 表名
[where 条件]
[group by 字段]
[having 字段]
[order by 字段]



------------------修改表结构(添加一列、删除一列、... 添加约束等)    二期内容,大家有一定的了解就行,到二期学的时候再具体理解
alter tabel 表名
add 字段 数据类型 约束

----------示例
create table a
(
  name varchar(20),
  sex varchar(20)
)

alter table a
add id int primary key identity(1,1)
----删除一列
alter table 表名
drop column 列名

......

----------增加约束
----主键约束
alter table 表名
add constraint 约束名 primary key 表名(主键字段名)

----检查约束
alter table 表名
add constraint 约束名 check('表达式')

----外键约束
alter table 表名
add constraint 约束名 foreign key 外键表(外键字段) references 主表(主表主键字段名)

[[it] 本帖最后由 yd4433 于 2008-5-15 15:17 编辑 [/it]]
搜索更多相关主题的帖子: 数据库 语法 经典 贡献 数据文件 
2008-05-15 15:12
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
   希望对大家 有帮助.... ..................

------...-.-..-...-----........-------.......----.....------....||- - !
2008-05-15 15:14
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
自己顶起来  希望大家都能看到

------...-.-..-...-----........-------.......----.....------....||- - !
2008-05-15 15:15
yd4433
Rank: 1
等 级:新手上路
帖 子:404
专家分:0
注 册:2008-3-9
收藏
得分:0 
总结的这样好的东西 竟然没人顶汗....................

------...-.-..-...-----........-------.......----.....------....||- - !
2008-05-17 21:31
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
有心了 赞一个
2008-05-17 22:08
古木夕阳
Rank: 2
等 级:新手上路
威 望:4
帖 子:286
专家分:0
注 册:2007-10-4
收藏
得分:0 
很有帮助   顶下

美思乐特产  店铺虽小, 胃口不小。 http://shop62436858./
2008-05-25 22:45
wyl918
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-2-7
收藏
得分:0 
帮你顶
呵呵
2008-05-27 09:25
六月阳光
Rank: 1
来 自:湖南省株洲市茶陵县O舫乡中洲村 ...
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-7-13
收藏
得分:0 
我顶你个。。。。
...
2008-05-27 09:40
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
非常基础,但是却非常有用的东西,顶!
非常基础,但是却非常有用的东西,顶!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2008-05-27 15:55
kaikaixinxin200
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-05-30 18:53
快速回复:贡献数据库基本语法的总结[ 经典 ]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030971 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved