• sql笔记


    create table s
    (sno char(6),
    sn char(8)constraint sn_uniq unique,
    sex char(2),
    age int,
    dept varchar(20))

        定义SN为唯一键,系统自动为唯一键建立唯一索引,从而保证了唯一性,可以为空,但最多只可以出现一个NULL值。sn_uniq可以省略。

    [constraint<约束名>]unique

    定义sn+sex为唯一键,此表为约束表

    create table ss
    ( sno char(6) unique,
    sn varchar(8),
    sex char(2),
    age int,
    dept varchar(20)
    constraint s_uniq unique (sn,sex))

    前面的约束名可以省略,后面的不可以。   为sn+sex建立唯一索引,确保同一性别的学生没有重名

    null/not null约束

    null值不是也不是空白,更不是填入字符串NULL,而是表示不知道,不确定,或没有数据。

    当某一字段的值一定要输入才有意义的时候,则可以设置not null

    主键就允许出现空值,否则就失去了唯一表示一条记录的作用。

    [constraint<约束名>][null|not null]

    create table ss
    ( sno char(6) constraint s_cons not null,
    sn varchar(8),
    sex char(2),
    age int,
    dept varchar(20))

    当约束名省略时即 s_cons,系统会自动加字

    UNIQUEQ约束(唯一约束)

    [constraint<约束名>] unique

    定义了Unique约束的那些列称为唯一键

    系统自动为唯一键建议一个唯一索引

    1使用unique约束时,约束的字段允许为Null值

    2一个表中可以允许有多个uniqe约束

    3可以把unique约束定义在多个字段上

    4unique约束用于强制在指定字段上创建一个unique索引,缺省为非聚集索引。

    create table s
    (sno char(6),
    sn char(8)constraint sn_uniq unique,
    sex char(2),
    age int,
    dept varchar(20))

    sn_uniq为指定的约束名称,可以省略

    用于定义表约束时,

    [constraint<约束名>]unique (<列名>[{,<列名>}])

    create table ss
    ( sno char(6) unique,
    sn varchar(8),
    sex char(2),
    age int,
    dept varchar(20)
    constraint s_uniq unique (sno,sex))

    确保同一性别的学生没有重名

    PRIMARY KEY约束

    用于定义基本表的主键,起唯一标识作用,值不能为NULL,也不能重复,来保证实体的完整性

    [constraint<约束名>]primary key 列约束

    1在一个基本表中只能定义一个primary key约束,但可以有多个unique约束。

    2对于制定为primary key的一个列或多个列的组合,任何一个列都不能为null,对于unique所约束的唯一键,则允许Null

    3不能为同一个列或一组列,及定义unique又定于primary key约束

    [constraint<约束名>]primary key(<列名>[{,<列名>}])表约束

    CREATE table c
    ( cno char(5) constraint c_prim primary key,
    cn char(20),
    ct int)
    CREATE table sc 
    (sno char(5) not null,
    cno char(5) not null,
    score numeric(4,1),
    constraint sc_prim primary key(sno,cno))

    Foreign key 约束(外键约束)

    外键约束指定某一个列或几列作为外部键。包含外部键的表称为从表,包含外部键所引用的主键或唯一键的表称为主表。

    [constraint]约束名 foreign key references <主表名>(<列名>[{,列名}])

    例如:建立以个SC表,定义SNO,CNo为SC的外部键

    CREATE table c
    (cno char(5) constraint c_prim primary key,
    cn char(20),
    ct int)
    CREATE table s
    (sno char(6) constraint s_prim primary key,
    sn char(8),
    sex char(2),
    age int,
    dept varchar(20))
    CREATE  table sc
    (sno char(5) not null ,
     cno char(5) not null ,
     score numeric(4,1),
     constraint s_c_prim primary key(sno,cno))
    CREATE  table cc
    (sno char(6) not null constraint s_fore foreign key references s(sno),
     cno char(5) not null constraint c_fore foreign key references c(cno),
     score numeric(4,1),
     constraint sc_prim primary key(sno,cno))

    sql命令修改数据库

    (1)add方式

    alter table<表名> add<列定义>| <完整性约束定义>

    此方法增加的新列自动填充Null值,不能添加Not null约束。

    ALTER table s
    add
    class_no char(6),
    address char(40)

    (2)alter 方式

    alter方式用于修改某些列

    alter table<表名>

    alter column <列名><数据类型>[null|not null]

    ALTER table s 
    alter column
    sn char(10)

    把S表中的sn列加宽到10个字符

    注意事项

    1,不能改变列名

    2不能将含有空值的列的定义修改为Not null约束

    3若列中已有数据,则不能减少该列的宽度,也不能改变其数据类型

    4只能修改null/not null约束, 其他类型的约束在修改之前必须先将约束删除,然后重新添加修改过的约束定义。

    DROP方式只用于删除完整性约束定义

    ALTER TABLE<表名>

    DROP CONSTRAINT<约束名>

    例:alter table s

    drop constraint sno_prim

    DROP删除基本表

    DROP TABLE <表名>

    例:drop table s

    查询选修C1或C2且分数大于等于85分学生的学号,课程号,成绩                          查询C1或C2                   查询即没有选C1也没有选C2的

    select sno,cno,score                             

    from sc

    where (cno='c1' or cno='c2')and(score>=85)                                   where cno in ('c1','c2')           where cno  not in ('c1','c2')

    工资在1000-1500的                                   不在1000-1500的

    .  .                                                                   。。             

    where sal between (1000 and 1500)       where sal  not between (1000-1500)

    部分匹配查询  like 或 not like

    《属性名》like <字符串常量>

    通配符

    %                   代表0个或多个字符               a%

    _(下划线  )  代表一个字符                    a_b

    []                   表示在某一范围的字符       [0-9]

    [^]               表示不在某一范围的       [^0-9]

  • 相关阅读:
    面试官让我手写一个生产者消费者模式
    怎么用wait、notify巧妙的设计一个Future模式?
    并发编程之Master-Worker模式
    你和那些优秀的人差距在哪里?
    idea 2019.3 最新版破解教程
    JVM垃圾回收详解
    Java类加载器和双亲委派机制
    Java代理模式/静态代理/动态代理
    JSP自定义标签/自定义标签打包
    MyBatis关联查询 (association) 时遇到的某些问题/mybatis映射
  • 原文地址:https://www.cnblogs.com/yi-mi-yangguang/p/6002293.html
Copyright © 2020-2023  润新知