数据库SQL Server基础指令

373 阅读6分钟

数据库SQL Server基础指令

## 前言

该文章的内容均为作者大学课程所教授的数据库指令,可能在内容上有部分的残缺,但最基础的功能均已覆盖完全。本文采取的方式是例子+代码的方式,可以打开SQL Server同步敲一敲,希望能对你有所帮助。

创建数据库

语法:create database 数据库名

注意:此时的SQK Server数据库管理系统会创建一个默认初始大小,默认增量、放置在默认位置的数据库

注释

语法: --

在要输入的话之前加入 -- 即可

  • 效果图:

    效果图

查看数据库放置的位置以及他的编号情况

在SQL Server中,每一个新创建的数据库会在系统数据库master中的sysdatabases表中记录情况:

分析:首先得打开master数据库,再显示sysdatabases表中的所有信息

use master
select *
from sysdatabases

删除数据库

语法: drop database 数据库名

指定初始数据库容量及存放位置

在SQL Server中,创建指定数据库时可以指定初始容量、存放位置等

语法:

create database 数据库名
		on [primary]
	(name='主数据文件名',
		filename='主数据文件.mdf',
		size=XXmb,
		maxsize=XXmb,
		filegrowth=XXmb或者X%
			)
[log on]
name='日志文件名'
filename='日志文件.ldf'
size=XXmb,
maxsize=XXmb,
filegrowth=XXmb或X%

## 创建数据表

语法: 

create table 数据表名
(
  字段名 数据类型及长度 约束
)

例如:

创建tb_user:用户名:密码字段

create table tb_user
(
	username varchar(20)  not null   primary key,
	password varchar(20) not null
)

插入语句

语法:

insert into 数据表名 values(列1值,列2值,....)

或者

insert into 数据表名(列名1,列名2....)  values(列1值,列2值,....)

注意:如果插入的数据中有文本、日期、时间数据类型时,需要使用单引号括起来

注意:如果要查看数据表中的数据,则可以使用select * from 表名 ,然后对照着数据表来插入数据

## 查询表

语法:

select 待显示数据的列
from 要显示数据的表名
  • 效果图:

    效果图

查询表中所有数据信息:

select *
from 表名

条件查询:

select 要查询的列名
from 表名
where 需要满足的条件
  • 条件查询效果图:

效果图

注意:无法查询列表的时候使用SQL Server的intellisense(智能感知功能)需要重新整理一下,用快捷键Ctrl+Shift+R

修改数据值

语法:

update 数据表
set 旧值标识=新值内容

删除表中数据

语法:

delte from 数据表名
where 待删除数据标识=

设置主键

在设置好的表后添加primary key

  • 效果图:

    效果图

添加主键约束

添加主键约束 来保证数据表中的数据的实体完整性 引用完整性 参照完整性 主要有primary key约束 forgin key约束 unique约束 check约束 default约束

### 1.设置primary key约束 共三种方法:字段中设置primary key,表中增加一列指名谁是primary key,利用alter增加约束

第一种方法:设置primary key 优点:简单直接 缺点:一旦创建数据表被执行,没有机会再给他指定相应列为主键

create table Stu_1
(
	sno varchar(10) not null primary key,
	--primary key的意思是主键
	sname varchar(10) not null
)

第二种方法:新增一列 指名谁是key码 优点:更清楚的知道,哪一列是主键 缺点:一旦创建数据表被执行,没有机会再给他指定相应列为主键

create table Stu_2
(
	sno varchar(10) not null,
	sname varchar(10) not null,
	constraint PK_sno primary key(sno)
)

第三种方法:设置primary key约束 利用alter增加约束 工程开发中最常用的方法 优点:可以灵活自如给表添加约束

create table Stu_3
(
	sno varchar(10) not null,
	sname varchar(10) not null
)
alter table Stu_3
add
constraint PK_sno_3  primary key(sno)

创建唯一性约束

语法:(此处为一个例子 需自行进行替换 例如son部分均需要替换成自己使用的表)

alter table 表名
add
constraint PK_s_son foreign key(son),
constraint PK_c_con foreign key(con)

唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束。

例如

给学生表中的学生姓名添加唯一约束unique

alter table s
add
constraint ix_sname unique(sname)

设置范围

例如:

给选课程SC的课程添加检查约束check,设置范围0-100

alter table SC 
add
constraint ck_score check(score between 0 and 100)

此处check括号内的between 范围1 and 范围2 便是设置范围的语法

## 修改列名

例如:

我们将一个学生的表格的列名进行修改,原列名分别为sno sname。利用给列名去别名的方式实现列改名

--将sno->学号 sname->姓名
select sno as'学号',sname as'姓名'
from 表名

关联条件(and 和 or)

例如:

我们显示成绩表SC中成绩大于80并且小于90的同学信息

select *
from SC
where score>80 and score<90

再或者:

我们显示成绩表SC中成绩大于80或者小于90的同学

select *
from SC
where score>80 or score<90

指定显示的行数

例如:

我们想要显示成绩表SC中的前五行信息

这时候就使用top

select top 5*
from SC

再或者,当我们不知道具体行数的时候,我们可以利用百分比来显示

**利用top 和 percent * **

select top (百分比的数字 如这里显示前50%)50 *
from SC

升序和降序显示

例如:

我们用姓名升序来显示学生的信息

使用order by来显示 asc(升序)desc(降序)

注:默认的排序方式便是升序

select *
from S
order by sname asc

条件判断

例如:

我们将成绩大于90的同学给定为优秀;80-90的定位良好;80分以下的定为中

这时候就需要用 case end来实现了,将条件判断及显示的内容写在case end之间

select sno,cno,score=case
when score>90 then'优秀'
when score>80 and score<90 then '良好'
when score<80 then '中'
end
from SC1

模糊查询

模糊查询在我们日常生活中非常常见,例如各大搜索引擎便使用的模糊查询,如Google、baidu等

例如:

我们想要显示以大开始的三个字的所有课程信息,便需要使用模糊查询 like的通配符_

  • 下划线_表示一个内容不限的字符
select *
from 表名
where cname
  • %表示0个或者多个字符

    例如显示以大开始的所有课程信息:

    select * 
    from C
    where cname like '大%'
    

去掉重复内容

在查询过程中难免会出现很多重复的内容,这时候如果我们只想要它出现一次,便可以使用distinct来去掉重复

例如:

去掉重复的学号

select distinct sno
from SC
where sno in(sno)

统计数量

很多时候由于表中的数据过多,但我们又需要知道表的列数,这时候就可以用**count()**来进行查询

select count(*)
from SC

查询最值

例如:

我们要找到成绩表重点最高分,则可以使用 **max()**来查询

select max(score)
from SC

最小值同理,使用**min()**查询即可

select min(score)
from SC

统计并分组

例如:

我们将要统计每一位同学的总分,并且要对其进行分组处理,这时候就可以使用group by进行分组

--as后面跟的是分出组的名称
select sno,sum(score) as 总分
from SC1
group by sno

结束语

以上便是所有的基础指令内容了,可能还不够全面,如果有什么问题或者需要我补充的地方欢迎提出来,也真诚的希望这篇文章对你的学习有所帮助。