SQl Server建立数据库和表,单表查询

//题目要求:

/*

建立一个数据库名字叫LZYSQL;

两个数据文件

  名字:LZYCARD_1 物理名字:LZYCARD_1.MDF(10MB。最大大小不限制,按2MB增长)

  名字:LZYCARD_2 物理名字:LZYCARD_2.NDF(10MB。最大大小不限制,按2MB增长)

  分别在不同的文件组中;

新建用户文件组LZY1,存储LZYCARD_2

2个日志文件

名字:LZYLOG_1 物理名字:LZYLOG_1.LDF(大小为1MB,最大大小为30MB,按10%增长)

名字:LZYLOG_2 物理名字:LZYLOG_2.LDF(大小为1MB,最大大小为30MB,按10%增长)

*/

数据库操作

-------------------------------------------------------------------

//创建数据库

CREATE DATABASE LZYSQL

ON

(

NAME='LZYCARD_1',

FILENAME='F:\DATA\LZYCARD_1.MDF',

SIZE=10,

MAXSIZE=unlimited,

FILEGROWTH=2MB

),

FILEGROUP LZY1

(

NAME='LZYCARD_2',

FILENAME='F:\DATA\LZYCARD_2.NDF',

SIZE=10,

MAXSIZE=unlimited,

FILEGROWTH=2MB

)

LOG ON

(

NAME='LZYLOG_1',

FILENAME='F:\DATA\LZYLOG_1.LDF',

SIZE=1,

MAXSIZE=30MB,

FILEGROWTH=10%

),

(

NAME='LZYLOG_2',

FILENAME='F:\DATA\LZYLOG_2.LDF',

SIZE=1,

MAXSIZE=30MB,

FILEGROWTH=10%

)

//增加辅助数据文件 LZUYSQL_3 物理名字:LZYCARD_3.NDF(5MB。最大大小不限制,按10%增长)

ALTER DATABASE LZYSQL

ADD FILE

(

NAME='LZYSQL_3',

FILENAME='F:\DATA\LZYLOG_3.NDF',

SIZE=5MB,

MAXSIZE=unlimited,

FILEGROWTH=10%

)

//删除LZYLOG_2

ALTER DATABASE LZYSQL

REMOVE FILE LZYLOG_2

//修改文件参数

ALTER DATABASE LZYSQL

MODIFY FILE

(

NAME=STUDENY_DATA,

SIZE=30MB

)

//改名

ALTER DATABASE LZYSQL

MODIEY NAME=LZYSQLNB

②表操作

------------------------------------------------------------------------------

用SQL语句完成下列操作

先建立数据库Students

CREATE DATABASE Students

ON

(

NAME="STU_1",

FILENAME="F:\DATA\STU_1.MDF",

SIZE=5,

MAXSIZE=unlimited,

FILEGROWTH=10%

)

LOG ON

(

NAME="STULOG_1",

FILENAME="F:\DATA\STULOG_1.LDF",

SIZE=1,

MAXSIZE=UNLIMITED,

FILEGROWTH=10%

)

1、创建表“学生”、“成绩”表,并添加两条记录数据,如QQ群发的图所示:

USE Students

CREATE TABLE 学生

(

学号 char(8) NOT NULL PRIMARY KEY,

姓名 char(20) NOT NULL,

性别 char(2) NOT NULL CONSTRAINT ck_chj CHECK(性别 in('男','女')),

出生日期 date NOT NULL,

专业 char(30),

总分数 int

)

CREATE TABLE 成绩

(

学号 char(8) NOT NULL PRIMARY KEY,

课程号 char(8) NOT NULL,

成绩 int

)

INSERT

学生(学号,姓名,性别,出生日期,专业) values('121001','无极剑圣','男','1990-02-21','无极剑道专业'),

('121002','卡尔琳娜','女','1990-02-21','死亡莲华专业')

