SQL server 数据库 sql常用语句

一、使用查询分析器-管理数据库和数据表
#1. 创建数据库格式
create database databasename
on primary
(
name = "databasename_data" ,
filename = "filename\databasename_data.mdf" ,
size = 8 MB,
maxsize = 100 MB,
filegrowth = 10 %
)
log on
(
name = "databasename_log" ,
filename = "finename\database_log.ldf" ,
size = 5 MB,
filegrowth = 10 %
)
#2. 创建数据库
create database student -- 创建数据库
on primary -- 指定数据库文件位置
( name = "student_data" , -- 指定数据库的名称
filename = "d:\Dy231016\student_data.mdf" , -- 指定数据库库文件存放的位置
size = 8 MB, -- 指定数据库库文件的初始大小
maxsize = 100 MB, -- 指定数据库库文件的最大值
filegrowth = 10 % ) -- 指定数据库库文件的增长速度
log on -- 定义日志文件信息
( name = "student_log.ldf" , -- 指定日志文件名称
filename = "D:\Dy231016\student_log.ldf" , -- 指定日志文件存放位置
size = 1 MB, -- 指定日志文件大小
filegrowth = 10 % ) -- 指定日志文件增长率
-- 单行注释: --
-- 多行注释: /* 注释内容 */
/* 如果在添加数据库的时候,
不知道是否已经有数据库存在,
该如何操作? */
#3. 删除数据库
drop database databasename
#4. 判断数据库是否已经存在
if exists ( select * from sys .databases where name = 'student1' ) -- 判断系统中是否
存在该数据库
drop database student1 -- 如果存在,使用 drop 语句删除该数
据库
create database student1
drop database student1 -- 删除数据库
#5. 创建表格式
/* 创建表的格式
create table 表名 (
字段 1 数据类型 属性 约束,
字段 2 数据类型 属性 约束,
字段 3 数据类型 属性 约束
)
*/
#6. 创建表
use student -- 切换数据库
create table stuinfo ( -- 创建表
stu_id varchar ( 20 ) NOT NULL , -- 指定表的学号字段
stu_name varchar ( 50 ) NOT NULL , -- 指定表的姓名字段
stu_sex char ( 2 ) NOT NULL , -- 指定表的性别字段
stu_age int, -- 指定表的年龄字段
stu_add varchar ( 100 ) -- 指定表的地址字段
)
-- 创建一个班级表
create table class (
id int identity ( 1 , 1 ) , -- 设置编号自增长
cla_id varchar ( 20 ) not null ,
cla_name varchar ( 10 ) not null
)
-- 如何决断表是否存在,如果存在将其删除。
if exists ( select * from sys .objects where name = 'class' and type = 'U' ) -- 查
询表是否存
drop table class -- 如
果存在就将其删除
/*
表约束:
主键约束: primary key
外键约束: foreign key
默认值: default
非空: not null
检查约束: check
唯一: unique
标识:
自增长: identity
*/
-- 添加约束的格式
/*
alter table tablename
add constraint 约束名称 约束类型
*/
-- 删除约束格式
/*
alter table table name
drop constraint 约束名称
*/
-- 添加主键约束:
alter table stuinfo
add constraint pk_id primary key ( stu_id )
-- 添加默认约束
alter table stuinfo
add constraint def_set default ( ' 男 ' ) for stu_sex
-- 添加检查约束
alter table stuinfo
add constraint ch_age check ( stu_age >= 0 and stu_age <= 100 )
-- 添加唯一约束
alter table stuinfo
add constraint un_addr unique ( stu_add )
-- 修改非空约束
alter table stuinfo
alter column stu_age int not null
-- 设置 class 表的主键
alter table class
add constraint pk_cla_id primary key ( cla_id )
-- 向已有的表中添加字段
alter table stuinfo
add cla_id varchar ( 20 ) not null
-- 向已有的表中添加字段
alter table stuinfo
add id int not null
-- 给 stuinfo 表中的 cla_id 添加外键
alter table stuinfo
add constraint for_cla_id foreign key ( cla_id ) references class ( cla_id )
#7. 删除约束
/*
删除约束格式:
alter table tablename
drop constraint 约束名称
*/
-- 删除主键约束
alter table stuinfo
drop constraint pk_id
-- 删除默认约束
alter table stuinfo
drop constraint def_set
-- 删除检查约束
alter table stuinfo
drop constraint ch_age
-- 删除唯一约事
alter table stuinfo
drop constraint un_addr
#8 、创建表时直接添加约束
-- 创建班级表
create table class (
id int identity ( 1 , 1 ) ,
cla_id varchar ( 20 ) primary key not null ,
cla_name varchar ( 30 ) not null
)
-- 创建学生信息表
create table stuinfo1 (
id int identity ( 1 , 1 ) not null , -- 设置序号为自增长
stu_id varchar ( 20 ) primary key not null , -- 设置学号
stu_name varchar ( 40 ) not null , -- 姓名
stu_sex char ( 2 ) default ( ' 男 ' ) , -- 设置性别默认值为男
stu_age int check ( stu_age >= 1 and stu_age <= 100 ) , -- 设置年龄范围
stu_tel char ( 11 ) unique not null , -- 设置手机号不能重复
stu_add varchar ( 50 ) , -- 地址
cla_id varchar ( 20 ) references class ( cla_id )
)
#9 、判断字段是否存在
-- 判断 stuinfo 表中是否存 tel 字段,如果有将其删除,如果没有创建。
if exists ( select * from sys .columns where name = 'tel' and
object_id = object_id ( 'stuinfo' ) ) -- 判断字段是否存
alter table stuinfo -- 更新表结构
drop column tel -- 删除字段
else -- 否则
alter table stuinfo -- 更新表字段
add tel varchar ( 11 ) not null -- 添加字段
#10 、删除表
drop table tablename
-- 删除学生表
use Dy231010
drop table stuinfo
二、使用查询分析器管理表
1 、向表中插入单条数据
-- 向表中插入数据
-- 格式
/**
insert [into] < 表名 > [ 字段名称 ] values < 字段的值 > 当给出指定的字段时,字段可以是部分,也
可以全部
insert into < 表名 > values < 字段的值 > 当省略字段项时,所给出的值列表必须与字段的位置、数
量、数据类型保持一直;
insert < 表名 > values < 字段的值 >
*/
-- 案例
insert class values ( '12345' , ' 运维实施 ' )
insert into stuinfo1 ( stu_id,stu_name,stu_sex,stu_add,stu_age,stu_tel )
values ( '10001' , ' 张三 ' , ' 男 ' , ' 郑州金水区 ' , 19 , '12345' )
insert into stuinfo1 values ( '10002' , ' 李四 ' , ' 男 ' , 19 , '19' , ' 郑州金水区 ' , '12345' )
2 、向表中插入多条数据

