数据库基本操作

用命令操作数据库

1.1数据类型
数据类型符号
整数型int,smallint,tinyin,bigint
精确数据型decimal,numeric
浮点型real,float
货币型money,smallmoney
位型bit
字符型char,varchar,nchar,nvarchar,text,ntext
二进制型binary,varbinary,image
日期时间型date,datetime,smalldate,datatime2,datatimeofest,time
时间戳型timestamp
平面和地理位置型geometry,geography
1.2.创建数据定义类型
create  type  [架构名]   用户定义类型名   from   基本数据类型 .......
create type tel from char(11) ,
1.3.删除数据类型
drop type  [架构名] [用户定义类型名]drop type tel
1.4.创建数据库
create database   <数据库名>
on primary 
(<数据文件选项>,……)
log on
(<日志文件选项>,……)
(NAME=‘文件名’,FILENAME=‘文件存储路径文件名’,SIZE=‘初始大小’,MAXSIZE=‘文件最大容量’,FILEGROWTH=‘文件增量’)

create database    JWGL
on primary 
(name='JWGL_dat',filename='D:\programme\SQL\JWGL_dat',size=10MB,maxsize=10MB,
 filegrowth=1MB)
log on
(name='JWGL_log',filename='D:\programme\SQL\JWGL_ldf',size=3MB,filegrowth=10%)

注:数据文件后缀.mdf,日志文件后缀.ldf。一个数据库至少应包含一个数据库文件和一个日志文件

1.5.修改数据库
add FILE <文件选项>:添加新的数据文件
add LOG FILE <文件名>:添加新的日志文件
remove FILE 逻辑文件名:删除文件
add FILEGROUP 文件组名:添加新的文件组
remove FILEFROUNP 文件组名:删除文件组
modify FILE <文件选项>:更改文件属性
modify NAME <文件名>:修改数据库名字
modify FILEGROUNP <文件组名>:修改文件组属性

注:

modify和alter都可以修改

​ 一、功能不同

​ 1、modify:只能修改字段的属性。

​ 2、alter:除了修改字段属性外,还可以做增加删除操作。

​ 二、语法不同

​ 1、modify:修改字段名使用:ALTER TABLE [表名] MODIFY [列名] [数据类型]

​ 2、alter:数据库SQL语言的修改语句,可以用来修改基本表,表示格式为:ALTER TABLE<表名>[改变方式]。

​ 三、范围不同

​ 1、modify:只是alter功能下的一个功能模块。

​ 2、alter:包括“ADD ”、“DROP ”、“CHANGE ”、“MODIFY ”四个功能模块。

1.6.查看数据库信息
EXEC sp_helpdb <数据库名>
1.7.数据库更名
sp_renamedb ‘老名字’,’新名字’
1.8.删除数据库
drop DATABASE <数据库名>

2.查询

2.1创建表
create table [表名]
(列名 数据类型 完整性约束条件,
列名 数据类型 完整性约束条件,
列名 数据类型 完整性约束条件,....
2.2约束条件
not null :限制列取值非空
default:给定默认值
unique:限制不重
check:限制取值范围
primary key:主键约束
foreign key:外码
2.3修改表结构
alter table [表名] [列名] <新数据类型>|add 约束条件
2.4删除表结构
drop  table <表名>
注意:一旦删除,无法恢复
2.5数据库的查询
select   [all | distinct] <目标表达式>
from <基本表或视图> 
where<条件表达式>
group by <列名> [having 内部函数表达式]
order by <列名> [asc | desc]
2.6单表查询
select Sno,Sname,Sdept from Student,   --查询数据库中Student中各个学生的学号,姓名,所在系
select * from Student                  --查询数据库中Student中所有信息
select distinct Sno from SC            --去掉重复行
select Sname ,'出生日期'2021-age from Student --查询全体学生的出生日期并加入一列常列项
select Sno as 学号,Sname as 姓名 from Students --修改查询结果中的列标题,as可有可无

3.条件查询

查询条件谓词
比较=, >, <, >=, <=, != , <>, !<, !>,
确定范围between and , not between and
确定集合in ,not in
字符匹配like , not like
空值is null,is not null
多重条件and ,or

注:<> 不等于。**注释:**在 SQL 的一些版本中,该操作符可被写成 !=。

3.2. where条件查询
select * from Student where Sno=23232select Sname,Sdept,Sage from Student where Sage between 20 and 23
select Sname,Ssex from Student where Sdept in('信息系''数学系')
字符匹配
select * from Student where Sname like '张%'   --查询所有姓张的学生
select * from Student where Sname not like '%[235]' --查询所有学号最后一位不是2,3,5的
select * from where Grade is null     --查询学生成绩是空的学生的所有信息

注:*代表查询所有信息。

3.3对查询结果的操作
order by <列名> [asc|desc]                         --排序  asc升序,desc降序
select * from Student order by Sage               --默认升序
select * from Student order by Sdept,Sage desc    --同一系中学生按年龄升序排序
                                                          返回行数
select top 5 * from Student order by Sage desc    --查询年龄最大的5个人
计算函数
count(*),count(distinct <列名>)sum(distinct <列名>),avg(distinct <列名>)max(distinct <列名>)min(distinct <列名>)
3.4对查询的结果进行分组计算
group by <分组条件> having <组过滤条件>  
select Cno 课程号,count(Sno) 选课人数 from SC group by Cno   --统计每门选课人数
select Sno,avg(Grade) 平均成绩,count(*) 选修门数,from SC Group by Sno having count(*)>4         --查询选修门数大于4门的学生的平均成绩和选修门数
3.5.SELECT INTO 语句

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

3.6.SQL SELECT INTO 语法

您可以把所有的列插入新表:

SELECT * INTO new_table_name  FROM old_tablename

或者只把希望的列插入新表:

select column_name(s) into new_table_name  from old_tablename

IN 子句可用于向另一个数据库中拷贝表:

select * into Persons in 'Backup.mdb' from Persons

如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:

select LastName,FirstName into Persons_backup from Persons

4.多表的数据查询

4.1内连接

如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合新的记录

select  ... from <表名> join <被链接表名>  on [连接条件]
select Sname,Cno,Grade from Student join SC on Student.Sno=SC.Sno where Sdept='计算机系'                    ---查找计算机系学生的选修课情况
select Sname,Cname,Grade from Student join SC  s on s.Sno=SC.Sno  join Course c on c.Cno=SC.Cno where Sdept='信息系' and Cname='程序设计' 
									---查询信息系选修了程序设计课的修课成绩
4.2自连接

指相互连接的表物理上为同一张表,即必须为两个表取别名,使之逻辑上成为两个表

select s2.Sname,s2.Sdept from Student s1 join Student s2 on s1.Sdept=s2.Sdept  where s1.Sname='刘晨' and s2.Sname != '刘晨'
        ---查询与刘晨在同一系学习的学生姓名和所在系
4.3外连接
4.4交叉连接

5.子查询

5.1使用自查询进行基于集合的测试
5.2使用自查询进行比较测试
5.3使用子查询进行存在性测试

6.集合查询

6.1并运算
6.2交运算
6.3差运算

7数据的操纵

7.1插入数据
insert into <表名> values(值,值,值 )
7.2更新数据
update <表名> set <列名=表达式> where <更新条件>
7.3删除数据
delete from <表名>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值