• mySql笔记


    零、

    select x from y where z
    

    x输出条件: (color{#f00}{avg()}) | (color{#f00}{min()}) | (color{#f00}{max()}) | (color{#f00}{sum()}) | (color{#f00}{count()})
    y表名: group by (color{#f00}{ \_ })(任意单个字符) | (color{#f00}{\%})(任意0个或多个字符) | (color{#f00}{[]})(括号内所列字符中的一个(类似与正则表达式))
    z限制条件:




    (color{#f00}{----})

    1. select x from y;x两种命名:... as 命名/命名=... | y的命名 ... a(随便字母) // --具体例子查看sql server 复习的连接查询
    2. 不等于三种形式: not | != | <>
    3. 连接: select ... from a表,b表 where a表.学号=b表.学号 --(where后更多表连接用 and)



    一、数据类型

    (color{#f00}{Int}) | (color{#f00}{Float}) | (color{#f00}{ Varchar(value)/Char }) | (color{#f00}{ Date/dateTime })

    char varchar
    是一种固定长度的类型,char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉) 是一种可变长度的类型,varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).
    date dateTime
    是SQL Server 2008新引进的数据类型。它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间 日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33 毫秒 ,它需要8个字节的存储空间



    二、 order by ... desc/asc

    order by score desc/asc                      -- desc(按倒序排序,即:从大到小排序) |  asc(按正序排序,即:从小到大排序)
    

    例:求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。

    select 学号,成绩 from 选课 where 课号="1" and 成绩>80 order by 成绩 desc
    



    三、库

    1. 库|表 : create | drop | alter 数据库
    create database 数据库名称       --(创建库,如下库名为stuDB)
    drop database 数据库名称         --(删除库)
    use 数据库名称                   --(打开该库)
    例:
    create database stuDB
    
    1. 数据 insert into | delete from | update set | select | distinct(过滤掉多余的重复记录只保留一条,如select distinct 课号 from 必修)



    四、表

    ①. 修改
    alter table 表名 add/drop/alter (column) 修改的列 (  字段  数据类型  列的特征 )   --column 为列(sql server 复习——六.1)
    

    修改表结构例子:

    1. 为“课程1”表添加一个开课学期字段,字段类型为数值型,长度为1。
    ALTER TABLE 课程1 ADD COLUMN 开课学期 N(1)
    
    1. 修改开课学期字段为字符型,合法值为1或2。
    ALTER TABLE 课程1 ALTER COLUMN 开课学期 C(1) CHECK 开课学期="1" OR 开课学期="2"
    
    1. 删除“课程1”表中对开课学期字段的合法值约束,设置默认值为1。
    ALTER TABLE 课程1 ALTER 开课学期 DROP CHECK
    ALTER TABLE 课程1 ALTER 开课学期 SET DEFAULT "1"
    
    1. 删除“课程1”表中的开课学期字段。修改课程名字段为“课名”字段。
    ALTER TABLE 课程1 DROP 开课学期 RENAME 课程名 TO 课名
    
    1. 在“学生1”表的“年龄”字段上建立候选索引。
    ALTER TABLE 学生1 ADD UNIQUE 年龄 TAG 年龄
    
    1. 在“学生1”表中添加一个出生日期字段,删除年龄字段。
    ALTER TABLE 学生1 ADD 出生日期 D  ALTER TABLE 学生1 DROP UNIQUE TAG 年龄 DROP 年龄
    

    ②. 创建
    create table 表名(
        字段1 数据类型 列的特征,       --列的特征:包括该列是是否为空(NULL)、是否是标识列(自动编号)、是否有默认值、是否为主键等
        字段2 数据类型 列的特征,
    )
    

    例子:

    create table stuMarks
    (
      ExamNo  CHAR(7)  NOT NULL  identity(1,1),    -- 考号 => 自动编号: 从1(第一个1)开始,每次添加的时候,自动加1(第二个1是说每次加1个)
      stuNo  CHAR(6)  NOT NULL  PRIMARY KEY ,      -- 学号 => 主键约束
      writtenExam  INT(3,2)  NOT NULL,             -- 笔试成绩 => INT(3,2)参数2为保留两位小数
      LabExam  INT NULL                            -- 机试成绩 => NULL 允许为空  
    )
    



    五、约束(constraint)

    主键与唯一: 对一个表来说主键只能一个,且字段不能为空,但唯一性约束可以有好几个,允许字段为空。
    alter table   stuInfo
         add constraint PK_stuNo primaty key   ( stuNo )         -- 主键: primary key
    
    
    alter table   stuInfo
          add constraint   UQ_stuID unique ( stuID )             -- 唯一: unique
    
    
    alter table   stuInfo
          add constraint   DF_stuAddress
               default (' 地址不详 ') for stuAddress              -- 默认( 约束用于向列中插入默认值 ): default  for
    
    
    alter table   stuInfo
            add constraint   CK_stuAge
            check ( stuAge between 15 and   40)                  -- 检查( 约束用于限制列中的值的范围 ): check ( ... between ... and ...)
    
    
    alter table   stuMarks
          add constraint   FK_stuNo          
            foeign key ( stuNo ) references stuInfo ( stuNo )    -- 外键:  foreign key (列名) references  引用外键表(列名)
    

    GO

    约束扩展 -- 检查约束 :

    age int(3) check age>10 and age<45 error "年龄必须大于10小于45 " ,  --check.  ... and ... error "": error是不在范围内提示的字符串  
    默认约束: admissionDate date default {`1991-1-1}  --default:   字符串——""     和当前的时间格式——{`0000-00-00}
    

    外键约束:

    create table 部门信息表(
        部门号 char(10) primary key ,
    )
    
    create table 员工信息表(
        员工的部门号  char(10) ,                           --另一种方法: 员工的部门号  char(10)   references 部门信息表
        foreign key (员工的部门号) references 部门信息表(部门号)
    )
    

    删除约束条件:

    alter table   表名        
    drop constraint 约束名
    例:删除 stuInfo 表中地址 默认约束
            alter tables   stuInfo                                                                                        
            drop constraint   DF_stuAddress
    




    ③. 插入数据:
    insert into table_name (列1, 列2,...) VALUES (值1, 值2,....)


    视图view

    inner join...on(内连接——内部连接的INNER短语可以省略)
    select * from a inner join b on a.classno=b.classno b inner join c b.class=c.class
    例1:

       create view v_student
       as
       SELECT departname FROM Class INNER JOIN Department ON Class.DepartNo = Department.DepartNo INNER JOIN Student ON Class.ClassNo = Student.ClassNo
    

    例2:

    超连接
    1、列出选修1号课的学生姓名及成绩。
    SELECT 姓名,成绩 FROM 学生,选课 WHERE 学生.学号=选课.学号 AND 课号="1"               -- 方法一:(使用简单连接查询格式) 
    SELECT 姓名,成绩 FROM 学生 INNER JOIN 选课 ON 学生.学号=选课.学号 WHERE 课号="1"     -- 方法二:(使用内部连接格式) 
    



    T-SQL

    declare @in int                                                                    -- declare:声明     int:类型
    set @in=(select count(*) as 信息技术类课程数量 from course where kind='信息技术')    -- set:赋值
    if @in>0
         begin
         select @in as 信息技术类课程数量                                                -- select:以表格形式输出 ,一条语句时可省略begin和end
         end
    else
         print '没有此类课程'                                                            -- prin t:z直接返回结果
    
    检索stucou表中同时选修了001及002课程的学生人数
    select @num=count(*) from stucou where couno=‘002 ’  and stuno in (select stuno from stucou where couno=‘001’)
    

    case(11.1)

    语文=
      case course.fame
         where '语文' then score
    



    trigger

    CREATE TRIGGER UpdateWillNum ON StuCou
    FOR INSERT, UPDATE, DELETE
    instead of/for
    AS
    UPDATE Course SET WillNum=(SELECT COUNT(*) FROM StuCou WHERE CouNo=Course.CouNo)
    
  • 相关阅读:
    valgrind试用笔记
    《c++ primer》3.5 array 小结
    《c++ primer》chap8 The IO library 小结
    《c++ primer》3.4 迭代器(iterator)
    《c++ primer》3.1 声明命名空间 小结
    c++ 流格式控制符
    《c++ primer》3.3 vector 类型小结
    《c++ primer》3.2 string 小结
    Ubuntu 管理相关小知识(不定期更新)
    shell 脚本 生成文件,文件名为日期时间
  • 原文地址:https://www.cnblogs.com/lgyong/p/13187596.html
Copyright © 2020-2023  润新知