2、向学生表中添加一条记录,学号为122005,姓名为张丽,性别为女,专业是计算机

INSERT

学生(学号,姓名,性别,出生日期,专业) values('122005','张丽','女','1990-02-21','计算机')

3、删除第2题添加的记录。

DELETE 学生  WHERE 学号='122005'

3.1、删除学生表的“学号”列上删除主键约束

ALTER TABLE 学生

DROP CONSTRAINT ck_chj

4、在学生表的“学号”列上添加主键约束

ALTER TABLE 学生

ADD CONSTRAINT fk_st

PRIMARY KEY(学号)

5.1、在学生上添加总学分

ALTER TABLE 学生

ADD 总学分 int

5、在总学分列上添加约束,取值范围为0~100

ALTER TABLE 学生

ADD CONSTRAINT ck_xf

CHECK(总分数 like '[0-100]')

6、设置性别的默认值是女

ALTER TABLE 学生

ADD CONSTRAINT DF_rsrq

DEFAULT '女' FOR 性别

7、添加姓名不能有重名的约束

ALTER TABLE 学生

ADD CONSTRAINT UK_name

UNIQUE(姓名)

8、设置总学分取值范围为0~100

ALTER TABLE 学生

ADD CONSTRAINT ck_xf

CHECK(总学分 like '[0-100]')

9、建立成绩表的 “学号”和学生表的“学号”之间的参照关系。

ALTER TABLE 成绩

ADD CONSTRAINT fk_sk

foreign key (学号)references 学生(学号)

--------------------------------------------------------------------------------------


1.

  创建学生信息表,内容有:学号char(6)为主键;姓名char(8)不可为空;性别设置"默认值"为男性;身份证后四位设置"唯一";

  课程号char(4);成绩 设置取值范围 为 0到100.

use students

create table 学生信息

(

学号 char(6) primary key,

姓名 char(8) not null,

性别 char(4) constraint df_xb default '男',

身份证号后四位 char(4) not null constraint uq_sfzh unique ,

课程号 char(4),

成绩 int constraint ck_cj check(成绩>=0 and 成绩<=100)

)

-------------------------------------------------------------------

create table score

(

stno char(8) not null,

cno char(3)not null,

grade int

)

alter table score

add constraint pk_stno primary key(stno),pk_cno primary key(cno)

建立课程表

use stsc

create table course

(

课程号 char(3) primary key,

课程名 char(16) not null,

学分 int,

教师号 char(6)

)

插入数据

insert course values('102','数字电路','3','102101'),('103','数据库系统','3','204101')

2.查询已有表的前三列

select 课程号,课程名,学分 from course;

--------------------------------------------

3.查询前三行

select distinct top 3 * from course;

----------------------------------------------

4.查询学生选课的课程号(不允许出现重复记录)

select distinct 课程号 from course;

--------------------------------------------

5.查询每位学生的学号、姓名、年龄

select stno,stname,datediff(year,stbriday,getdate())年龄 from student;

select stno,stname,(year(getdate())-year(stbriday))年龄 from student;

-------------------------------------------

6.查询最高分

select max(tc) as 最高分 from student;

-----------------------tno----------

7.查询总学分大于等于50的学生信息

select * from student

where tc>=50;

---------------------------------------------

8.查询含‘机’的信息

select * from  course where 课程名 like '%机%'

9.查询121001成绩信息,降序排列

select grade from score where stno='121001'

order by grade desc

--------------------------------------------

10.统计各个专业的人数

select speciality,count(*) as '人数' from student

group by speciality

-----------------------------------------------

11.查询选修两门及两门以上课程的成绩信息

select stno,grade from score

where stno in(select stno from score

group by stno

having count(cno)>=2)

----------------------------------------------

12.查找122002的“801”保存在xx表中

select * into score1 from score

where stno='122002' and cno='801'

你可能感兴趣的:(SQl Server建立数据库和表,单表查询)