精华内容
下载资源
问答
  • 用于sql语句学习的数据库,含上万条数据;表结构如下 --学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex) --课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId) --成绩表...
  • ** 使用T-SQL语句创建和删除数据库** 使用T-SQL语句创建“学生管理库”数据库及删除数据库。要求“学生管理库”数据库的主数据文件名为:StudentDB.mdf,初始大小为5MB,最大为20MB,增长方式为10%;日志文件名为:...
  • sql语句 student数据库

    2016-12-30 17:11:00
    用于sql语句学习的数据库,含上万条数据;表结构如下 --学生表tblStudent(编号StuId、姓名StuName、年龄StuAge、性别StuSex) --课程表tblCourse(课程编号CourseId、课程名称CourseName、教师编号TeaId) --成绩表...
  • SQL数据库操作语句习题,三个基本表:学生表(Student)、课程表(Course)、学生选课表(SC)。
  • 数据库SQL语句总结大全

    千次阅读 多人点赞 2020-02-28 10:24:39
    数据库基础概念二.SQL概述1)分类2)相关概念3) 增删改案例①DDL②DML 一.数据库基础概念 数据库就是用来存储和管理数据的仓库! 二.SQL概述 SQL(Structured Query Language)是“结构化查询语言”,它是对关系...

    一.数据库基础概念

    数据库就是用来存储和管理数据的仓库!

    在这里插入图片描述


    二.SQL概述

    SQL(Structured Query Language)是“结构化查询语言”,它是对关系型数据库的操作语言。通过SQL可以对数据库的数据进行增删改查。

    1)分类

    在这里插入图片描述


    2)相关概念

    • 数据库: 数据的仓库,保存数据的地方,一般一个项目对应一个数据库。
    • 表: 数据库中实际保存数据的地方,数据会分类存储,如:学生表、教员表、班级表、院系表等。
    • 行: 表中的一行记录(数据),如:学生表中一行就是一个学生的信息。
    • 列(字段):每个类型数据的一部分信息,类似对象中的属性,如:学生表中学号、姓名、年龄等。
    • 主键:一个特殊的列,用于唯一标识一行记录,每一行数据不能重复、不能为空,如:学生表的学号,一个表只能有一个主键。

    3) 增删改案例

    ①DDL:数据定义语言
    • 创建数据库
      create database 数据库名;
      例:
      create database student default character set utf8mb4 collate utf8mb4_general_ci;

    ① default character set 指定数据库的默认字符编码utf8和utf8mb4
    ②utf8占3个字节,不能支持特殊符号 utf8mb4占4个字节,兼容性好
    ③collate 是文字排序方式,utf8mb4_general_ci 是一般排序方式,忽略大小写

    • 使用数据库
      use 数据库名;

    • 删除数据库

      sql drop database 数据库名;
      sql drop database if exists 数据库名; 存在数据库再删除

    //如果数据库存在,删除数据库
    drop database if exists student;
    
    • 创建表
    create table 表名
    (
    列名 数据类型 [约束],
    列名 数据类型 [约束],
    列名 数据类型 [约束]
    ...
    );
    
    约束概念解释
    主键primary key (不能重复、不能为空、表只有一个)
    自增auto_increment(只能用于整型数据)
    非空not null(必须填写)
    唯一unique(不能重复)
    -- 创建学生表
    create table tb_student
    (
    	-- 学生编码,主键、自动增长
    	stu_id int primary key auto_increment,
    	stu_name varchar(20) not null,
    	stu_age int not null,
    	stu_gender varchar(1) not null,
    	stu_address varchar(200)
    );
    
    • 删除表

    sql drop table 表名;
    sql drop table if exists 表名;

    -- 存在学生表,先删除
    drop table if exists tb_student ;
    

    ②DML:数据管理语言
    • 单行插入

    • insert into 表名(列名,列名,列名,列名) values(值,值,值,值);

    -- 插入学生信息
    insert into tb_student(stu_name,stu_age,stu_gender,stu_address)
    values('王五',20,'男','北京');
    

    注意:列的个数和类型和值的个数、类型一致
    自动增长的列不用插入。

    • 多行插入
    • insert into 表名(列名,列名,列名,列名) values (值,值,值,值),(值,值,值,值),(值,值,值,值);
    insert into tb_student(stu_name,stu_age,stu_gender,stu_address)
    values('赵六',28,'男','北京'),('马七',25,'女','成都');
    
    • 删除
    • 全部删除: delete from 表名;
    • 带条件的删除 :delete from 表名 where 条件;
    • 清空表: truncate table 表名;
    • 更新
    • update 表名 set 列=值,列=值,列=值 [where 条件];
    -- 更新马七的年龄和地址
    update tb_student set stu_age = 19,stu_address='南京' 
    where stu_name = '马七';
    

    ③DQL:数据查询语言
    • 查询表的所有记录

    • select * from 表名;

    • *代表所有列,没有条件就查询所有行

    • 查询部分列

    • select 列名,列名,列名 from 表名;

    • 给列加别名

    • select 列名 as 别名,列名 别名,列名 别名 from 表名;

    • 带条件的查询

    • select * from 表名 where 条件;

    • 例:查询编号为3的学生

    select * from tb_student where stu_id = 3;
    
    • 例:查询编号不为3的学生
    • !=和<>都表示不相等
    select * from tb_student where stu_id != 3;
    or
    select * from tb_student where stu_id <> 3
    • 例:查询年龄大于20的学生
    select * from tb_student where stu_age > 20;
    
    • 例:查询年龄在20到25之间的学生

    • sql 相当于Java的&&,表示两个条件同时成立 表示值在某个范围内,可以使用between 值1 and 值2;

    select * from tb_student where stu_age >= 20 and stu_age <= 25;
    select * from tb_student where stu_age between 20 and 25;
    
    • 例:查询地址是武汉或上海的学生
    • 条件1 or 条件2 相当于Java的||,表示两个条件只需要一个成立
    select * from tb_student where stu_address = '武汉' or stu_address = '上海';
    
    • 表示值在几个值之间任意一个,可以使用in(值1,值2)
    select * from tb_student where stu_address in('武汉','上海');
    
    • 例:查询年龄不在20到25之间的学生
    • not 条件 相当于Java的!,条件取反
    select * from tb_student where stu_age not between 20 and 25;
    
    • 按年龄排序
    • order by 列 [asc|desc] 写在查询语句最后,默认情况是升序
    select * from tb_student order by stu_age;
    select * from tb_student order by stu_age desc;
    
    • 例:分页查询,一页显示4个学生,显示前5页学生
    • limit 开始位置, 长度limit 长度默认从第一行开始
    select * from tb_student limit 0,4;
    select * from tb_student limit 4,4;
    select * from tb_student limit 8,4;
    select * from tb_student limit 12,4;
    select * from tb_student limit 16,4;
    
    • 例:查询年龄最大的学生
    //先desc降序排列然后取第一个值
    select * from tb_student order by stu_age desc limit 1;
    
    • 模糊查询

    • like '模糊查询字符串' 两个通配符: % 任意长度的字符 _ 任意的一个字符

    • 例:查询姓张的学生

    select * from tb_student where stu_name like '张%';
    
    • 例:查询姓名带小的学生
    select * from tb_student where stu_name like '%小%';
    
    • 查找第二位是3或5的手机号
    • 列 regexp '正则表达式'
    select * from tb_student where stu_tel regexp '^1[35]\\d{9}$';
    
    • 统计(聚合)函数
    • count(*) 行数 max(列) 最大值 min(列) 最小值 sum(列) 总和 avg(列) 平均值
    select count(*) 人数,max(stu_age) 最大年龄,min(stu_age) 最小年龄,sum(stu_age) 年龄总和,avg(stu_age) 平均年龄  from tb_student;
    
    • 例:查询不同地区学生的平均年龄
    • group by 列 分组查询
    select avg(stu_age) 平均年龄,stu_address 地区 from tb_student
    group by stu_address;
    
    • 例:查询男女学生各自人数
    select count(*) 人数,stu_gender 性别 from tb_student group by stu_gender;
    
    • 例:查询学生的平均年龄低于20的地区

    • where 在分组之前进行筛选 having 在分组之后进行筛选 where ——> group by ——> having

    select avg(stu_age) 平均年龄,stu_address 地区 from tb_student 
    group by stu_address having avg(stu_age) < 25;
    

    在这里插入图片描述
    Don’t aim for success if you want it; just do what you love and believe in, and it will come naturally.

    2020.02.28

    展开全文
  • -- 表空间的创建 CREATE TABLESPACE my_tabs2 DATAFILE 'd:/software/Oracle/Space/my_tabs2.dbf' size 60M AUTOEXTEND ON NEXT 30M MAXSIZE UNLIMITED; -- 创建用户 create user user2 identified by user2 default...

    1. 表空间的创建

    表空间的创建,格式:
    create tablespace 表空间名
    datefile '路径名/表空间名.dbf' size 60M(初始空间大小为:60M)
    autoextend ON NEXT 30M(每次扩容的空间大小:30M) 
    maxsize unlimited(最大空间大小: unlimited 无限大);
    
    -- 表空间的创建: 创建表空间my_tabs2
    CREATE TABLESPACE my_tabs2
    DATAFILE 'd:/software/Oracle/Space/my_tabs2.dbf' size 60M
    AUTOEXTEND ON NEXT 30M MAXSIZE UNLIMITED;
    

    2. 创建用户

    格式:
    create user 用户名
    identified by  用户密码 
    default tablespace 默认表空间
    
    -- 创建用户user2              
    create user user2  			
    identified by 123456 		
    default tablespace my_tabs2  
    -- 创建用户user1
    create user user1
    identified by user1
    default tablespace my_tabs2
    

    3. 给新创建的用户授权

    给用户授权格式:
    grant 权限名1,权限名2,权限名3 to 用户名
    
    Oracle用户权限: 
    connect -> 只能连接数据库,不能对表进行增删改查操作
    resource -> 可以做增删改查操作,不能修改数据库结构
    dba -> 系统管理员权限,可以修改数据库结构
    
     -- 给新创建的用户授权
    grant connect,resource to user2;
    -- 回收权限
    revoke connect,resource from use2;
    -- 修改创建用户的密码
    alter user user2 IDENTIfiEd by use231;
    -- 锁定用户 lock
    ALTER USER user1 ACCOUNT LOCK;
    -- 解锁用户 UNLOCK
    ALTER USER user1 ACCOUNT UNLOCK;
    -- 删除用户:
    DROP USER user1;
    

    4. 通过命令创建表

    格式:   
    create table 表名(
    字段名1 数据类型 约束1 约束2 约束3 ,
    字段名2 数据类型 约束1 约束2 约束3 ,
    字段名3 数据类型 约束1 约束2 约束3   -> 注意最后一个字段这儿没有逗号,
    );
     -- 通过命令创建student表
    CREATE TABLE student(
           sid int primary key , -- sid int类型 主键
           sname char(20),  -- sname 字符类型(最多20个字符)
           sex char(2) 		-- sex 字符类型(最多2个字符) 
    )
    

    5. 对表中数据进行增删改查

    表插入数据格式:
    insert into 表名 (字段名1,字段名3) ,values(1,2);
    
    如果values()中插入的是全字段的值,则可以省略前面的()例如:
    -- 插入数据 1001 李四 女
    insert into student values(1001,'李四','女');
    
    更新表数据格式: 
    update 表名 set 字段名1=1, 字段名2=2 where 更新条件;
    -- 更新student表的所有学生的性别为女
    update student set sex = '女';
    -- 将student表学号为1001的学生名字改为张三
    update student set sname = '张三' where sid = 1001;
    
    查询表格式:
    select 要查询的内容 from 表名 where 条件名;
    -- 查询学号为1001的姓名
    select sname where sid=1001;
    
    删除表数据格式: 
    delete from 表名 where 条件
    -- 删除id=1001的学生数据
    delete from student where id = 1001;
    

    6. 对表或字段的增删改查操作:

    -- 创建一个QQUser表
    create table QQUser(
           QQID number ,
           QPassWord char(10) ,
           ListLogWordTime date ,
           QOnline number(2),
           QLevel number(2)
    )
    -- 更新表的字段
    alter table QQUser  alter column QQID Number(10);
    -- 插入数据
    insert into QQUser values(123456,1,null,2,99);
    insert into QQUser values(123456,1,null,2,99);
    -- 查询
    select * from QQUser ;
    -- 重命名表名
    rename 表一 to 表二
    -- 截断表 , 清空表中所有的数据,但是表结构还是存在的
    truncate table user
    -- 添加列
    alter table QQUser add sex char(2)
    -- 修改列
    alter table QQUser modify sex varchar(2)
    -- 删除列
    alter table QQUser drop column sex;
    -- 添加QQname字段
    alter table QQUser add constraint QQName varchar(100);
    -- 添加一个唯一约束
    alter table QQUser add constraint QQName unique(QQName);
    -- 设置主键约束
    alter table QQUser add constraint QQid primary key(QQID);
    -- 添加年龄字段
    alter table QQUser add QQage number(3);
    -- 检查约束: 限定年龄的范围为10到40
    alter table QQUser add constraint QQage check(QQage between 10 and 40);
    -- 单行函数 length(字段) 返回字段的长度
    select length(QQName), QQname from QQUser;
    -- 限定name字段的长度>=2
    alter table QQUser add constraint QQname check(length(QQName)>=2);
    -- 模糊查询,查询名称以张的开头的内容 
    select * from QQUser where QQname like '%张%';
    -- 查询QQUser表中QQID以1开头的所有内容
    select * from QQUser where QQID like '1%';
    

    另:设置主外键约束

     1.创建表时设置外键约束
    create table A (
           anumber int primary key , -- 字段名 primary key
           aname char(11) unique ,
           bnumber int
    );
    create table B (
          Bnumber int primary key ,
          bname varchar(11),
          anumber int,
          -- constraint 约束名 forgin key(主键) reference 从表名(从表主键)
          constraint a_b foreign key(bnumber) references B(bnumber)
    );
    -- 2.表已经创建成功后再添加外键约束
    -- 添加外键约束: alter table 从表名 add constraint 外键约束名称 foreight key(列名) references 主表名称(主键列名)
    alter table B add constraint B_A foreign key(bnumber) references A(anumber);
    
    展开全文
  • Student数据库创建

    千次阅读 2020-10-09 14:56:53
    SQL Sever创建管理表一、工具法创建管理数据库二、SQL命令法 一、工具法创建管理数据库 创建新表 工具创建数据表属性 工具修改数据表属性 工具添加数据表属性 删除数据属性 二、SQL命令法 1、创建学生表 ...

    一、工具法创建管理数据库

    创建新表
    创建图
    工具创建数据表属性
    创建教师表属性
    工具修改数据表属性
    修改属性
    工具添加数据表属性
    添加属性
    删除数据属性
    1、删除属性

    二、SQL命令法

    1、创建学生表
    在这里插入图片描述

    CREATE TABLE 学生(
    学号 char(12) NOT NULL CONSTRAINT s_k PRIMARY KEY,
    姓名 char(8) ,
    性别 char(2),
    出生日期 datetime,
    入学时间 datetime,
    班级代码 char(9),
    系部代码 char(2),
    专业代码 char(4)
    )
    

    2、修改数据表属性
    在这里插入图片描述

    ALTER TABLE 学生
    ALTER COLUMN 姓名 char(20)
    

    3、增加数据属性
    在这里插入图片描述

    ALTER TABLE 学生
    ADD 入学成绩 INT
    

    3、删除属性
    在这里插入图片描述

    ALTER TABLE 学生
    DROP COLUMN 入学成绩
    

    3、添加数据
    在这里插入图片描述

    INSERT into  学生(学号,姓名,性别,出生日期,入学时间,班级代码,系部代码,专业代码)
    select '006',  '张兵', '男' ,'1995-05-25', '2014-6-3', '0101','01','22' union
    select '005',  '李兰', '男' ,'1995-05-25', '2014-6-3', '0101','01','22' 
    

    在这里插入图片描述

    INSERT into  学生 VALUES('007',  '张兵', '男' ,'1995-05-25', '2014-6-3', '0101','01','22') 
    

    创建修改主键、外键、默认值、Check约束条件

    1、创建学生表(设置主键)
    在这里插入图片描述

    CREATE TABLE 学校
    (
    学校代码 char(6) CONSTRAINT c_k PRIMARY KEY,
    学校名称 varchar(30) NOT NULL,
    校长 char(10)
    )
    

    2、添加主键
    在这里插入图片描述

    ALTER TABLE 学校
    ADD
    CONSTRAINT c_k PRIMARY KEY CLUSTERED (学校代码)
    

    3、创建外键约束
    在这里插入图片描述

    CREATE TABLE 院系
    (
    院系代码 char(6) NOT NULL,
    院系名称 char(30) NOT NULL,
    学校代码 char(6) CONSTRAINT f_k REFERENCES 学校(学校代码)
    )
    

    4、删除外键约束
    在这里插入图片描述

    ALTER TABLE 院系 drop constraint f_k
    

    5、添加外键
    在这里插入图片描述

    alter table 院系
    add constraint fk_c
    foreign key (学校代码)
    references [dbo].[学校](学校代码)
    

    6、Check约束
    在这里插入图片描述

    CREATE TABLE 学生(
    学号 char(12) NOT NULL CONSTRAINT s_k PRIMARY KEY,
    姓名 char(8) ,
    性别 char(2),
    成绩 int,
    CHECK(成绩>0 AND 成绩<100)
    )
    

    7、插入数据冲突
    在这里插入图片描述

    insert into 学生 VALUES('1002','李四','男',120)
    

    8、添加默认键
    在这里插入图片描述

    ALTER TABLE 学生
    ADD CONSTRAINT df_s
    DEFAULT '男' FOR 性别
    

    9、查看表结构
    在这里插入图片描述

    sp_help
    
    展开全文
  • 使用SQL语句创建及使用SQLServer数据库

    万次阅读 多人点赞 2017-02-03 22:36:34
    SQL语言在SQL Sever中的应用 1. 数据库的建立  在企业管理器中,建立教务数据库——EDUCATION。  1截图    2说明  在导航中的数据库上右键,新建数据库。  填写数据库名称:EDUCATION。  除了文件...

    SQL语言在SQL Sever中的应用

    1.     数据库的建立

        在企业管理器中,建立教务数据库——EDUCATION。

           1截图

            

           2说明

             在导航中的数据库上右键,新建数据库。

             填写数据库名称:EDUCATION。

             除了文件类型和文件组其余均可编辑。

    由截图可知:

    主数据文件的逻辑名称为EDUCATION;文件类型是行数据;文件组默认属于PRIMARY;主数据文件的初始大小为5MB;文件自动增量为1MB,增长无限制;存储路径为C:\Program Files\MicrosoftSQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\。

    日志文件的逻辑名称为EDUCATION_log;文件类型是日志;不适用文件组;日志文件的初始大小为2MB;文件自动增量为10%,增长无限制;存储路径为C:\Program Files\MicrosoftSQL

     Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\。

           3与鼠标操作过程等价的建立数据库数据文件和日志文件的SQL语句

             create  database EDUCATION

            //数据文件的SQL语句

             on primary(                  //默认属于PRIMARY文件组,可省略

                         name='EDUCATION',    //主数据文件的逻辑名称

                         filename='C:\ProgramFiles\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\EDUCATION.mdf',                     //主数据文件的物理名称

                         size=5mb,             //主数据文件的初始大小

                         maxsize=unlimited,      //主数据文件增长的最大值

                         filegrowth=1mb         //主数据文件自动增量

    )

    //日志文件的SQL语句

    log on(

                         name='EDUCATION_log', //日志文件的逻辑名称

                         filename='C:\Program Files\Microsoft SQLServer\MSSQL11.MSSQLSERVER\MSSQL\DATA\EDUCATION_log.ldf',                     //日志文件的物理名称

                         size=2mb,                         //日志文件的初始大小

                         maxsize=unlimited,          //日志文件增长的最大值

                         filegrowth=10%                //日志文件自动增量

    )

    2. 数据表的建立

    1建立学生表——Student表

    createtable Student(

                   sno int primary key,           //列名为sno(学号),int 类型,主键

                  sn char(20) not null,           //列名为sn(姓名),char(20)类型,不为空

                  sex char(2) default '男'check(sex in('男','女'))not null,               //列名为sex(性别),char(2)类型,默认为男,取值范围为男或女,不为空

                  bor date not null,           //列名为bor(生日),类型为date,不为空

                  clano char(10) default null,  //列名为clano(班号),类型为char(10),默认为空

                  age int check(age>=0 and age<=100) notnull        //列名为age(年龄),类型为int,取值范围为[1,100],不为空

                  )

      

    2建立课程表——Course表

    createtable Course(

                   cnochar(20) primary key,   //列名为cno(课程号),char(20)类型,主键

                   cnvarchar(50) not null, //列名为cn(课程名), varchar(50)类型,不为空

                   tnoint not null            //列名为tno(教师号),int类型,不为空

                   )

     

    3建立分数表——Score表

    createtable Score(

                   snoint not null,            //列名为sno(学号),int类型,不为空

                   cnochar(20) not null,    //列名为cno(课程号),char(20)类型,不为空

                  score float check(score>=0 andscore<=100),               //列名为score(分数),float类型,取值范围为[1,100]

                   primarykey (sno,cno)    // sno(学号)和cno(课程号)共同作为主键

                  )

      

    4建立教师表——Teacher表

    create table Teacher(

                   tnoint primary key,     //列名为tno(教师号),int类型,主键

                   tnchar(20) not null,     //列名为tn(教师名),char(20)类型,不为空

                   sexchar(2) default '男'check(sex in('男','女'))not null,        //列名为sex(性别),char(2)类型,默认为男,取值范围为男或女,不为空

                   bordate not null,       //列名为bor(生日),类型为date,不为空

                   pro varchar(50) not null, //列名为pro(职称),类型为varchar(50),不为空

                   deptvarchar(50)       //列名为dept(系别),类型为varchar(50)

                   )

    3. 表中内容的添加

     1使用SQL语句在数据库中Student表插入对应表格前2行元组。

    insert into Student(sno,sn,sex,bor,clano,age)values(108,'曾华','男','1992-09-01','09033',22);

    insert into Student(sno,sn,sex,bor,clano,age)values(105,'匡明','男','1990-10-2','09031',24);

     2使用SQL语句在数据库中Course表中插入对应表格前2行元组。

         insertinto Course(cno,cn,tno) values('3-105','计算机导论',825);

         insert into Course(cno,cn,tno) values('3-245','操作系统',804);

     3对Student表中其他元组,通过查询分析器的数据输入界面输入到Student表格中。

     4对Course表中其他元组,通过查询分析器的数据输入界面输入到Course表格中。

     5对Teacher表中元组,通过查询分析器的数据输入界面输入到Teacher表格中。

     6对Score表中元组,通过查询分析器的数据输入界面输入到Score表格中。


    4. 查询及视图的综合练习

      编写SQL语句实现下列查询,查看执行结果。

    1检索计算机系男老师的姓名;

      select tn from Teacher where sex='男'and dept='计算机';

      说明:

    从Teacher表中选出满足sex为'男',dept为'计算机'的记录,然后选出他们的tn这一列。

     

    2检索学号为109选修的课程号;

      select cno from Score where sno=109;

      说明:

    从Score表中选出满足sno为109的记录,然后选出他们的cno这一列。

     

    3统计课程号为3-105的最高分和平均分;

    select max(score) as 最高分,avg(score) as 平均分 from Score wherecno='3-105';

    说明:

    从Score表中选出满足cno为'3-105'的记录,然后通过聚集函数max(score)和avg(score)算出他们的最高分和平均分并将max(score)和avg(score)重命名为最高分和平均分,让其显示的更加清晰。

    4检索王老师所教授课程的课程号和课程名;

        select cno,cn from Course,Teacher whereTeacher.tno=Course.tno and tn like '王%';

        说明:

    Course表和Teacher表进行笛卡尔积,根据Teacher.tno=Course.tno条件得出结果表(其中课程表中的教师编号与教师表中的同样的为一行),从结果表中选出tn列是以 '王'开头的记录,然后选出这些记录的cno列和cn列。

       

    5检索出生日期为1990年以后的女学生的学号和姓名;

      select sno,sn from Student where sex='女' and YEAR(bor)>'1990';

      说明:

    从Student表中选出满足sex为'女',出生日期在1990年以后(从1991年开始)的记录(通过函数YEAR()来实现),然后选出他们的sno列和sn列。

     

    6检索学号为107的学生所学课程的课程名与任课老师;

        select cn,tn from Score as s,Course asc,Teacher as t where s.cno=c.cno and c.tno=t.tno and sno=107;

        说明:

    Course表、Teacher表和Score表进行笛卡尔积,根据s.cno=c.cno 和 c.tno=t.tno条件得出结果表(其中课程表中的教师编号与教师表中的同样的,且成绩表的课程号和课程表的课程号同样的为一行),从结果表中选出满足sno为107的记录,然后选出这些记录的cn列和tn列。

       

    7检索王同学不学习且为助教教授的课程名和任课教师;

        Select Course.cn,Teacher.tn fromTeacher,Course where Teacher.tno=Course.tno and Course.cno not in(selectScore.cno from Score where sno in(select Student.sno from Student where sn like'王%')) and pro='助教';

        说明:

            首先从Student表中选出sn列是以'王'开头的记录,然后选出他们的sno列作为下一句的条件。(选出王同学的学号)

                    从Score表中选出sno列满足上一句的结果(即sno的值从上一个结果中选)的记录,然后选出他们的cno列作为下一句的条件。(选出王同学选课的课程号)

                    Course表和Teacher表进行笛卡尔积,根据Teacher.tno=Course.tno条件得出结果表(其中课程表中的教师编号与教师表中的同样的为一行),从结果表中选出满足pro为'助教',cno列满足其取值不在上一句的结果中(即cno的值从上一个结果以外的值中选)的记录,然后选出这些记录的cn列和tn列。

       

    8检索至少选修两门课程的学生学号;

    select Score.sno fromScore Group By Score.sno Having count(*)>=2;

    说明:

    Score表中按sno分组(用Group By来完成),通过count(*)统计每个分组中的记录条数(因为sno和cno能共同确定一条记录),选出满足记录条数>=2的分组(由Having进行分组内的筛选),然后选出这些分组的sno显示(在select指定的字段,要么包含在Group By语句后面作为分组依据,要么被包含在聚合函数中)。

    9按学号列出每个学生所选修课程中最高分的课程名称及其分数;

    selectScore.sno,Course.cn,Score.score as 最高分 from Score,Course where Score.cno=Course.cnoand Score.score in(select max(Score.score) from Score group by Score.sno);

    说明:

                    首先Score表中按sno分组(用Group By来完成),然后在每组中利用聚合函数max()选出每组的最高分作为下一句的条件。(每位同学的最高分)

    Course表和Score表进行笛卡尔积,根据Score.cno=Course.cno条件得出结果表(其中课程表中的课程号与成绩表中的同样的为一行),从结果表中选出score列满足其取值在上一句的结果中(即score的值从上一个结果的值中选)的记录,然后选出这些记录的sno列、cn列和score列(取别名为最高分)。

    10建立视图ViewA,显示各班的学生人数;

    create view ViewA asselect clano,count(sno) as 人数 from Student group by clano;

    说明:

    用create view ViewA as 创建名为ViewA 的视图。Student表中按clano分组(用Group By来完成),然后选出这些分组的clano和班级人数(用count(sno)来计算每组的记录数(取别名为“人数”))显示。(在select指定的字段,要么包含在Group By语句后面作为分组依据,要么被包含在聚合函数中)

    11建立视图ViewB,显示各门课程中男学生的选修人数以及该门课的任课教师姓名;

    create view ViewB asselect Course.cno,Course.cn,count(Score.sno) as 人数,Teacher.tn fromTeacher,Student,Course,Score  whereStudent.sno=Score.sno and Course.tno=Teacher.tno and Course.cno=Score.cno andStudent.sex='男' group byCourse.cno,Course.cn,Teacher.tn;

    说明:

    用create view ViewB as 创建名为ViewB 的视图。Course表、Teacher表、Student表和Score表进行笛卡尔积,根据Student.sno=Score.sno 、Course.tno=Teacher.tno 和Course.cno=Score.cno条件得出结果表(其中课程表中的教师编号与教师表中的同样的,且成绩表的课程号和课程表的课程号同样的,且成绩表的学号和学生表的学号同样的为一行),结果表按Course.cno、Course.cn和Teacher.tn分组(用Group By来完成),从结果表中选出满足Student.sex为'男'的记录,然后选出这些记录的Course.cno列、Course.cn列、选课人数(用count(Score.sno)来计算每组的记录数(取别名为“人数”))和Teacher.tn列显示。

    12建立视图ViewC,显示学生学号和姓名;

      create view ViewC as select sno as 学号,sn as 姓名 from Student;

      说明:

    用create view ViewC as 创建名为ViewC 的视图。从Student表中选出sno列和sn 列(重命名为学号和姓名)。

     

    5. 索引及约束的综合练习

      在EDUCATION数据库中,使用SQL添加如下内容:

    1在学生表中,为学生姓名建立非聚集索引;

       create nonclustered index sname onStudent(sn);

      说明:

                   nonclusteredindex为非聚集索引。

                     sname为新建非聚集索引名称。

                     建立非聚集索引的对象为学生表中的学生姓名Student(sn)。

     

    2在学生表中,添加年龄为[0,100]的约束;

      alter table Student add constraint agecheck(age>=0 and age<=100);

      说明:

                   给Student表中添加名为age的约束,约束年龄列的值[0,100]。

                     alter(改变) table Student,指明是Student表。

                     add表示添加。

                     constraint指明为列。

                     age是新约束的名称。

                     check(age>=0 andage<=100)表示约束age列中值的范围为[0,100]。

     


    分析:

    1.    使用SQL命令 删除数据表:

           DROP TABLE<表名>

           只能删除自己建立的表,不能删除其他用户所建的表。

    2.    NULL表示“不知道”、“不确定”或“没有数据”的意思。

       主键列不允许出现空值。

    3.    PRIMARY KEY约束(主键约束):

    用于定义基本表的主键,起惟一标识作用,不能为NULL,不能重复。

    PRIMARY KEY与UNIQUE 的区别:

            一个基本表中只能有一个PRIMARY KEY,但可多个UNIQUE。

    对于指定为PRIMARY KEY的一个列或多个列的组合,其中任何一个列都不能出现NULL值,而对于UNIQUE所约束的惟一键,则允许为NULL。

    不能为同一个列或一组列既定义UNIQUE约束,又定义PRIMARY KEY约束。

    4.    CHECK约束用来检查字段值所允许的范围。一个表中可以定义多个CHECK约束。每个字段只能定义一个CHECK约束。在多个字段上定义的CHECK约束必须为表约束。当执行INSERT、UPDATE语句时CHECK约束将验证数据。[CONSTRAINT <约束名>] CHECK (<条件>)

    5.    使用SQL命令 修改数据表:

    例:ALTER TABLE S ADD Class_NoCHAR(6),Address CHAR(40)

    使用此方式增加的新列自动填充NULL值,所以不能为增加的新列指定NOT NULL约束。

            ALTER TABLE S ALTER COLUMN   SNCHAR(10)

    不能改变列名;不能将含有空值的列的定义修改为NOT NULL约束;若列中已有数据,则不能减少该列的宽度,也不能改变其数据类型;只能修改NULL/NOT NULL约束,其他类型的约束在修改之前必须先将约束删除,然后再重新添加修改过的约束定义。

    6.    聚集索引:排列的结果存储在表中只有一个。

    非聚集索引:排列的结果不存储在表中可以有多个。

    唯一索引:有UNIQUE,自动建立非聚集的惟一索引。

    有PRIMARY KEY,自动建立聚集索引。

    复合索引:将两个或多个字段组合起来建立的索引,单独的字段允许有重复的值。

    CREATE [UNIQUE] [CLUSTER]INDEX <索引名> ON <表名> (<列名> [次序] [{,<列名>}] [次序]…)

    7.    在select指定的字段,要么包含在Group By语句后面作为分组依据,要么被包含在聚合函数中。

    8.    Date也是一个数据类型,year()函数可以查询年份。


    注:

    SQL Server中企业管理器和查询分析器使用

    1.    使用企业管理器

    1开启企业管理器的方法

    点击SQL Sever 2012,进入管理器的登录页面。要输入三类信息——服务器类型(一般选择数据库引擎)、服务器名称和身份验证(Windows身份验证简单)。

    2使用企业管理器中数据库导航

    数据库文件夹是我们操作的文件夹,右键点击可以新建数据库。在新建数据库中的表上右键,可以新建表。在用户文件夹上右键可以新建用户。在视图文件夹上右键可以新建视图。

    3熟悉企业管理器菜单

    可新建查询、执行、调试和分析(勾)SQL语句、保存和选择所在数据库等。

    4查看已有数据库的属性

    选择已有数据库的名称,会显示数据库的相关信息。

    2.    使用查询分析器

    1开启查询分析器

    企业管理器菜单栏中选择新建查询。

    2查询分析器界面的组成

    上面是输入SQL语句的地方,下面是显示查询结果的地方,第三个是查询状态栏。


    展开全文
  • SQL语句数据库创建视图

    千次阅读 2021-03-31 23:15:58
    MySQL之创建视图
  • T-SQL语句创建数据库

    千次阅读 2015-12-10 12:17:26
    T-SQL语句创建数据库 一 T-SQL语句创建 二 详细过程 三 常见问题及解决方法  小白或者新手无所谓啦,SQL server自学中,欢迎批评 一 T-SQL语句创建数据库  在SQL server 2008中,创建数据库主要有两种方法。...
  • 删除数据库sql语句

    万次阅读 2019-04-27 20:44:36
    删除数据库sql语句如何写 drop database 数据库名 --删除数据库的 drop table 表名–删除表的 delete from 表名 where 条件 --删除数据的 truncate table 表名 也是删除数据库的.但是他可以裁断序列 这个你跟...
  • 使用T-SQL语句创建数据库

    千次阅读 2020-03-10 18:54:16
    用T-SQL语句创建数据库的语法格式为 CREATE DATABASE 数据库名 ON [PRIMARY] ( <数据文件参数>【,…n】 【<文件组参数>】 ) 【LOG ON】 ( <日志文件参数>【,…n】 ) 创建数据库 需求说明 –在...
  • 数据库sql语句常见面试题

    千次阅读 2018-11-15 12:13:15
    转载:本文转载自:... 一.有以下几张表及表结构 Student(Sid,Sname,Sage,Ssex) 学生表 Course(Cid,Cname,Tid) 课程表 SC(Sid,Cid,Score) 成绩表 Teacher(Tid,Tname) 教师表 题目: 1.查询“某1”...
  • studentsql语句的使用).sql
  • 1,创建Student数据库,包括Students,Courses,SC表,表结构如下: Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT) Courses(CNO,CNAME,LHOUR,CREDIT,SEMESTER) SC(SNO,CNO,GRADE) (注:下划线表示主键,斜体表示...
  • SQLSERVER数据库,安装、备份、还原等问题: 一、存在已安装了sql server 2000,或2005等数据库,再次安装2008,会出现的问题 1、卸载原来的sql server 2000、2005,然后再安装sql server 2008,否则经常sql ...
  • 3.掌握使用SQL Server Management Studio 及SQL语句创建数据库和表的方法; 4.掌握数据库及表结构的修改方法; 5.掌握数据库管理的基本操作。 二、实验原理 结合上课内容,根据实验内容描述步骤操作; 整理上机步骤...
  • 完美 WORD 格式 用 SQL语句创建如下三个基本表学生表 (Student) 课程 表 Course 学生选课表 SC结构如下所示 Student 表结构 列名 说明 数据类型 约束 Sno 学号 字符串长度为 7 主码 Sname 姓名 字符串长度为 10 非空...
  • Oracle数据库经典sql语句

    万次阅读 多人点赞 2018-05-03 01:00:01
    经典sql语句 本文章将详细介绍oracle数据操作中的一些详细的sql 基本sql 字符函数 数学函数 日期时间处理函数 聚合函数 基础sql 以下主要列出来常用的sql --新建表: create table table_name( id ...
  • SQL数据库常用语句大全

    千次阅读 2020-02-13 14:49:55
    数据库常用语句 以管理员身份运行命令提示符环境,启动数据库服务(其中MySQL57为数据库服务名,查找方法:右键我的电脑->管理->服务,):net start MySQL57 关闭数据库服务:net stop MySQL57 启动MySQL...
  • 数据库概论-SQL语句

    2020-12-14 17:35:11
    (1) 创建数据库 CREATE DATABASE zy_one; 效果图如下1.1所示。 图1.1 (2) 创建表格 表1 student: CREATE TABLE student( sname varchar(20) NOT NULL, snumber varchar(20) PRIMARY KEY, ssex char(2), sdept ...
  • 学生成绩管理数据库SQL serves2012学生表,课程表,成绩表
  • 数据库中外键SQL语句的编写

    千次阅读 2021-01-16 22:05:54
    数据库中外键SQL语句的编写 1. 外键约束作用 外键约束:对外键字段的值进行更新和插入时会和引用表中字段的数据进行验证,数据如果不合法则更新和插入会失败,保证数据的有效性 2. 对于已经存在的字段添加外键约束...
  • 文章目录数据库实验2——使用SQL语句创建和删除基本表一. 实验目的:二. 实验准备三. 实验要求四、实验步骤1. 创建基本表2. 修改表结构3.删除基本表五、实验总结 数据库实验2——使用SQL语句创建和删除基本表 一. ...
  • 用T-SQL语句创建数据库

    万次阅读 2017-03-17 21:49:36
    使用T-SQL语句创建“学生管理库”数据库及删除数据库。要求“学生管理库”数据库的主数据文件名为:xsgl.mdf,初始大小为5MB,最大为50MB,增长方式为10%;日志文件的初始大小为1MB,最大为5MB,增长方式为1MB。数据...
  • SQL语句创建数据库 表 关系

    千次阅读 2015-10-26 17:57:57
    use master if exists (select * from sysdatabase where name ='MySchool') --判断数据库是否存在 drop database MySchool --删除数据库 create database MyScho
  • sql语句源码

    2018-09-29 18:42:01
    有MySQL自己导出的sql语句,也添加了在自己项目的xml里面用到的sql语句
  • 使用SQL语句创建MySchool数据库

    千次阅读 2017-02-24 15:08:53
    IF exists (select * from sysdatabases where name='MySchool') DROP DATABASE MySchool create database MySchool on primary ( --主数据文件的具体描述 ...FILENAME='F:\数据库\MySchool.md
  • postgres数据库sql语句汇总

    千次阅读 2016-09-13 16:13:28
    下面是Sql Server 和 Access 操作数据库结构的常用Sql,希望对你有所帮助。 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIMARY KEY , [字段1] nVarChar(50) default \'默认值\' ...
  • SQL数据库更新语句操作实例

    千次阅读 2020-12-13 14:56:09
    SQL Server数据库更新操作 名称解释(不区分大小写) student:学生表,属性分别为sno学号、sname学生姓名、age年龄、sex性别、dno学院编号、birthday生日 sc选课信息表:sno学号、cno课程号、grade成绩 dept学院...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 99,990
精华内容 39,996
关键字:

创建student数据库的sql语句