精华内容
下载资源
问答
  • SQL语句创建课程表

    千次阅读 2018-11-04 15:58:07
    create table Course(  Cno char(4),  Cname varchar(20),  Cpno char(4),  Ccredit int,  ) insert into Course values('1','数据库','5','4'), ('2','数学',' ','2'), ...('4','操作系统','6...

    create table Course(
      Cno char(4),
      Cname varchar(20),
      Cpno char(4),
      Ccredit int,
      )

    insert

    into Course

    values('1','数据库','5','4'),

    ('2','数学',' ','2'),

    ('3','信息系统','1','4'),

    ('4','操作系统','6','3'),

    ('5','数据结构','7','4'),

    ('6','数据处理',' ','2'),

    ('7','PASCAL语言','6','4');

    展开全文
  • 学生表 课程表 成绩表 教师表 50个常用sql语句建表Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表---- If database exists the same name ...

    学生表 课程表 成绩表 教师表 50个常用sql语句

    建表

    Student(S#,Sname,Sage,Ssex) 学生表
    Course(C#,Cname,T#) 课程表
    SC(S#,C#,score) 成绩表
    Teacher(T#,Tname) 教师表

    ---- If database exists the same name datatable deletes it.
    IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Student') DROP TABLE Student;
    
    ---- Create TABLE
    create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2))

    关于表的50问

    1. 查询”001”课程比”002”课程成绩高的所有同学的学号:

      SELECT a.S#
      FROM (
      SELECT s#, score
      FROM SC
      WHERE C# = '001'
      ) a, (
        SELECT s#, score
        FROM SC
        WHERE C# = '002'
        ) b
      WHERE a.score > b.score AND a.s# = b.s#;
    2. 查询平均成绩大于60分的同学的学号和平均成绩:

      SELECT S#, avg(score)
      FROM sc
      GROUP BY S#
      HAVING avg(score) > 60;

      通过GROUP BY子句,可以让SUM、COUNT、MAX、AVG等聚合函数对属于一组的是数据起作用.属于同一同学的成绩将只能返回一行值,其中除S#字段,其他字段通过聚合函数返回.

      HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.而 HAVING子句在聚合后对组记录进行筛选。

    3. 查询”李”姓老师的个数:

      SELECT count(DISTINCT (Tname))
      FROM Teacher
      WHERE Tname LIKE '李%';

      在表中可能包含重复值,关键字distinct用于返回唯一不同的值.distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的.
      select distinct name, id from A返回name+id不同的行

    4. 查询所有同学的学号、姓名、选课数、总成绩:

      SELECT stu.S#, stu.Sname, COUNT(scs.C#), SUM(scs.score)
      FROM Student stu
      LEFT JOIN SC scs
      ON stu.S# = scs.S#
      GROUP BY stu.S#, stu.Sname
      • inner join,满足交换律,”A inner join B”和”B inner join A”是相等的
      • left outer join,产生左表(Student)的完全集,右表(SC)匹配的则有值,没有匹配的则NULL值
      • full outer join,产生左右表的全集,没有匹配的则NULL,满足交换律.
    5. 查询没选修”李明”老师课程的学生的学号与姓名:

      SELECT stu.S#, stu.Sname
      FROM Student stu
      WHERE stu.S# NOT IN (
      SELECT DISTINCT scs.S#
      FROM SC scs, Course crs, Teacher tch
      WHERE scr.C# = crs.C# AND tch.T# = crs.T# AND tch.Tname = '李明'
      );
    6. 查询各科成绩最高分与最低分:课程ID,最高分,最低分

    参考资料:

    展开全文
  • 在sqlyog中用sql语句创建表 CREATE TABLE IF NOT EXISTS `student`( --创建student `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', --创建ID列 `name` VARCHAR(30) NOT NULL DEFAULT '匿名' CO...

    在sqlyog中用sql语句创建表和修改删除表

    CREATE TABLE IF NOT EXISTS `student`(                      --创建student表
    
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',         --创建ID列
    `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',   --创建name列
    `ped` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', --创建ped列
    `sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',       --创建sex列
    `birthday` DATETIME DEFAULT NULL COMMENT '出生日期',         --创建birthday列
    `address` VARCHAR(100) DEFAULT NULL COMMENT '住址',         --创建address列
    `email` VARCHAR(50) DEFAULT NULL COMMENT '邮件',            --创建email列
    PRIMARY KEY(`id`)                                          --设置ID为主键
    )ENGINE=INNODB DEFAULT CHARSET=utf8                        --引擎为INNODB 编码为utf8
    

    注意:

    1、 `id` `name`等中的``符号为tab键的上面一个键
    2、 AUTO_INCREMENT 为自增
    3、 COMMENT '学号' 代表ID代表的是'学号'
    4、 DEFAULT '123456' 代表如果不输入值的话,其默认值为123456
    5、 PRIMARY KEY('id') 在设置主键时,KEY与括号之间不能有空格
    6、 编码输入utf8,8之前不能有横杠
    7、 要将表创建在哪个数据库,就用鼠标点击数据库,选中所有的sql语句,并且点执行按钮,然后刷新即可
    

    CREATE TABLE student (
    id int(4) NOT NULL AUTO_INCREMENT COMMENT ‘学号’,
    name varchar(30) NOT NULL DEFAULT ‘匿名’ COMMENT ‘姓名’,
    ped varchar(20) NOT NULL DEFAULT ‘123456’ COMMENT ‘密码’,
    sex varchar(2) NOT NULL DEFAULT ‘男’ COMMENT ‘性别’,
    birthday datetime DEFAULT NULL COMMENT ‘出生日期’,
    address varchar(100) DEFAULT NULL COMMENT ‘住址’,
    email varchar(50) DEFAULT NULL COMMENT ‘邮件’,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    修改删除表

    修改

    --修改表名   
               ALTER TABLE 旧表名 RENAME AS 新表名
              如: ALTER TABLE teacher RENAME AS teacher1       
               
               
    --增加表的字段 
               ALTER TABLE 表名 ADD 字段名 列属性
              如:ALTER TABLE teacher ADD age int(3)
                 
                 
    --修改表的字段(修改约束!)
              ALTER TABLE teacher MODIFY 字段名 数据类型
             如: ALTER TABLE 表名 MODIFY age varchar(10)
            
    --修改表的字段(重命名!)
              ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型
             如:ALTER TABLE 表名 CHANGE age age1 int(3)
    
    
    --删除表的字段
              ALTER TABLE 表名 DROP 字段名
    
    
    --删除表(如果表存在就删除)
              DROP TABLE IF EXISTS 表名
    
    展开全文
  • 数据库中的所有数据存储在中。数据包括行和列。列决定了中数据的类型。行包含了实际的数据。... 通过定义字段,你可以创建一个新。每个字段有一个名字和一个特定的数据类型(数据类型在后面的“字段类型

    数据库中的所有数据存储在表中。数据表包括行和列。列决定了表中数据的类型。行包含了实际的数据。 

    例如,数据库pubs中的表authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的名字信息。每次向这个表中添加新作者时,作者名字就被添加到这个字段,产生一条新记录。 

    通过定义字段,你可以创建一个新表。每个字段有一个名字和一个特定的数据类型(数据类型在后面的“字段类型”一节中讲述),例如字段au_lname存储的是字符型数据。一个字段也可以存储其它类型的数据。 

    使用SQL Sever,创建一个新表的方法是很多的。你可以可执行一个SQL语句或使用SQL事务管理器(SQL Enterprise Manager)来创建一个新表。在下一节里,你将学会如何用SQL语句来创建一个新表。 

    一、用CREATE语句创建表

    注意: 

    如果你还没有建立自己的数据库,现在就跳回到第三章创建这个库。你绝不能向master,tempdb或任何其他任何系统数据库中添加数据。 

    从SQL Sever程序组(在任务栏中)中启动ISQL/w程序。出现查询窗口后,从窗口顶部的下拉列表中选择你在第三章所创建的数据库。下一步,在查询窗口中键入下面的SQL语句,单击执行查询按钮,执行这个语句: 

    CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 

    如果一切正常,你会在结果窗口中看到如下的文字(如果出现异常,请参阅第三章): 

    This command dit not return data ,and it did not return any rows 

    祝贺你,你已经建立了你的第一个表! 

    你所创建的表名为guestbook,你可以使用这个表来存储来字你站点访问者的信息。你是用CREATE TABLE语句创建的这个表,这个语句有两部分:第一部份指定表的名字;第二部份是括在括号中的各字段的名称和属性,相互之间用逗号隔开。 

    表guestbook有三个字段:visitor,comments 和entrydate。

    Visitor         字段存储访问者的名字,

    Comments     字段存储访问者对你站点的意见,

    Entrydate      字段存储访问者访问你站点的日期和时间。 

    注意每个字段名后面都跟有一个专门的表达式。例如,字段名comments后面跟有表达式TEXT。这个表达式指定了字段的数据类型。数据类型决定了一个字段可以存储什么样的数据。因为字段comments包含文本信息,其数据类型定义为文本型。 

     

    二、字段类型 

    不同的字段类型用来存放不同类型的数据。创建和使用表时,你更应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。 

    (1)字符型数据 

    字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你可以把从HTML form的文本框中搜集到的信息放在字符型字段中。 

    要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。考虑你前面创建的表guestbook: 

    CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 

    在这个例子中,字段visitor的数据类型为VARCHAR。注意跟在数据类型后面的括号中的数字。这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段visitor能存放的字符串最长为四十个字符。如果名字太长,字符串会被截断,只保留四十个字符。 

    VARCHAR类型可以存储的字符串最长为255个字符。要存储更长的字符串数据,可以使用文本型数据(下一节中讲述)。 

    另一种字符型数据用来存储固定长度的字符数据。下面是一个使用这种数据类型的例子: 

     

    CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate DATETIME) 

     

    在这个例子中,字段visitor被用来存储四十个字符的固定长度字符串。表达式CHAR指定了这个字段应该是固定长度的字符串。 

    VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 

    现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。 

    当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。 

    VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。 

    (2)文本型数据 

    字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。 

    这里有一个使用文本型数据的例子: 

     

    CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate DATETIME) 

     

    在这个例子中,字段comments被用来存放访问者对你站点的意见。注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。 

    当你从HTML form的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。 

    警告: 

    一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。

    (3)数值型数据 

    SQL Sever支持许多种不同的数值型数据。你可以存储整数、小数、和钱数。 

    通常,当你需要在表中的存放数字时,你要使用整型(INT)数据。INT型数据的表数范围是从-2,147,483,647到2,147,483,647的整数。下面是一个如何使用INT型数据的例子: 

    CREATE TABLE visitlog (visitor VARCHAR(40),numvisits INT) 

     

    这个表可以用来记录你站点被访问的次数。只要没有人访问你的站点超过2,147,483,647次,nubvisits字段就可以存储访问次数。 

    为了节省内存空间,你可以使用SMALLINT型数据。SMALLINT 型数据可以存储从-32768到32768的整数。这种数据类型的使用方法与INT型完全相同。 

    最后,如果你实在需要节省空间,你可以使用TINYINT型数据。同样,这种类型的使用方法也与INT型相同,不同的是这种类型的字段只能存储从0到255的整数。TINYINT型字段不能用来存储负数。 

    通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。 

    为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-10^38到10^38范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数3.14。 

    当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。这里有一个使用这种数据类型的例子: 

     

    CREATE TABLE numeric_data (bignumber NUMERIC(28,0), fraction NUMERIC (5,4) ) 

     

    当这个语句执行时,将创建一个名为numeric_data的包含两个字段的表。字段bignumber可以存储直到28位的整数。字段fraction可以存储有五位整数部分和四位小数部分的小数。 

    一个NUMERIC型数据的整数部分最大只能有28位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。 

    你可以使用INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-922,337,203,685,477.5808到922,337,203,685,477.5807的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。 

    SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。下面的例子显示了如何使用这两种表示钱的数据类型: 

     

    CREATE TABLE products (product VARCHAR(40),price MONEY, 

    Discount_price SMALLMONEY) 

     

    这个表可以用来存储商品的折扣和普通售价。字段price 的数据类型是MONEY,字段discount_price的数据类型是SMALLMONEY。 

     

    (4)存储逻辑值 

    如果你使用复选框(CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。这里有一个如何使用这种字段的例子: 

     

     

    CREATE TABLE opinion (visitor VARCHAR(40),good BIT) 

     

    这个表可以用来存放对你的网站进行民意调查所得的信息。访问者可以投票表示他们是否喜欢你的网站。如果他们投YES,就在BIT型字段中存入1。反之,如果他们投NO,就在字段中存入0(在下一章里,你将学会如何计算投票)。 

    当心,在你创建好一个表之后,你不能向表中添加BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。 

    (5)存储日期和时间 

    当你建立一个网站时,你也许需要记录在一段时间内的访问者数量。为了能够存储日期和时间,你需要使用DATETIME型数据,如下例所示: 

     

    CREATE TABL visitorlog(arrivaltime DATETIME ,departuretime DATETIME) 

     

    这个表可以用来记录访问者进入和离开你网站的时间和日期。一个DATETIME型的字段可以存储的日期范围是从1753年1月1日第一毫秒到9999年12月31日最后一毫秒。 

    如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。 

    DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。在下一章,你将学习怎样使用大量的SQL函数来读取和操作日期和时间(参见下面的“缺省值”一节)。你也可以在VBScript和JScript 中使用日期和时间函数来向一个DATETIME型字段中输入日期和时间。 

    三、字段属性 

    上一节介绍了如何建立包含不同类型字段的表。在这一节中,你将学会如何使用字段的三个属性。这些属性允许你控制空值,缺省值和标识值。 

    (1)允许和禁止空值 

    大多数字段可以接受空值(NULL)。当一个字段接受了空值后,如果你不改变它,它将一直保持空值。空值(NULL)和零是不同的,严格的说,空值表示没有任何值。 

    为了允许一个字段接受空值,你要在字段定义的后面使用表达式NULL。例如,下面的表中两个字段都允许接受空值: 

     

    CREATE TABLE empty (empty1 CHAR (40) NULL,empty2 INT NULL) 

     

    注意: 

    BIT型数据不能是空值。一个这种类型的字段必须取0或者1。 

    有时你需要禁止一个字段使用空值。例如,假设有一个表存储着信用卡号码和信用卡有效日期,你不会希望有人输入一个信用卡号码但不输入有效日期。为了强制两个字段都输入数据,你可以用下面的方法建立这个表: 

    CREATE TABLE creditcards (creditcard_number CHAR(20) NOT NULL, 

    Creditcard_expire DATETIME NOT NULL) 

    注意字段定义的后面跟有表达式NOT NULL。通过包含表达式NOT NULL,你可以禁止任何人只在一个字段中插入数据,而不输入另一个字段的数据。 

     

    你将会发现,在你建设自己的网站过程中,这种禁止空值的能力是非常有用的。如果你指定一个字段不能接受空值,那么当你试图输入一个空值时,会有错误警告。这些错误警告可以为程序调试提供有价值的线索。 

    (2)缺省值 

    假设有一个存储地址信息的表,这个表的字段包括街道、城市、州、邮政编码和国家。如果你预计地址的大部分是在美国,你可以把这个值作为country字段的缺省值。 

    为了在创建一个表时指定缺省值,你可以使用表达式DEFAULT。请看下面这个在创建表时使用缺省值的例子: 

    CREATE TABLE addresses (street VARCHAR(60) NULL, 

    city VARCHAR(40) NULL, 

    state VARCHAR(20) NULL 

    zip VARCHAR(20) NULL, 

    country VARCHAR(30) DEFAULT ‘USA’) 

    在这个例子中,字段country的缺省值被指定为美国。注意单引号的使用,引号指明这是字符型数据。为了给非字符型的字段指定缺省值,不要把该值扩在引号中: 

    CREATE TABLE orders(price MONEY DEFAULT $38.00, 

    quantity INT DEFAULT 50, 

    entrydate DATETIME DEFAULT GETDATE()) 

    在这个CREATE TABLE语句中,每个字段都指定了一个缺省值。注意DATETIME型字段entrydate所指定的缺省值,该缺省值是函数Getdate()的返回值,该函数返回当前的日期和时间。 

     

    (3)标识字段 

    每个表可以有一个也只能有一个标识字段。一个标识字段是唯一标识表中每条记录的特殊字段。例如,数据库pubs中的表jobs包含了一个唯一标识每个工作标识字段: 

    job_id job_desc 

    ……………………………………………………………

    1 New Hire Job not specified 

    2 Chief Executive officer 

    3 Bushness Operations Manager 

    4 Chief Financial Officier 

    5 Publisher 

    字段job_id为每个工作提供了唯一的一个数字。如果你决定增加一个新工作,新增记录的job_id字段会被自动赋给一个新的唯一值。 

    为了建立一个标识字段,你只需在字段定义后面加上表达式IDENTITY即可。你只能把NUMERIC型或INT型字段设为标识字段,这里有一个例子: 

    CREATE TABLE visitorID (theID NUBERIC(18) IDENTITY,name VARCHAR(40)) 

    这个语句所创建的表包含一个名为theid的标识字段。每当一个新的访问者名字添加到这个表中时,这个字段就被自动赋给一个新值。你可以用这个表为你的站点的每一个用户提供唯一标识。 

    技巧: 

    建立一个标示字段时,注意使用足够大的数据类型。例如你使用TINYINT型数据,那么你只能向表中添加255个记录。如果你预计一个表可能会变得很大,你应该使用NUMERIC型数据。 

    标识字段的存在会使你想尝试许多不可能的事情。例如,你也许想利用标识字段来对记录进行基于它们在表中位置的运算。你应该抛弃这种意图。每个记录的标识字段的值是互不相同的,但是,这并不禁止一个标识字段的标识数字之间存在间隔。例如,你永远不要试图利用一个表的标识字段来取出表中的前十个记录。这种操作会导致失败,比如说6号记录和7号记录根本不存在。

    四、删除和修改表 

    要删除一个表,你可以使用SQL语句DROP TABLE。例如,又从数据库中彻底删除表mytable,你要使用如下的语句: 

    DROP TABLE mytable 

    警告: 

    使用DROP TABLE命令时一定要小心。一旦一个表被删除之后,你将无法恢复它。 

    当你建设一个站点时,你很可能需要向数据库中输入测试数据。而当你准备向世界提供你的网点时,你会想清空表中的这些测试信息。如果你想清除表中的所有数据但不删除这个表,你可以使用TRUNCATE TABLE语句。例如,下面的这个SQL语句从表mytable中删除所有数据: 

    TRUNCATE TABLE mytable 

    虽然你不能删除和修改已经存在的字段,但你可以增加新字段。最容易的实现方法是使用SQL事务管理器中的Manager Tables窗口。你也可以使用SQL语句ALTER TABLE。下面是一个如何使用这种语句的例子: 

    ALTER TABLE mytable ADD mynewcolumn INT NULL 

    这个语句向表mytable中增加了一个新字段mynewcolumn。当你增加新字段时,你必须允许它接受空值,因为表中原来可能已经有了许多记录。

     总结

    为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。

    1
    .在查询结果中显示列名:

    a.用as关键字:
    select name as '姓名' from students order by
     age

    b.直接表示:
    select name '姓名' from students order by
     age

    2
    .精确查找:

    a.用in限定范围:
    select * from students where native in ('湖南''四川'
    )

    b.
    betweenandselect * from students where age between 20 and 30


    c.“
    =”:select * from students where name = '李山'

    d.
    like:select * from students where name like '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'%李%';若是第二个字为李,则应为'_李%''_李''_李_'。)

    e.
    []匹配检查符:select * from courses where cno like '[AC]%' (表示或的关系,与"in()"类似,而且"[]"可以表示范围,如:select * from courses where cno like '[A-C]%'
    )

    3
    .对于时间类型变量的处理

    a.
    smalldatetime
    :直接按照字符串处理的方式进行处理,例如:
    select * from students where birth > = '1980-1-1' and birth <= '1980-12-31'


    4.集函数

    a.
    count()求和,如:select count(*from
     students (求学生总人数)

    b.
    avg(列)求平均,如:select avg(mark) from grades where cno=
    ’B2’

    c.
    max
    (列)和min(列),求最大与最小

    5
    .分组group

    常用于统计时,如分组查总数:
    select gender,count
    (sno) 
    from
     students
    group by
     gender
    (查看男女学生各有多少)

    注意:从哪种角度分组就从哪列"
    group by
    "

    对于多重分组,只需将分组规则罗列。比如查询各届各专业的男女同学人数,那么分组规则有:届别(grade)、专业(mno)和性别(gender),所以有"
    group by
     grade, mno, gender"

    select grade, mno, gender, count(*
    )
    from
     students
    group by
     grade, mno, gender

    通常group还和having联用,比如查询1门课以上不及格的学生,则按学号(sno)分类有:

    select sno,count(*from
     grades 
    where mark<60

    group by sno
    having count(*)>1


    6.UNION联合

    合并查询结果,如:

    SELECT * FROM
     students
    WHERE name like ‘张%

    UNION [ALL]

    SELECT * FROM students
    WHERE name like ‘李%


    7
    .多表查询

    a.内连接

    select
     g.sno,s.name,c.coursename 
    from grades g JOIN students s ON g.sno=
    s.sno
    JOIN courses c ON g.cno=
    c.cno
    (注意可以引用别名)
    b.外连接
    b1.左连接
    select courses.cno,max(coursename),count
    (sno) 
    from courses LEFT JOIN grades ON courses.cno=
    grades.cno 
    group by
     courses.cno

    左连接特点:显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全。

    左外连接返回那些存在于左表而右表中却没有的行,再加上内连接的行。

    b2.右连接

    与左连接类似

    b3.全连接

    select
     sno,name,major 
    from students FULL JOIN majors ON students.mno=
    majors.mno

    两边表中的内容全部显示

    c.自身连接

    select
     c1.cno,c1.coursename,c1.pno,c2.coursename 
    from courses c1,courses c2 where c1.pno=
    c2.cno

    采用别名解决问题。

    d.交叉连接

    select lastname+firstname from lastname CROSS JOIN
     firstanme

    相当于做笛卡儿积

    8
    .嵌套查询

    a.用关键字IN,如查询李山的同乡:

    select * from
     students
    where native in (select native from students where name=
    ’ 李山’)

    b.使用关键字EXIST,比如,下面两句是等价的:

    select * from
     students
    where sno in (select sno from grades where cno=
    ’B2’)

    select * from students where exists
     
    (
    select * from grades where
     
    grades.sno
    =students.sno AND cno=
    ’B2’)

    9
    .关于排序order

    a.对于排序order,有两种方法:asc升序和desc降序

    b.对于排序order,可以按照查询条件中的某项排列,而且这项可用数字表示,如:

    select sno,count(*) ,avg(mark) from
     grades 
    group by
     sno
    having avg(mark)>85

    order by 3

    10.其他

    a.对于有空格的识别名称,应该用"
    []
    "括住。

    b.对于某列中没有数据的特定查询可以用null判断,如select sno,courseno 
    from grades where mark IS NULL


    c.注意区分在嵌套查询中使用的any与all的区别,any相当于逻辑运算“
    ||”而all则相当于逻辑运算“&&

    d.注意在做否定意义的查询是小心进入陷阱:

    如,没有选修‘B2’课程的学生 :

    select students.*

    from students, grades
    where students.sno=
    grades.sno
    AND grades.cno <>
     ’B2’

    上面的查询方式是错误的,正确方式见下方:

    select * from
     students
    where not exists (select * from
     grades 
    where grades.sno=students.sno AND cno='B2'
    )

    11
    .关于有难度多重嵌套查询的解决思想:

    如,选修了全部课程的学生:

    select *

    from students
    where not exists ( select *

    from courses
    where NOT EXISTS
     
    (
    select *

    from grades
    where sno=
    students.sno
    AND cno=
    courses.cno))

    最外一重:从学生表中选,排除那些有课没选的。用not exist。由于讨论对象是课程,所以第二重查询从course表中找,排除那些选了课的即可。

     

    添加数据库

    use master
    go

    if exists (select * from sysdatabases where name='test')
    drop database
     mlnt
    go
     
    create database
     test  
    on

    (
    name
    ='test_data',  
    filename
    ='D:"SQLSERVER2000"MSSQL"Data"test_data.mdf'
    ,  
    size
    =
    10mb,
    filegrowth
    =10%


    )
    log on
    (
    name
    ='test_log',
    filename
    ='D:"SQLSERVER2000"MSSQL"Data"test_log.ldf'
    ,
    size
    =
    10mb,
    filegrowth
    =10%

    )
    展开全文
  • SQL语句创建学生

    万次阅读 2018-11-04 15:45:50
    create table Student(  Sno char(10),  Sname varchar(20),  Ssex char(2),  Sage tinyint,  Sdept varchar(20),  ) insert into Student values('201215121','李勇','男','20','CS'), ...
  • Student(S#,Sname,Sage...Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序...
  • 鉴于网上MySQL全方位练习(学生表 教师表 课程表 分数表)版本多为老版本(oracle/hive),或者不为46条的短版本,于是我基于mysql 的8.0版本重写一遍,并且部分语句添加了自己的分解步骤, 适合 MySQL 小白入门,不...
  • sql 创建学生表 课程表 成绩表

    万次阅读 多人点赞 2018-04-23 11:48:55
    创建 create database student go 学生 create table student ( stu_name varchar(30) not null, stu_id char primary key (stu_id), stu_specialty varchar(30) not null, stu_sex char(2) check( stu.....
  • (2)掌握通过SQL语句创建表的方法。 (3)掌握通过SQL语句修改结构的方法。 (4)掌握通过SQL语句添加、修改、删除数据的方法。 实验内容 1.通过SQL语句删除 用SQL语句在数据库Student_info中删除实验一创建...
  • sql语句练习50题(Mysql版)

    万次阅读 多人点赞 2017-12-19 00:11:31
    习题来源于网络,sql语句是自己写的。欢迎指正。 表名和字段 –1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编号, ...
  • 为了方便练习相应语句,写下此博文,用于快速建立一个简单的数据库。   create table Student (  Sno char(10)primary key,  Sname char(10) unique,  Ssex char(2) check (Ssex in ('男','女')),   Sage ...
  • Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表  bm create table Student(S# varchar(20),Sname varchar(10),Sage int,Ssex varchar(2)) 前面加一列序号:
  • sql语句创建关联

    千次阅读 2013-10-14 11:12:08
     `Cno` int(10) unsigned NOT NULL default '0' COMMENT '课程号',  `Grade` int(10) unsigned default NULL COMMENT '成绩',  PRIMARY KEY (`id`),  KEY `FK_sc_1` (`Sno`),  KEY `FK_sc_2` (`Cno`),...
  • 同志们注意哟:学习SQL的好网站:http://www.w3school.com.cn/sql/sql_distinct.asp 同志们注意哟:学习SQL的好网站:...--------创建数据库 ----use master ----GO ----IF EXISTS (SELECT name F
  • 创建课程表语句: create table Course( Cno char(4), primary key,Cname char(20) not null,Cpno char(4), foreign key (Cpno) references Course(Cno) ); 大概就是这么个东西: ![图片说明]...
  • 文章目录数据库实验2——使用SQL语句创建和删除基本一. 实验目的:二. 实验准备三. 实验要求四、实验步骤1. 创建基本2. 修改结构3.删除基本五、实验总结 数据库实验2——使用SQL语句创建和删除基本 一. ...
  • 实验名称 实验2 通过SQL语句创建与管理数据 日期 2020年 06 月 04 日 一、实验目的: (1)掌握查询分析器的使用。 (2)掌握通过SQL语句创建表的方法。 (3)掌握通过SQL语句修改结构的方法。 (4)掌握...
  • color:rgb(39,158,176)">sql语句多表查询(学生表/课程表/教师表/成绩表 )作者:海豚湾孬蛋 问题及描述: --1.学生表 Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生...
  • SQL语句创建表

    万次阅读 多人点赞 2016-07-28 23:22:41
    数据库中的所有数据存储在中。数据包括行和列。列决定了中数据的类型。行包含了实际的数据。  例如,数据库pubs中的authors有九个字段。其中的一个字段名为为au_lname,这个字段被用来存储作者的...
  • 数据库语言及访问接口 SQL的特点:一体化、非过程化、面向集合操作方式、灵活的使用方式(交互式、...创建 数据查询 数据更新(INSERT、UPDATE、DELETE) SQL语句的书写: SQL语句实例 操作 例 1 对于...
  •  student(学生表)、teacher(教师表)、course(课程表)、sc(分数表) 2、创建表 create table student( sno varchar2(10) primary key, sname varchar2(20), sage number(2), ssex varchar2(5) ); create tab
  • 实验三使用SQL语句创建和删除基本 一.实验目的 1.了解SQL Server的基本数据类型。 2.学会使用Create table语句创建基本。 二.实验要求 在查询分析器中使用SQL语句完成基本的创建、修改、删除。 ...
  • 题目:创建数据,将学生详细信息,班级信息,选课信息,课程成绩写入其中,最终通过SQL语句查询学生成绩信息 --创建学生信息的数量不为1),将学生信息,课程信息,班级信息,成绩信息录入数据库, --...
  • SQL语句 创建表、模式、索引

    千次阅读 2020-04-10 11:16:45
    一、数据定义语句 一、 数据定义: 操作对象 创建 删除 修改 模式 CREATE SCHEMA DROP ~ CREATE TABLE DROP ~ ALTER TABLE 视图 CREATE VIEW DROP VIEW 索引 CREATE INDEX DROP INDEX ALTER ...
  • 一. 实验目的 熟悉SQL Server Management Studio环境的...运用SQL语句创建表; 了解数据库的结构,各种文件的扩展名。 查看数据库和。 创建并使用约束和默认值对象,掌握实现数据库的完整性的方法。 二. 实验...
  • 查询学生所选课程SQL语句

    千次阅读 2010-12-03 13:51:00
    学生表 StudentStudentidStudentidname1张三2李四3王五课程表 CourseCourseidCoursename1Java2C#3C4C++5Javascript关系表 StudentCourseStudentidCourseid1114212325题目是这样的:有学生表、课程表和关系表,...
  • 使用SQL语句创建及使用SQLServer数据库

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

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,982
精华内容 18,392
关键字:

创建课程表的sql语句