SQL语句(建库、建表、修改语句)
--创建⼀个数据库名为‘sql_test’
create database sql_test
go
--打开数据库 sql_test
use sql_test
go
--建⽴学⽣表
create table 学⽣
(学⽣编号 char(4) primary key, 学⽣名字 varchar(50)not null)
go
-
-修改学⽣表
alter table 学⽣
add 班级编号 char(4) null --添加班级编号字段
-- (注意如果添加的字段不为空的话,是不能被添加的)
go
--建⽴班级表
create table 班级
(班级编号 char(4) primary key ,班级名称 varchar(50)not null)
go
--建⽴课程表
create table 课程
(课程编号 char(4) primary key ,课程名称 varchar(50) not null,开课⽇期 datetime )
go
--修改课程表
alter table 课程
add 课程代号 varchar(10) null --添加课程代号字段
go
alter table 课程
drop column 开课⽇期  --删除开课⽇期字段
go
alter table 课程
alter column  课程名称 varchar(20) not null  --修改课程名称字段
go
--建⽴⼀个product_test_one 表,与下个表类似,只不过在constraint前⾯有个‘逗号’不影响执⾏
create table product_test_one
(
id char(10) not null, name varchar(20) null, price money default 20.5,quantity smallint null, constraint pk_id primary key clustered (id)
)
go
--建⽴⼀个product_test_two 表
/*
添加 ‘主键约束’,语句为:constraint pk_id primary key clustered (id)
constraint 约束的名称 primary key clustered (字段名),其中clustered为聚簇索引,也是系统默认值
*/
create table product_test_two
(
id char(10) not null, name varchar(20) null, price money default 20.5,quantity smallint null constraint pk_id2 primary key clustered (id)
)
go
--删除表 pruduct_test_one表
drop table product_test_one
go
/* 唯⼀性的约束⽤于指定⼀个或则多个列的组合值具有唯⼀性,
以防⽌在列中输⼊重复的值,没个列中只能有⼀个主键,因此,当表中已经有⼀个主键时,
如果还需要保证其他的标⽰符唯⼀时,就可以使⽤唯⼀约束*/
--建⽴⼀个student表,使其中的 name 字段具有唯⼀性
create table student
(
id char(8), name char(10) --表字段
constraint pk_id primary key (id), --添加⼀个主键约束
constraint uk_name unique (name) --添加⼀个唯⼀性约束
)
go
--建⽴⼀个student4表,同上 (注意:constraint 与constraint 之间⼀定要有逗号,否则出错!)
create table student4
(
id char(8), name char(10) --表字段
constraint pk_id4 primary key (id), constraint uk_name4 unique (name)
)
go
-- 删除表student4
drop table student4
go
--建⽴⼀个student3表,同上
create table student3
(
id char(8), name char(10), --表字段
constraint pk_id3 primary key (id) ,constraint uk_name3 unique (name)
)
go
--删除表student3
drop table student3
go
/*检查约束对输⼊列或整个表中的值设置检查条件,以限制输⼊的值,保证数据库的完整性。
⼀个表中可以定义多个检查约束;每个表中每个字段只能定义⼀个检查约束;
在多个字段上定义检查约束,则必须将检查约束定义为表级约束;
当执⾏insert语句或则update语句时,检查约束将验证数据;检查约束中不能包含⼦查询*/
-
-constraint 约束名 check(逻辑条件表达式)
--创建⼀个'员⼯'表,使其输⼊的性别字段(sex)只能接受‘m’或则‘f’,⽽不能接受其他数据
--并且为phone字段创建检查约束,限制只能输⼊类似010*******之类的数据,⽽不能随意输⼊其他数据
create table 员⼯
(
id char(5),name char(20),sex char(2),phone int
constraint pk_zid primary key (id),      --此间⼀定要有‘逗号’分隔 ,定义主键约束
constraint chk_sex check (sex in ('f','m') ),
constraint chk_phone check (phone like '(010) [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]')
)
go
/*默认约束指定在插⼊操作中如果没有提供输⼊的值时,则系统⾃动指定值。
默认约束可以包含常量、函数、不带变元的内建函数或空值。
每个字段只能定义⼀个默认约束,
如果定义的默认值长于其对应字段的允许长度,那么输⼊到表中的默认值将被截断
不能加⼊到带有identity属性或者数据类型为timestamp的字段上
如果字段定义为⽤户定义的数据类型,⽽且有⼀个默认绑定到这个数据类型上,则不、允许该字段有默认约束
*/
--constraint 约束名 default 约束表达式 [for 字段名]
-- 创建⼀个表‘默认约束’,为字段sex创建默认约束
create table 默认约束
(
id char(5) primary key ,sex varchar(2) constraint con_sex default 'm'
)
go
--修改‘默认约束’表
alter table 默认约束
add name varchar(10)null constraint con_name default '你好宝贝' --增加⼀个字段为‘name’,默认值为‘你好宝贝’go
/*利⽤系统存储过程sp_help查看表信息,也可以指定数据库对象的信息,
还可以提供系统或则⽤户定义的数据类型的信息,sq_help存储过程只⽤于当前的数据库,
如果不指定对象的名称,系统默认为当前数据库的所以名称、对象的所有者和对象的类型。
语法如: sq_help [[@objname=]name]*/
--往班级表⾥添加8条记录
insert into 班级 values('bj01','⼀班')
insert into 班级 values('bj02','⼆班')
insert into 班级 values('bj03','三班')
insert into 班级 values('bj04','四班')
insert into 班级 values('bj05','五班')
insert into 班级 values('bj06','六班')
insert into 班级 values('bj07','七班')
insert into 班级 values('bj08','⼋班')
go
--显⽰班级所以记录
select * from 班级
go
--删除班级表⾥班级编号⼤于bj06的记录
delete from 班级 where 班级编号>'bj06'
go
--显⽰班级所以记录
select * from 班级
go
--向学⽣表⾥添加记录
insert into 学⽣ values('xs01','one','bj01')
insert into 学⽣ values('xs02','two','bj01')
insert into 学⽣ values('xs03','three','bj01')
insert into 学⽣ values('xs04','four','bj02')
insert into 学⽣ values('xs05','five','bj03')
insert into 学⽣ values('xs06','six','bj02')
insert into 学⽣ values('xs07','seven','bj04')
insert into 学⽣ values('xs08','eight','bj03')
insert into 学⽣ values('xs09','nine','bj04')
增加字段的sql语句insert into 学⽣ values('xs10','ten','bj05')
insert into 学⽣ values('xs11','eleven','bj06')
insert into 学⽣ values('xs12','twleve','bj06')
go
--显⽰学⽣所有的记录
select * from 学⽣
go
--连接查询
select * from 学⽣,班级 where 学⽣.班级编号=班级.班级编号
go
--以下效果同上⼀条相同
/*
--第⼀个效果
select * from 学⽣ a,班级 b where a.班级编号=b.班级编号
go
--第⼆个效果
select * from 学⽣ as a,班级 as b where a.班级编号=b.班级编号go
*/
--选择的连接查询
select 学⽣.学⽣编号,班级.班级编号, 学⽣.学⽣名字,班级.班级名称 from 学⽣,班级 where 学⽣.班级编号=班级.班级编号
go
--以下效果同上⼀条相同
/*
--第⼀个效果
select a.学⽣编号,b.班级编号, a.学⽣名字,b.班级名称 from 学⽣ a,班级 b where a.班级编号=b.班级编号
go
--第⼆个效果
select a.学⽣编号,b.班级编号, a.学⽣名字,b.班级名称 from 学⽣ as a,班级 as b where a.班级编号=b.班级编号
go
*/
--查询⼀班的学⽣
select* from 学⽣ where 班级编号 in(select 班级编号 from 班级 where 班级编号='bj01')
go
--与上⾯⼀条查询语句⼀样功能
select a.学⽣编号,a.学⽣名字,a.班级编号 from 学⽣ as a ,班级 as b where a.班级编号=b.班级编号 and b.班级编号='bj01' go
--统计⼀班学⽣⼈数
select count(学⽣编号)as 学⽣统计 from 学⽣
where 班级编号 in(select 班级编号 from 班级 where 班级编号='bj01')
go
--group的⽤法和count()函数的⽤法
/*在 select 语句⾥出现聚合函数,并且有其他字段时,⼀定要有group by ⼦句,
并且在group by⾥写出在select⾥出现的每⼀个字段,否则会出错
例如下⾯的语句是错误的:
select count(学⽣编号)as 学⽣统计,学⽣名字,班级编号 from 学⽣
where 班级编号 in(select 班级编号 from 班级 where 班级编号='bj01')
group by 学⽣名字
go
*/
--统计⼀班学⽣⼈数,并显⽰学⽣的名字和所在班级
select count(学⽣编号)as 学⽣统计, 学⽣名字,班级编号 from 学⽣
where 班级编号 in(select 班级编号 from 班级 where 班级编号='bj01')
group by 班级编号,学⽣名字
go

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。