首页 > 代码库 > 数据库(二)

数据库(二)

修改表格  

如果SQL server 2008中无法修改表结构,提示错误为:不允许保存修改,……

解决方案:工具→选项→左侧的Designers→表设计器和数据库设计器

去掉“阻止保存要求重新创建表的更改”前面的钩,重新启动系统。

--修改数据库的名字将student的名字修改成xuesheng
sp_renamedb student,xuesheng

增加列:  

Alter table 表名 add 列名 列类型

--修改表,新加入列,注意与内置单词冲突的时候,列名加[]括起来
alter table xinxi add [int] varchar(10)
alter table xinxi add nianling int

删除列: 

alter table 表名 drop column 列名

--修改表删除一列
alter table xinxi drop column [int]

修改列的类型: 

alter table 表名 alter column 列名 新类型

Insert 增(添加) 

应用:表结构不变,只能增加一行或某个值在不是自增长的情况下才能赋值,列名用逗号隔开,值的次序默认为表的次序,如果输入的值不全,可在前面加需要输入的列名,顺序一一对应values值。

--插入数据
insert into xinxi values(1,‘张三‘,96)
insert into xinxi values(2,‘李四‘,91)
insert into xinxi values(3,‘王五‘,69)

Delete 删除 

Delete from 表名       删除表内容(表结构还在)这种删除方式会写日志,所以自增长的序列号会往下延续,不断增加不会从头开始

Truncate table 表名          此删除将表清空,速度快,不写日志,故再输入从头开始

Delete from 表名 where 列名 关系表达式 值            多条件可以加and或or

列名between值1 and 值2 等同于列名<=值2 and 列名>=值1

列名 in(值1,值2,值3,...) 筛选出值为值1或值2或值3...的选项

表中选中某一数据值 按 ctrl+0 此值变为null

Update 改、更新 

Update 表名 set 列名=值,列名=值,…… where 列名 关系表达式 值

update xinxi set fenshu=100 where code=6

Retrieve 检索、查询 

select *from 表

select 列名,列名,…… from 表

select *from 表 where 列名 关系运算符 值 and 列名 关系运算符 值

select *from 表 where 列名 between 1 and 100  (范围查询)

select *from 列名 where 列名 in(3,4,5)

select distinct 列名 from 表    (列去重)

select *from 列名 where name like %5%       %任意多个任意字符;_一个任意字符

---查询语句,条件查询
select *from xinxi
select fenshu,name from xinxi
select fenshu,name from xinxi where name=‘李四‘

select *from xinxi where fenshu between 80 and 100--范围
update xinxi set nianling = 26 where fenshu between 80 and 100
select distinct name from xinxi--针对一列去重显示

update xinxi set name=‘李四‘ where code = 9
select *from xinxi where name=‘李四‘ and nianling =26
select *from xinxi where name=‘李四‘ or nianling =26
select *from xinxi where name in (‘李四‘,‘赵六‘)
select *from xinxi where name not in (‘李四‘,‘赵六‘)
--模糊查询名字里面带四的,通配符%表示任意很多字符
select *from xinxi where name like ‘%四%‘
--下划线表示任意一个字符
select *From xinxi where name like ‘李_‘
--下划线加中括号,等同于in的功能,任意一组满足就查询出来
select *from xinxi where name like ‘_[李四,赵六,田七]‘

筛选 

Select *from 表名 where 列名 关系表达式 值

去重 

Select distinct 列名 from 表名        去除这一列的重复值

模糊查询 

Select *from 表名 where 列名 like ‘王%‘

通配符:%:任意多个字符;_:一个任意字符;[4,5,6]:中括号代表选里面的值其一

排序 

Select *from 表名 order by 列名 asc (升序) 或 desc (降序)

--按年龄排序,asc升序,desc降序,默认不写是升序
select *from xinxi order by nianling asc
select *from xinxi order by nianling desc
--按降序排列分数后,查前三名
select top 3 *from xinxi order by fenshu desc
--按条件查询后排序,查名字叫李四的人谁的分数最高
select top 1 *from xinxi where name=‘李四‘ order by fenshu desc

数据库(二)