格式一

insert into < 表名 > values ( ''' 值 1' , ' 值 2' , ' 值 3' , ' 值 4' ) , ( ' 值 1' , ' 值 2' , ' 值 3' , ' 值 4' )

案例:

insert class values ( '1237' , 'abcf' ) , ( '128' , 'ad' )

格式二

insert into < 表名 > < 字段 1 ,字段 2 ,字段 3 ,字段 4 ,字段 5.... >
select ' 值 1' , ' 值 2' , ' 值 3' , ' 值 4' , ' 值 5' , ' 值 6' unique ,
select ' 值 1' , ' 值 2' , ' 值 3' , ' 值 4' , ' 值 5' , ' 值 6' unique ,
select ' 值 1' , ' 值 2' , ' 值 3' , ' 值 4' , ' 值 5' , ' 值 6' unique ,
select ' 值 1' , ' 值 2' , ' 值 3' , ' 值 4' , ' 值 5' , ' 值 6'

案例:

insert into class ( cla_id,cla_name )
select '113' , 'aaa' union
select '114' , 'bbb'
3 、查询数据表内容

格式

select < 字段名 1 > , < 字段 2 > ,.. < 字段 n > from < 表名 > [ where 条件表达式 ]

案例

不使用条件查询

-- 查询整个表信息
select * from stuinfo1
-- 查询部分表 信息
select stu_id,stu_name from stuinfo1

使用条件查询

-- 查询学生信息表中名字叫张三的学生信息
select * from stuinfo1 where stu_name = ' 张三 '
-- 查询学生信息表中年龄大于 20 岁的学生信息
select * from stuinfo1 where stu_age > 20
-- 查询学生信息表中性别为男性的学生的姓名,手机号
select stu_name,stu_tel from stuinfo1 where stu_sex = ' 男 '
select stu_name,stu_tel from stuinfo1 where stu_sex <> ' 女 '
-- 查询学生信息表中年龄大于 20 岁并且性别为男的学生信息
select * from stuinfo1 where stu_age > 20 and stu_sex = ' 男 '
-- 查询学生信息表中年龄大于 20 岁或性别为男的学生信息
select * from stuinfo1 where stu_age >= 20 or stu_sex = ' 男 '
-- 模糊查询
-- 查询学生信息表中姓张学生的信息。模糊查询: like 通配符: % 表示 0 个或多个字符 _ :表示一个字
符;
select * from stuinfo1 where stu_name like ' 张 %'
select * from stuinfo1 where stu_name like ' 李 %'
select * from stuinfo1 where stu_name like ' 李 _'
-- 区间查询
-- 查询年龄在 18 - 22 岁之间的所有学生信息; between and (包含界值)
select * from stuinfo1 where stu_age between 18 and 22
-- in 子查询
-- 查询年龄在一个范围之内的学生信息;( 1 , 5 , 7 , 18 , 20 , 22 , 30 , 50 )
select * from stuinfo1 where stu_age in ( 1 , 5 , 7 , 18 , 20 , 22 , 30 , 50 )

子查询

select * from stuinfo1 where stu_age in ( select stu_age from stuinfo1 where
stu_age > 18 and stu_age < 22 )
-- not in 子查询:不在某个范围之内
select * from stuinfo1 where stu_age not in ( 1 , 5 , 7 , 18 , 20 , 22 , 30 , 50 )
-- null : 空值 表示时,使用 is null 表示某个值为空值;
select * from stuinfo1 where cla_id is null
-- is not null 表示某个值不为空值;
select * from stuinfo1 where cla_id is not null
4 、表更新操作
/*
表数据更新:格式
update < 表名 > set 字段名 = 值 [where 条件表达式 ]
*/
-- 将所有学生的年龄加 1 岁
select * from stuinfo1
update stuinfo1 set stu_age = stu_age + 1
select * from stuinfo1
select * from class
-- 将张姓学生的班级修改为 1236
select * from stuinfo1 where stu_name like ' 张 %'
update stuinfo1 set cla_id = '1236' where stu_name like ' 张 %'
5 、表备份操作
/*
给表做备份:
insert into < 新表名 > [ 字段名 ] select 字段名 from < 原表名 > [where 条件表达式;该方式备份
表,新表必须提前创建好
select [ 字段 ] into < 新表名称 > from < 原表名 > 注意:该方式备份,新表不需要提前创建;
*/
select * into stuinfo from stuinfo1
insert into stuinfo1(stu_id,stu_name,stu_sex,stu_age,stu_tel) select
stu_id,stu_name,stu_sex,stu_age,stu_tel from stuinfo
select * from stuinfo
select * from stuinfo1
6 、表删除操作
/*
删除数据: delete
delete from < 表名 > [where 条件表达式 ]
truncate table < 表名 >
delete 删除时,如果有自增长列,再添加数据时,不会从头开始;
truncate 删除时,如果有自增长列,再添加数据时,自增长列会从头开始;
drop 删除表时,表结构和内容全部删除。
*/
delete from stuinfo1
delete from stuinfo1 where stu_age = 20
select * from stuinfo1
truncate table stuinfo1

相关推荐
无名-CODING6 分钟前
Docker 部署 Redis:小白一键安装、配置与迁移教程
数据库·redis·bootstrap
IMPYLH17 分钟前
Linux 的 env 命令
linux·运维·服务器·数据库
fobwebs23 分钟前
如何通过phpmyadmin指令来优化数据库表,给数据库“减肥”。
数据库·wordpress·数据库优化·phpmyadmin
syinfo23 分钟前
oracle使用PLSQL导出表数据
数据库·oracle
客梦26 分钟前
数据库基础
数据库·笔记
老苏畅谈运维28 分钟前
Oracle AI Database 26ai 安装实战
数据库·oracle·oracle 26ai
Rick199329 分钟前
SQL优化
数据库·sql
沪漂阿龙29 分钟前
掌握MySQL这些函数,SQL水平直接起飞!
数据库·sql·mysql
无忧智库31 分钟前
破局与重构:基于“智慧大脑”的企业全面数据化经营深度解构(PPT)
数据库·重构
大嘴皮猴儿38 分钟前
零基础入门:跨境电商产品图片多语言翻译的完整流程与跨马翻译实操
大数据·数据库·人工智能·自动翻译·教育电商