zoukankan      html  css  js  c++  java
  • SQL数据库基本操作语句

    一、数据库及数据库表定义
      1、创建基本表
        create table <表名> (<列名><数据类型>[列级完整性约束条件]
                                          [,<列名><数据类型>[列级完整性约束条件]
                                          .........
                                          [,<表级完整性约束条件>]);

        例:

    1 create table student  ( Sno char(5) not null unique,
    2                         Sname char(20) unique,
    3                         Ssex char(1),
    4                         Sage int,
    5                         Sdept char(15));

      2、修改基本表
        alert table <表名>
                      [add <新列名> <数据类型> [完整性约束]]
                      [drop <完整性约束名>]
                      [modify <列名><数据类型>];

        add: 用于向表中增加新列及新列相关的完整性约束条件,新的列增加成功后不带任何数据
        drop:用于删除指定的完整性约束条件
        modify:用于修改原来的列定义,包括修改列名和数据类型,列数据类型修改后可能会丢失原有的数据

        例:

    1 alert table student add Scome date;
    2 alert table student modify Sage smallint;
    3 alert table student drop unique(Sname);

      3、SQL中没有提供删除属性列的功能,若需要删除列,必须间接通过select语句来实现,将需要的列的内容复制到另一个表中,再删除原表,然后将新表的名字命名为原表名

      4、删除基本表
        drop table <表名>

      5、建立与删除索引
        create [unique] [cluster] index <索引名> on <表名> (<列名> [<次序][,<列名>[<次序]].....);

        注:unique:表明此索引的每个索引值只对应惟一的一个记录
          cluster:表时要建立的索引是聚簇索引,即按某一列建好索引后,硬盘上的数据存储顺序也调整为按这个列的顺序存储,索引的顺序和存储顺序是一致的
          drop index <索引名>;

        例:

    1 create unique index studentIndex on student (sno);
    2 drop index studentIndex;

    二、数据查询
      select [distinct | distinctRow | all]
                   列名[,列名][,....]
                   [into {outfile | dumpfile} '文件名' export_options]
                   [from 表名]
                   [where 查询条件]
                   [group by 列名[, ....]]
                   [having 条件定义]
                   [order by {无符号整数|列名|公式}[asc | desc],...]
                   [limit [偏移量,] 行数]
                   [procedure 过程名称]

      注:select语句中所有使用的关键词必须精确的以上面的顺序给出
        如果以降序排列,则在order by中加入关键字desc,升序则加入关键字asc,默认是升序
        having子名能引用任何列或在查询中命名的别名,它最后运用,就在项目被送到客户之前是,没有变化。需要注意,不要对应该在where子句中的项目使用having.
        limit子名被用来限制select返回的行数,如果给定1个参数,它指出返回行的最大数目;如果给定2个参数,第一个指定要返回的第一行的偏移量,第二个指定返回行的最大数目,初始行的偏移量是0

      例:

    1 //返回前5个记录
    2 select * from table limit 5;
    3 
    4 //返回第6到第15个记录
    5 select * from table limit 5,10;

      select .... into outfile '文件名' 格式的select语句将选择的行写入一个文件,文件在服务器上被创建,并且不能是已经存在的,且在服务器主机上还必须有file权限以使用这种select
      distinct,使用了这个关键字后,再执行select语句的结果集中,如果有重复的值,则会在结果集中去掉重复的值而只保留一个值。

     1 //选择学生表中所有学生的姓名记录,并且筛选掉重复的记录,将记录保存在名字为name的结果集中,并按学号由大到小排列
     2 select distinct sname as name, sno from student order by sno desc;
     3 
     4 //选择学生表中所有学生的姓名和年龄,并将每个同学的姓名后加上“同学”二字,将每个人的年龄增加1岁,同是计算所有同学年龄的平均值 
     5 // sum() ---- 求所有数据的总和
     6 // max() ----求所有数据中的最大值
     7 // min() -----求所有数据中的最小值
     8 // count() ---求所有数据的个数
     9 // avg() ---- 求所有数据的平均值
    10 select sname, "同学", age+1, avg(age) from student;
    11 
    12 //列出学号在1和100之间,并且成绩大于85分的所有姓”赵“同学的所胡记录
    13 // % ---代表任意字符
    14 //使用通配符时,前面必须用关键字”like15 select * from student where sname like '赵%’ and sno between 1 and 100 and sno in (select sno from student where grade>85);
    16 
    17 //使用学生表、课程表以及学生选课表这3个基本表,列出所有学生的姓名、学号、所选课程的课程名称及该课程的学分
    18 select sname, sno, cno, credit from student, course, sc where student.sno=sc.sno and sc.cno=course.cno;

    三、数据更新
      1、数据插入
        insert into <表名> [<列名>[,<列名>]....) values (value1, value2,...);

        如果表中的每一列均有数据插入,则可不用指定任何表名

      2、数据修改
        update <表名> set <列名>=新值 where <条件表达式>

      3、数据删除
        删除指的是删除数据库中的一个记录,而不是删除某一列

        delete from <表名> where <条件表达式>

    转至:http://blog.csdn.net/zdwzzu2006/article/details/2298777

  • 相关阅读:
    Java代码生成器多表配置优化,增加自定义实体功能
    Java代码生成器加入postgresql数据库、HikariCP连接池、swagger2支持!
    SSM/SpringBoot代码生成器全面升级—增加全新前后端分离响应式主题,修复若干Bug
    记一次真实的线上事故:一个update引发的惨案!
    昨日学习安排
    C++个人学习笔记
    C++位运算符
    随手写事two
    随手写事
    Tomcat一对多遇到得问题
  • 原文地址:https://www.cnblogs.com/1024Planet/p/5032838.html
Copyright © 2011-2022 走看看