格式:
if exists(select * from sysdatabases where name='数据库名')
drop database 数据库名
go
例子:
if exists(select * from sysdatabases where name='musicDB')
drop database musicDB
go
格式:
create database 数据库名
go
例子:
create database musicDB
go
格式:
if exists(select * from sysobjects where name='表名')
drop table 表名
例子:
if exists(select * from sysobjects where name='T_speciality')
drop table T_speciality;
格式:
create table 表名(
列名1 数据类型,
列名2 数据类型
…………
)
go
例子:
create table T_speciality(
specialityid varchar(20) primary key,
specialityname varchar(20)
)
go
格式:
drop database 数据库名
例子:
drop database mystyle
格式:
drop table 表格名称
例子:
drop table tbl_Music
格式:
truncate table 表名
例子:
truncate table tbl_Music
格式:
delete from 表名 where 列名='条件'
例子:
delete from tbl_Music where musicName='菊花台'
注意:当没有where条件时则会清空整张表的数据
格式:
alter table 表名 drop column 列名
例子:
alter table tbl_Music drop column singer_id
注意:使用该语句则会将该列的所有的数据都删除,包括列名
格式:
exec sp_rename '旧表名', '新表名';
例子:
exec sp_rename 'tbl_Music', 'musics';
注意:更改对象名的任一部分都可能会破坏脚本和存储过程。所以不赞成修改表名
增加一列
格式:
alter table 表名
add 列名 字符类型
例子:
alter table tbl_Music
add score varchar(20)
格式:
exec sp_rename '表名.旧列名','新列名','column'
例子
exec sp_rename 'musics.musicid','id','column'
注意:这样修改同样会破坏储存过程,建议先删除这一列再添加新的列。
格式:
alter table 表名 alter column 列名 新的数据类型
例子:
alter table musics alter column clicknumber varchar(20)
注意:主键不能修改,字符型的不能转为int型的。
格式:
update 表名 set 列名='修改的值'
where 条件
例子:
update musics set clicknumber='200'
where id=3
注意:主键不能修改
数据库查询的基本格式为:
格式:
select * from 表名
-- “*”代表所有列
例子:
select * from musics
格式:
select 列名 as '别名',列名
from 表名
-- 也可以不给列取别名
例子:
select id as '账号',musicname
from musics
内连接 | 全连接 | 左连接 | 右连接 |
---|---|---|---|
Inner join | Full Outer join | Left join | Right join |
格式:
select *
from 表名1 别名1
inner join 表名2 别名2
on 别名1.主键=别名2.外键
例子:
select *
from [dbo].[tbl_Music] t1
inner join [dbo].[tbl_Menu] t2
on t1.musicId=t2.musicId
格式:
select *
from 表名1 别名1
[full/left/right]join 表名2 别名2
on 别名1.主键=别名2.外键
例子:
select *
from [dbo].[tbl_Music] t1
full join [dbo].[tbl_Menu] t2
on t1.musicId=t2.musicId
格式:
select *
from 表名1 别名1
inner join(
子查询语句
) 别名2
on 别名1.共同拥有的键名=别名2. 共同拥有的键名
go
例子:
select t4.userName as '用户名',t4.menuName as'歌单名',t3.musicName as '歌曲名',t3.clickNumber as'点击数量'
from [dbo].[tbl_Music] t3
inner join(
select t1.userId,t1.userName,t2.musicId,t2.menuName
from [dbo].[tbl_User] t1
inner join [dbo].[tbl_Menu] t2
on t1.userId=t2.userId) t4
on t3.musicId=t4.musicId
go
注意:
子查询语句中不能使用select *,应为使用select * 查询了所有的内容,就会由两个相同的列,并且在查询中必须把与主查询相同的键给查询出来,否则无法进行连接查询。
聚合函数如下所示:
select avg(age)from student group by sex
SELECT 所有查询的内容
FROM 表
GROUP BY 分组条件
例子:
- • 统计每个客户经理所经手的质押业务数
SELECT t1.agency_id AS '客户经理编号',COUNT(*)AS '客户数量'
FROM
t_agency_info t1
RIGHT JOIN
t_impawn_info t2
ON t1.agency_id=t2.agency_id
GROUP BY t2.agency_id
注意:
一旦使用min ,max ,sum,avg ,count 只能查询相对应的聚合数,和分组条件,其他的都不能再查询了。
排序分为降序和升序。
升序:
select * from emp order by id asc
降序:
select * from emp order by id desc
按多列排序:
select * from emp order by id asc,name asc
限制固定行数显示:
select top 2 id,name from emp where deptno=2
返回百分之多少行:
select top 20 percent id,name from emp where deptno=2
日期部分 | 缩写 |
---|---|
year | yy, yyyy |
month | mm, m |
day | dd, d |
week | wk, ww |
weekday | dw |
hour | hh |
minute | mi, n |
例子:
-- 获取当前年份
select datename(yy,GETDATE());
select datename(yyyy,GETDATE());
select datename(year,GETDATE());
格式:
alter table 表名
add 列名 数据类型
go
例子:
alter table tbl_Music
add score varchar(20)
go
方法一:安照列名依次给出数据值,不能交换顺序,数据类型不能出错
insert into demo values
('zhang',25,1),
('li',28,2)
方法二:安照指定顺序给出数据值
insert into demo (nname,age,sex) values ('san',18,0)
方法三:交换顺序,数值按照列名给就行
insert into demo (nname,sex,age) values ('san',1,22)
方法四:没给数值的列显示null
insert into demo (nname) values ('li')
2.复制表中数据到另一个表中:
insert into demo1(nname,nage,asex) select nname,age,sex from demo
注意事项
1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;
2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;
3:不能为标识列指定值,因为它的数字是自动增长的;
4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;
5:插入的数据项,要求符合检查约束的要求
6:具有缺省值的列,可以使用default(缺省)关键字来代替插入的数值