zoukankan      html  css  js  c++  java
  • sql基础-笔记

     --创建表:
    create table tName(
        id int,
        userName char(10),
        password char(10) 
    );

    //多写点没关系
    create table student(
        id int,                  
        userName char(10),     
        password char(10),     
        address  varchar(10),
        userPhone char (13),
        primary key(id)       
    );

    //参数解释:
    char: 定长  给的长度是多少 就分配多少空间,n介于 1 和 8,000 之间的数值,存储大小为 n个字节;索引效率高,程序里使用trim可去掉多余的空格
    varchar  变长   100    可以释放空间,n介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n个字节;索引效率较低
     
    --drop 命令,与该命令拥有同样功能的还有delete和truncate。
    // 三者区别在于:
    drop语句执行删除过程会将表彻底删除,且不可恢复,表所占空间全部释放,恢复初始;
    delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作;
    truncate则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
    范围而较:drop > truncate > delete
    delete和truncate只删除数据,而drop则删除整个表(结构和数据)。(PS : o(╯□╰)o这个不是本篇日志重点,不多作解释了...)
    //用法示例:
    drop database // 库名
    drop table  // 表名
     
     
     
    --向表里面插入数据
    //方式一:
    insert into  student  values(1,'无忧','123','beijing','1393292392');
    //方式二:个人觉得比较方便
    insert into student(id,userName,password,address,userPhone)
    select 1,'无忧','123456','地球','1354679854' union
    select 2,'进阶',123456','火星','1354679855' union
    select 3,'咖啡','123456','未知行星','1354679856'
    --向表里面插入数据  指定列
    insert into  student  (id,userName,password,address,userPhone)  values(1,'zhangsan','123','beijing','1393292392');
     
     
    select *  from aa      // *  代表所有字段名

    select id from aa     // 指定列查询

    //也可以这么写:
    select
       id,
       name
    from
       aa
     

    select 
       id,
       userName,
       password,
       address,
       userPhone
    from
       student
     
    //主要看个人代码习惯

    --给列 和 表名 起别名1
    select 
       id  用户ID,
       userName 用户名,
       password,
       address,
       userPhone
    from
       student a
     
    给列 和 表名 起别名
    select 
       id as 用户ID,
       userName as 用户名,
       password,
       address,
       userPhone
    from
       student as a
     

    where 语句(限制条件)
    select 
       id,
       userName,
       password
       address
    from 
       student
    where
       id='1'
     

    select 
      userName
    from  
      student
    where 
      id='1'

    --双重条件限制 并且关系(and)
    select 
      userName
    from  
      student
    where 
      id='1'
      and
      password='1'
    --双重条件限制 或者关系(or)
    select 
      userName
    from  
      student
    where 
      id='1'
      or
      password='2'
     
    in语句
    select 
     *
    from
      student
    where
       id in(1,3,4,6);
     
    --逻辑操作符
    select
       *
    from
      student
      where id>1 and id<=5
     
    --between语句 注意事项:1、必须是数字类型   2、and 的左边 是小的数字   右边是大的数字
    例:
    select 
       *
    from
      student
    where
       id between 1 and 5
     
    --like 模糊查询 %任意匹配
    select
      *
    from
      student
    where
      password like '%3%'
    --like 模糊查询 _单个字符匹配 
    select
      *
    from
      student
    where
      password like '_3%';
     
    --排序
       select * from emp order by empno asc;   // asc可以不写 不指定默认升序
       select * from emp order by ename desc; // 降序
    --去除重复
        select distinct  password from student
        // 分页 语句  这个语句在oracle里面不好用
        select * from emp limit 0, 10   从第0条查询    查询出十条记录

    ----------------------------------------------------------------------------------------
    求平均值: select avg   (字段名)
    总记录数: select count (字段名)
    最小值:   select min   (字段名)
    最大值:   select max   (字段名)
    求和:     select sum   (字段名)

    -------------------------------多表查询-------------------------------------------------------
    第一种连表查询:
    select 
      a.empno,
      a.ename,
      a.job,
      a.deptno,
      b.dname,
      loc
    from
      emp a,
      dept b
    where a.deptno = b.deptno

    第二种连表查询:
    select 
        a.empno,
        a.ename,
        a.job,
        a.deptno,
        b.dname,
        b.loc
    from
       dept b
       join
       emp a
    on
      a.deptno = b.deptno
     
    第三种连表查询:
    select 
        a.empno,
        a.ename,
        a.job,
        a.deptno,
        b.dname,
        b.loc
    from
      emp a
       right join
      dept b
    on
      a.deptno = b.deptno
     
     
    增 删 改 查
    --------------------------删除-----------------------------
    delet from  student --删除所有 
    delet from  student  where id= '1'
    delete from student where userName= '无忧';
    delete from student where userName= '无忧' and id='1';
    -----------------------------------------------------------

    update  student set userName='new',password = 'aaa'  where id = '1'
    -------------------------------------------------------------------------------
    --建索引
     create index indexName on dept(dname);    // indexName :索引名       dept:表名

     create Unique index name on dept(dname);  // 创建唯一索引   不指定默认是通用的

     
    ----------------------------------------------------------------------------------
    --视图:视图是一张虚拟的表
    创建视图的优点: 1 简化复杂的查询
              2 不占用磁盘空间 
     
    不足之处:不支持子查询
    例:
    create view dept_emp
    as
    select 
      a.empno,
      a.ename,
      a.job,
      a.deptno,
      b.dname,
      loc
    from
      emp a,
      dept b
    where a.deptno = b.deptno
     视图使用方法:select * from dept_emp;
    但行好事,莫问前程。
  • 相关阅读:
    Kafka 生产者 自定义分区策略
    同步互斥
    poj 1562 Oil Deposits(dfs)
    poj 2386 Lake Counting(dfs)
    poj 1915 KnightMoves(bfs)
    poj 1664 放苹果(dfs)
    poj 1543 Perfect Cubes (暴搜)
    poj 1166 The Clocks (暴搜)
    poj 3126 Prime Path(bfs)
    处理机调度
  • 原文地址:https://www.cnblogs.com/txhy/p/10628121.html
Copyright © 2011-2022 走看看