精华内容
下载资源
问答
  • 结构化语言

    千次阅读 2019-09-22 13:35:08
    结构化语言就是将自然语言加上程序设计语言的控制结构就成了结构化语言,专门用来描述加工逻辑。所以,它既有自然语言灵活性强、表达丰富的特点,又有结构化程序的清晰易读和逻辑严密的特点。 结构化语言的显著...
    结构化语言就是将自然语言加上程序设计语言的控制结构就成了结构化语言,专门用来描述加工逻辑。所以,它既有自然语言灵活性强、表达丰富的特点,又有结构化程序的清晰易读和逻辑严密的特点。 
    
    结构化语言的显著特征是代码和数据的分离。这种语言能够把执行某个特殊任务的指令和数据从程序的其余部分分离出去、隐藏起来。获得隔离的一个方法是调用使用局部(临时)变量的子程序。通过使用局部变量,我们能够写出对程序其它部分没有副作用的子程序。这使得编写共享代码段的程序变得十分简单。如果开发了一些分离很好的函数,在引用时我们仅需要知道函数做什么,不必知道它如何做。切记:过度使用全局变量(可以被全部程序访问的变量)会由于意外的副作用而在程序中引入错误。 
    
    结构化语言比非结构化语言更易于程序设计,用结构化语言编写的程序的清晰性使得它们更易于维护。这已是人们普遍接受的观点了。比如作为结构化语言的C语言主要结构成分是函数C的独立子程序。在C语言中,函数是一种构件(程序块),是完成程序功能的基本构件。函数允许一个程序的诸任务被分别定义和编码,使程序模块化。可以确信,一个好的函数不仅能正确工作且不会对程序的其它部分产生副作用。

      三种基本控制结构:顺序结构、选择结构和循环结构

     

    From https://wenwen.sogou.com/z/q818881429.htm

    展开全文
  • MySQL-SQL结构化查询语言

    万次阅读 多人点赞 2018-09-07 19:44:26
    结构化查询语言 1、数据定义语言(DDL) 约束条件Constraint 2、数据操纵语言(DML) 3、事物控制语言(TCL) 4、数据查询语言(DQL) (1)select/for 基本查询语句 (2)给列起别名 (3)where子句 (4)order by子句...

    目录

    结构化查询语言

    1、数据定义语言(DDL)

    约束条件Constraint

    2、数据操纵语言(DML)

    3、事物控制语言(TCL)

    4、数据查询语言(DQL)

    (1)select/for 基本查询语句

    (2)给列起别名

    (3)where子句

    (4)order by子句(排序)

    (5)distinct 去重

    (6)group by子句(分组查询)

    (7)having子句(分组查询添加条件)

    (8)基本查询总结

    (9)关联查询       

    (10)高级关联查询

    5、数据控制语言(DCL)


    结构化查询语言

    结构化查询语言(Structured Query Language),简称SQL,是数据库的标准查询语言。可以通过DBMS对数据库进行定义数据,操纵数据,查询数据,数据控制等

    SQL可以分为:

    1、数据定义语言(DDL)

           Data dafinitaon Language
           如创建表create
           删除表drop
           修改表alter
           清空表truncate,彻底清空,无法找回。

    查看所有数据库:show databases;
    查看所有表:show tables;
    modify
    删除数据库   drop database db1802;
    创建数据库   create database abc default character set utf8;
    选择数据库   use abc;                 
    创建表       create table p1(id int(3),name varchar(20));
    查看表       desc p1
    插入数据     nsert into p1 values(1,'张三');
    添加表字段语句   alter table p1 add(age int(3));
    删除表字段语句   alter table p1 drop id;
    修改表字段类型格式   alter table p1 modify age varchar(2);
    修改表字段名称   alter table p1 change age p1age int(3);
    修改表名      alter table p1 rename per;
    清空表结构   truncate table per;
    删除表结构   drop table per;

    修改命令提示符界面显示编码集:set names GBK

    约束条件Constraint

         对插入表中字段的数据起到一定的条件限制。

    1. 主键约束:primary key 要求作为主键的字段的字段值非空且唯一,一张表中只能有一个主键,但一个主键中可以有多个字段  AUTO_INCREMENT自增。
    2. 非空约束: not null  要求有非空约束的字段不可为null值
    3. 唯一性约束:unique  要求有唯一性约束的字段不可以重复,但是可以为null.
    4. 检查性约束:check(条件)--- check(gender in('f','m'))   要求在插入数据时必须符合字段的检查条件,可以为null
    5. 外键约束: foreign key   要求有外键约束的字段A必须依赖于另外一个字段B,字段B要有主键约束。字段A的值,要么是null,要么                                        必须是字段B里的值。

    序列: 作用用来给作为主键约束的字段进行有序的自增。auto_increment  默认序列是从1开始,每次自增+1;

    create table t_01
    (tid int primary key auto_increment,   --主键约束,不能重复,不能为空,自增
    tname varchar(20) not null, --非空约束
    IdCard varchar(20) unique,  --唯一性约束
    gender enum('男','女'),  --检查性约束
    mgr int,                             
    foreign key(mgr) references t_01(tid) --外键约束,被约束的字段存放的数据要么是null,要么是主键中有的
    );

    2、数据操纵语言(DML)

         insert:向表中插入数据
         delete:删除表中的数据,格式:delete from tableName [where 条件]
         update:修改表中的数据  格式:update tableName set colName1=value1[,colName2=value2] [where 条件]

         where 条件:  对表中的数据增加条件进行限制,起到过滤的作用。

                   格式:  where  colName 关系运算符 value [or|and 条件2]

                   关系运算符: >,>=,<,<=,  等于:=,不等于:!= 或 <>

         null值操作:比较null时,不能使用=或者!= 或者<>,而是使用 is或者is not,在select子句中,使用关系运算符

    练习

    --创建一个表
    create table temp_day02(
    tid int,
    tname varchar(20),
    birth date,
    address varchar(50)
    );
    --================================================================================
    
    --插入数据  1001,'jack' ,'上海' ,下面是两种插入方式,第二种可以批量插入。只需添加多个用逗号隔开即可
    insert into temp_t02 values (1001,'jack',null,'上海');
    insert into temp_t02(tid,tname,address) values(1002,'rose','beijing');
    --================================================================================
    
    --删除表temp_t02中的所有数据。
    delete from temp_t02;
    --删除表中temp_t02中的tid为1001的记录。
    delete from temp_t02 where tid=1001;
    --删除表temp_t02中 tid为1002和地址为上海的的数据
    select * from temp_t02;
    delete from temp_t02 where tid=1002 and address='上海';
    --================================================================================
    
    --修改表temp_t02中的字段address为中国。
    update temp_t02 set address='中国';
    --修改表temp_t02中的tid为1002的address为英国,人名为micheal。
    update temp_t02 set address='英国',tname='micheal' where tid=1002;
    --将生日为null的记录的tname改为'general'
    update temp_t02 set tname='general' where tbirth is null;
    --将tid为1001的tbirth改为'2000-8-8';
    update temp_t02 set tbirth = '2000-8-8' where tid = 1001;
    --将tid为1002的address改为null.
    update temp_t02 set address=null where tid=1002;

    3、事物控制语言(TCL)

    :Transation Control Language

         有时我们可能需要使用DML进行批量数据的删除,修改,增加。比如,在一个员工系统中,我们想删除一个人的信息。除了删除这个人的基本信息外,还应该删除与此人有关的其他信息,如邮箱,地址等等。那么从开始执行到结束,就会构成一个事务。对于事务,我们要保证事务的完整性。要么成功,要么撤回。

         一般情况下事务要符合四个条件(ACID):

                原子性(Atomicity):事务要么成功,要么撤回。不可切割性。

                一致性(Consistency):事务开始前和结束后,要保证数据的一致性。转账前账号A和账号B的钱的总数为10000,转账后账号A和账号B的前的总数应该还是10000;

                隔离性(Isolation):当涉及到多用户操作同一张表时,数据库会为每一个用户开启一个事务。那么当其中一个事务正在进行时,其他事务应该处于等待状态。保证事务之间不会受影响。

                持久性(Durability):当一个事务被提交后,我们要保证数据库里的数据是永久改变的。即使数据库崩溃了,我们也要保证事务的完整性。

       commit    提交
       rollback    撤回,回滚。
       savepoint    保存点

         事务:只有DML操作会触发一个事务。存储引擎(ENGINE):就是指表类型.当存储引擎为innodb时,才支持事务。有一个默认的存储引擎为Myisam。不支持事务。

         事务的验证:
                第一步:start transaction
                第二步:savepoint 保存点名称。
                第三步:DML
                第四步:commit/rollback;

     

    4、数据查询语言(DQL)

    :Data Query Language

    (1)select/for 基本查询语句

                格式: select子句  from子句     select colName[,colName.......]  from  tableName;

    (2)给列起别名

                格式:select 列名1 as "要起的名"  [, 列名2 as "要起的名" ,... ]  from tableName;

    (3)where子句

                作用:在增删改查时,起到条件限制的作用。

               多条件写法:in not in (集合元素,使用逗号分开);    注意:同一个字段有多个值的情况下使用。 in 相当于 or, not in  相当于  and

               all | any与集合连用,此时集合中的元素不能是固定的必须是从表中查询到的数据。

               范围查询colName between val1 and val2;   查询指定列名下的val1到val2范围中的数据

               模糊查询:like
                     通配符:%  表示0或0个以上字符。_  表示匹配一个字符
                     格式:    colName like  value;

    练习

    --创建表
    create table emp (
    empno int(5),
    ename VARCHAR(10),
    job VARCHAR(9),
    mgr int(4),
    hiredate DATE,
    sal int(7),
    comm int(7),
    deptno int(2)
    );
    --添加数据
    insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) values
    (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20),
    (7499  ,'ALLEN'   ,  'SALESMAN' , 7698 , '1981-2-10' ,  1600 , 300  , 30),
    (7521  ,'WARD', 'SALESMAN' , 7698,  '1981-2-22' ,  1250 , 500  , 30),
    (7566  ,'JONES','MANAGER' ,  7839,  '1981-4-2'  ,  2975 , NULL , 20),
    (7654  ,'MARTIN','SALESMAN' , 7698,  '1981-9-28',   1250 , 1400 , 30),
    (7698  ,'BLAKE','MANAGER' ,  7839 , '1981-5-1' ,   2850 , NULL , 30),
    (7782  ,'CLARK','MANAGER' ,  7839 , '1981-6-9' ,   2450 , NULL , 10),
    (7788  ,'SCOTT','ANALYST' ,  7566,  '1987-4-19',   3000 , NULL , 20),
    (7839  ,'KING','PRESIDENT' ,NULL,  '1981-11-17',  5000 , NULL , 10),
    (7844  ,'TURNER','SALESMAN' , 7698,  '1981-9-8',    1500 , 0   ,  30),
    (7876  ,'ADAMS','CLERK'  ,   7788 , '1987-5-23',   1100,  NULL , 20),
    (7900  ,'JAMES','CLERK' ,    7698 , '1981-12-3',   950 ,  NULL , 30),
    (7902  ,'FORD','ANALYST' ,  7566 , '1981-12-3' ,  3000 , NULL , 20),
    (7934  ,'MILLER','CLERK',     7782 , '1982-1-23',   1300 , NULL , 10),
    (8002  ,'IRONMAN','MANAGER',   7839 , '1981-6-9',    1600, NULL , 10),
    (8003  ,'SUPERMAN','MANAGER',   7839 , '1981-6-9',    1600 , NULL , NULL);
    1、查询
    --查询员工表emp中的 员工姓名,员工职位,员工入职日期和员工所在部门。
    select ename,job,hiredate,deptno from emp;
    --==============================================================
    
    2、给列起别名
    --查询员工姓名和员工职位。分别起别名,姓名和职位。
    select ename as "姓名" ,job as "职位" from emp;
    --==============================================================
    
    3、where子句
    --查询员工表中部门号为10和20的员工的编号,姓名,职位,工资
    select empno,ename,job,sal from emp where deptno=10 or deptno =20;
    --查询员工表中部门号不是10和20的员工的所有信息。
    select * from emp where deptno<>10 and deptno<>20;
    
    使用in ,not in修改上面的练习
    select empno,ename,job,sal from emp where deptno in(10,20);
    select * from emp where deptno not in (10,20);
    
    all|any与集合连用:
    --查询员工allen,blake,clark三个人的工资
    select * from emp where sal>all(select sal from emp where ename in ('allen','blake','clark'));
    
    范围查询:
    --查询工资大于等于1500并且小于等于2500的员工的所有信息。
    select * from emp where sal between 1500 and 2500; 
    --练习2:查询工资小于2000和工资大于2500的所有员工信息。
    select * from emp where sal not between 2000 and 2500; 
    
    模糊查询:like
    --查询员工姓名中有a和s的员工信息。
    select ename,job,sal,comm,deptno from emp where ename like '%a%' and ename like '%s%';
    select ename,job,sal,comm,deptno from emp where ename like '%a%s%' or ename like '%s%a%';
    
    

    (4)order by子句(排序)

                当在查询表中数据时,记录比较多,有可能需要进行排序,此时我们可以使用order by子句。

                语法:select...from tableName [where 子句][order by 子句]

                注意: 可以通过一个或多个字段排序。

                格式:  order by colName [ ASC DESC ][ , colName1....[ ASC DESC ] ];

                排序规则:  ASC:升序 ,DESC:降序,默认是升序排序。

    (5)distinct 去重

                有的时候我们需要对重复的记录进行去重操作,比如,查询表中有哪些职位,此时,一种职位只需要显示一条记录就够。

                位置:必须写在select关键字后。

    (6)group by子句(分组查询)

              分组查询与分组函数(聚合函数):有的时候,我们可能需要查询表中的记录总数,或者查询表中每个部门的总工资,平均工资,总人数。这种情况需要对表中的数据进行分组统计。需要group by子句。

                位置:select...from tName [where 条件] [group by子句] [order by子句]

                用法:group by Field1[,Field2]。

                注意:在分组查询时,select子句中的字段,除了聚合函数外,只能写分组字段。

                聚合函数:
                       count(Filed)  统计指定字段的记录数。
                       sum(Filed)    统计指定字段的和。
                       avg(Filed)     统计指定字段的平均值
                       max(Filed)    返回指定字段中的最大值。
                       min(Filed)     返回指定字段中的最小值。

                       PS:聚合函数会忽略null值。因此有时候需要使用函数:ifnull(field,value)  (如果field字段对应的值不是null,就使用field的值,如果是null,就使用value.)

                       注意:多字段分组时(多表联合查询时不加任何条件),最多分组的数目为Filed1*Field2[*Filed3....]

    (7)having子句(分组查询添加条件)

                在分组查询时,有的时候可能需要再次使用条件进行过滤,这个时候不能where子句,应该使用having子句。having子句后可以使用聚合函数。

                位置:位于group by子句后

    (8)基本查询总结

                一个基本的查询语句包含的子句有:select子句,from子句,where子句,group by子句,having子句,order by子句
                一个完整的查询语句:select..from..[where..][group by..][having..][order by..]

                执行顺序:先执行from子句,再执行where子句,然后group by子句,再次having子句,之后select子句,最后order by子句 

    (9)关联查询       

           概念:当在查询时,我们所需要的数据不在一张表中,可能在两张表或多张表中。此时我们需要同时操作这些表。即关联查询

           等值连接:在做多张表查询时,这些表中应该存在着有关联的两个字段。我们使用某一张表中的一条记录与另外一张表通过相关联的两个字段进行匹配,组合成一条记录。

            笛卡尔积在做多张表查询时,我们使用某一张表中的每一条记录都与另外一张表的所有记录进行组合。比如表A有x条,表B有y条,最终组合数为x*y,这个值就是笛卡尔积,通常没有意义。

           内连接:只要使用了join on。就是内连接。查询效果与等值连接一样。
               用法:表A [inner] join  表B  on 关联条件

    外连接:在做多张表查询时,我们所需要的数据,除了满足关联条件的数据外,还有不满足关联条件的数据。此时需要使用外连接。

           驱动表(主表):除了显示满足条件的数据,还需要显示不满足条件的数据的表
           从表(副表):只显示满足关联条件的数据的表

    外连接分为三种

    1. 左外连接:表A left [outer] join 表B  on 关联条件,表A是驱动表,表B是从表
    2. 右外连接:表A right [outer] join 表B  on 关联条件,表B是驱动表,表A是从表
    3. 全外连接:表A  full [outer] join 表B on 关联条件,两张表的数据不管满不满足条件,都做显示。

         

           自连接:在多张表进行关联查询时,这些表的表名是同一个。即自连接。

    (10)高级关联查询

           有的时候,我们要查询的数据, 一个简单的查询语句满足不了,并且我们使用的数据,在表中不能直观体现出来。而是需要预先经过一次查询才会有所体现。那么先执行的查询,我们称之子查询。子查询嵌入到的查询语句称之为父查询。

           子查询返回的数据特点:
                  (1) 可能是单行单列的数据。
                  (2) 可能是多行单列的数据
                  (3) 可能是单行多列的数据
                  (4) 可能是多行多列的数据

    1)子查询可以在where、from、having、select字句中,在select子句中时相当于外连接的另外一种写法。

    --查询表中各部门人员中大于部门平均工资的人
    select ename,sal,a.deptno ,b.av
    from emp a,
    (select deptno,avg(ifnull(sal,0)) as av from emp group by deptno) b
    where a.deptno=b.deptno and a.sal>b.av
    order by deptno ASC;

    5、数据控制语言(DCL)

    Data Control Language

         作用是用来创建用户,给用户授权,撤销权限,删除用户。+

         格式:
             1、创建用户:create user username@ip identified by newPwd;

             2、显示用户的权限:show grants for username@ip;
             3、授权:grant 权限1,权限2... on 数据库名.* to username@ip;
                      DML权限:insert,delete,update
                      DQL权限:select
                      DDL权限:create,alter,drop...

             4、撤销权限:revoke 权限1,权限2..on 数据库名.* from username@ip;

             5、删除用户:drop user username;

             使权限立即生效:flush privileges;

     

     

     

    展开全文
  • 数据库:结构化查询语言

    千次阅读 2018-07-31 19:07:43
    SQL 是非过程化语言:只需要知道要做什么,不必担心如何去做。美国国家标准学会(ANSI)制定了一个标准 SQL——最新版本是 SQL-99 或 SQL3。ANSI 的 SQL 标准也被国际标准化组织(ISO),即一个由超过 150 个国家的...

    在开始编写文章前,有几个问题需要思考一下:

    • 什么是结构化查询语言
    • 结构化查询语言分类

    1. 什么是结构化查询语言

    SQL 是非过程化语言:只需要知道要做什么,不必担心如何去做。美国国家标准学会(ANSI)制定了一个标准 SQL——最新版本是 SQL-99 或 SQL3。ANSI 的 SQL 标准也被国际标准化组织(ISO),即一个由超过 150 个国家的标准体组成的团体所认可。

    SQL 的核心是查询。实际上,在 SQL 中,查询这个词包含了问题和操作两层意思。大多数 SQL 查询用来回答这些问题,如“库存商品中哪些价格超过 $100,这些商品现各有多少?”。然而,许多 SQL 查询用于添加或删除表记录或修改属性值等操作。还有的 SQL 查询创建新的表或索引。

    2. 结构化查询语言分类

    • 数据定义语言(DDL):SQL 包括创建表、索引和视图等数据库对象命令,以及定义这些数据库对象的访问权限命令。
    • 数据操纵语言(DML):定义数据检索和更新。

    2.1 数据定义语言

    当创建一个新的数据库,RDBMS 会自动创建数据库字典来存储元数据并创建一个默认的数据库管理员。创建保存数据库的物理文件意味着与操作系统以及操作系统支持的文件系统进行交互。

    2.1.1 数据库模式

    在 SQL 环境中,模式(schema)是一组数据库对象——如表和索引——彼此是相关的。通常,模式属于单个用户或应用程序。一个数据库可以有多个模式,分别属于不同的用户或应用程序。把一个模式看成是一个数据库对象的逻辑分组,如表、索引和视图。模式能有效地将表按照所有者(或功能)分组,并且实施一个一级安全措施,允许每个用户只能看到数据该用户的表。

    ANSI SQL 标准定义了一个创建数据库模式的命令:

    CREATE SCHEMA AUTHORIZATION {创建者};

    大多数企业级的 RDBMS 支持这样的命令。然而,这个命令很少直接使用——在命令行中(当一个用户被创建,DBMS 自动给该用户分配一个模式)。在 DBMS 中,CREATE SCHEMA AUTHORIZATION 命令必须由拥有该模式的用户发布。也就是说,如果用 JONES 身份登录,则只能使用 CREATE SCHEMA AUTHORIZATION JONES 命令。

    注意:MySQL 里没有 create schema 这条语句,而是对应 create database。

    2.1.2 创建表结构

    使用 CREATE TABLE 命令语法如下:

    CREATE TABLE 表名(
        列1    数据类型    [约束]  [,
        列2    数据类型    [约束]  ][,
        PRIMARY KEY (列1   [,列2])][,
        FOREGIN KEY (列1   [,列2]) REFERENCES 表名][,
        CONSTRAINT 约束]);

    为了使 SQL 代码更具有可读性,多数 SQL 程序员使用一行代码来定义每一列(属性)。此外,空格用来排列属性的特征和约束。最后,表和属性名全部大写。

    注意:[......]:一个可选参数——方括号里面的内容是可选的。

    CREATE TABLE VENDOR (
        V_CODE          INTEGER           NOT NULL      UNIQUE,
        V_NAME          VARCHAR(3)        NOT NULL,
        V_CONTANT       VARCHAR(15)       NOT NULL,
        V_AREACODE      CHAR(3)           NOT NULL,
        V_PHONE         CHAR(8)           NOT NULL,
        V_STARE         CHAR(2)           NOT NULL,
        V_ORDER         CHAR(1)           NOT NULL,
        PRIMARY KEY (V_CODE));    

    PRODUCT 表

    CREATE TABLE PRODUCT (
        P_CODE          VARCHAR(10)       NOT NULL    UNIQUE,
        P_DESCRIPT      VARCHAR(35)       NOT NULL,
        P_INDEX         DATE              NOT NULL,
        P_QOH           SMALLINT          NOT NULL,
        P_MIN           SMALLINT          NOT NULL,
        P_PRICE         NUMBER(8,2)       NOT NULL,
        P_DISCOUNT      NUMBER(5,2)       NOT NULL,
        V_CODE          INTEGER,
        PRIMARY KEY (P_CODE),
        FOREIGN KEY (V_CODE) REFERENCES VENDOR ON UPDATE CASCADE);
    
    • 属性的 NOT NULL 规范确保一个数据被输入。必须保证数据有效的。NOT NULL 规范将不允许终端用户使属性为空值(根本没有数据输入)。因为在表中提出这个规范并保存在数据字典,所以应用程序可以用这个信息自动创建数据字典合法性。
    • UNIQUE 规范在各个属性上创建唯一索引。用它来避免列值重复。
    • 主码属性包含 NOT NULL 和 UNIQUE 规范。这些规范确保了实体完整性。如果不支持 NOT NULL 和 UNIQUE 规范,就用 PRIMARY KEY。
    • 整个表的定义包含在括号里面。逗号用来隔开表中各个元素(属性、主码和外码)定义。(如果是复合主码,则主码中所有属性包含在括号里面并用逗号隔开。主码属性的顺序很重要,因为索引从第一个开始,然后是下一个属性。)
    • ON UPDATE CASCADE 规范保证,如果修改 VENDOR 的 V_CODE,变化将自动应用到这个系统(级联)所有相关联的外码以确保参照完整性。

    表结构的所有修改都可以使用 ALTER TABLE 命令,后面跟着一个你想做的特殊修改的关键字。有 3 种选择:ADD、MODIFY 和 DROP。用 ADD 添加字段,MODIFY 修改字段的特征,DROP 删除字段。大多数 RDBMS 不允许删除字段(除非该字段不包含任何值),因为这种行为可能会删除其他表使用的关键数据。添加或修改字段的基本语法为:

    ALTER TABLE 表名
        {ADD | MODIFY} (字段名 数据类型[{ADD | MODIFY} 字段 名数据类型]);

    ALTER TABLE 命令也可以用来增加表的约束。这种情形下,语法为:

    ALTER TABLE 表名
        ADD 约束 [ ADD 约束];

    也可以用 ALTER TABLE 命令来删除字段或表约束。语法如下:

    ALTER TABLE 表名
        DROP{PRIMARY KEY | COLUMN 字段名 | CONSTRAINT 约束名};

    注意当删除一个约束时,需要指明要删除的约束的名字。这就是为什么应 CREATE TABLE 或 ALTER TABLE 语句中给约束命名的原因。

    2.2 数据操纵语言

    2.2.1 添加表记录

    SQL 使用 INSERT 命令来向表中输入数据,INSERT 命令的基本语法如下:

    INSERT INTO 表名 VALUES (值1,值2,...,值n)

    如果需要添加多条记录到一个表中,用另外一个表作为数据源。INSERT 语句的语法为:

    INSERT INTO 表名 SELECT 字段列表 FROM 表名;

    INSERT 语句使用了 SELECT 子查询。子查询,也叫做嵌套查询或内查询,是嵌入(嵌套)在另一个查询中的查询。前面给出的 SQL 语句,INSERT 部分表示外查询,而且 SELECT 部分表示子查询。可以多层嵌套语句(在查询中嵌套查询);在每一层嵌套中,内查询的结果作为外(高一级)查询的输入。

    SELECT 子查询返回的值应该匹配 INSERT 语句中表的属性和数据类型。如果插入的表中有一个日期属性、一个数字属性和一个字符属性,则 SELECT 子查询应该返回一行或多行,每行中的第一列有日期值,第二列有数字值,第三列有字符值。

    2.2.2 保存表的修改

    任何对表内容的修改要等到关闭数据库、关闭使用的程序或使用 COMMIT 命令时才保存到磁盘上。如果在发出 COMMIT 命令之前,数据库打开了后停电或发生一些其他中断,修改的内容将会丢失,只保留原始的表内容。COMMIT 命令的语法是:

    commit [工作]

    COMMIT 命令会永久保存对数据库中任何表的所有修改内容(如添加的记录、修改的属性值和删除的记录)。因此,如果打算永久保留对 PRODUCT 表的修改,用一下命令来实现是个好方法:COMMIT。

    然而,COMMIT 命令不只是为了保存修改内容。实际上,COMMIT 和 ROLLBACK 命令主要用来保证事务管理中的数据库更新完整。

    2.2.3 显示表记录

    SELECT命令用于显示表的内容。SELECT命令的语法如下:

    SELECT 字段列表 FROM 表名;

    字段列表表示一个或多个属性,用逗号隔开。可以用 * (星号)作为一个通配符来表示所有属性。通配符是一种符号,用作替代其他字符或命令的一个通用替换符。

    尽管 SQL 命令可以写作一行,但是复杂的命令语句最好分行显示,SQL 命令和命令的成员间用空格隔开。这种格式更容易看清 SQL 语句的成员、跟踪 SQL 逻辑,而且如果有必要,便于更正。

    通过对输出的记录设置约束,能够选择表的部分内容。可以用 WHERE 子句给 SELECT 语句增加条件约束。下面的语法可以指定选择哪些行:

    SELECT      字段列表
    FROM        表列表
    [WHERE      条件列表 ];

    SELECT 语句检索出所有和指定条件匹配的记录——也称为条件判别式——在 WHERE 子句中指定。SELECT 语句的 WHERE 子句中的条件列表由一个或多个条件表达式组成,用逻辑运算符连接。WHERE 子句是可选的。如果没有记录满足 WHERE 子句中的判别式,将看到一个空白屏或一条消息通知你没有检索到记录。

    2.2.4 查询结果排序

    当显示顺序很重要时,ORDER BY 字句特别有用。语法为:

    SELECT        字段列表
    FROM          表列表
    [WHERE        条件列表]
    [ORDER BY     字段列表 [ASC | DESC] ];

    虽然可以选择排序的类型——升序或降序——默认排序为升序。

    2.2.5 显示唯一值

    SQL 的 DISTINCT 子句产生一个彼此不相同的值列表。例如,命令:

    SELECT DISTINCT V_CODE
    FROM PRODUCT

    2.2.6 数据分组

    在 SELECT 语句中使用 GROUP BY 子句可以快速且容易得到频率分布。其语法是:

    SELECT        列列表
    FROM          表列表
    [WHERE        条件列表 ]
    [GROUP BY     列列表 ]
    [HAVING       条件列表 ]
    [ORDER BY     列列表 [ASC | DESC ] ];

    当在 SELECT 语句中将属性列和聚集函数结合在一起时,通常都会用到 GROUP BY 子句(只有当和某个 SQL 聚集函数,如 COUNT、MIN、MAX、AVG 和  SUM 一起使用时,GROUP BY 子句才有效。)。

    在一个 SELECT 语句中使用 GROUP BY 子句时:

    • SELECT 的列列表必须包括一个列名和聚集函数的组合。
    • GROUP BY 子句列列表必须包括所有在 SELECT 列列表中指定的非聚集函数列。如果有必要,也可以按 SELECT 的列列表中的任意聚集函数列分组。
    • GROUP BY 子句列列表可以包含任何 SELECT 语句的 FROM 子句中的表中任意列,即使这些列不出现在 SELECT 的列列表中。

    GROUP BY 用法的一个特殊扩展是 HAVING 子句。HAVING 运算与 SELECT 语句中的 WHERE 子句非常类似。但是,WHERE 子句作用于每一行的列和表达式上,而 HAVING 子句作用于一个 GROUP BY 运算的输出上。

    2.3 更新表记录

    用 UPDATE 命令修改表中的数据。该命令语法为:

    UPDATE   表名
    SET      列名 = 表达式 [, 列名 = 表达式]
    [WHERE   条件列表];

    2.4 恢复表的内容

    如果还没有 COMMIT 命令在数据库中永久保存修改结果,可以用 ROLLBACK 命令将数据库恢复到以前的状态。ROLLBACK 命令能取消从上次 COMMIT 命令依赖所做的修改操作,将数据恢复到修改前的值。将数据恢复到“修改前”的状态,输入:ROLLBACK;

    COMMIT 和 ROLLBACK 命令只能和数据操纵命令添加、修改和删除一起使用。

    2.5 删除表记录

    用 DELETE 语句很容易删除表中的记录,语法为:

    DELETE  FROM  表名
    [WHERE  条件列表]

    2.6 算术运算符:优先级规则

    SQL 命令常和以下算术运算符一起使用:

    • +:加
    • -:减
    • *:乘
    • /:除
    • ^:幂(一些应用程序使用**)

    在属性上执行数学运算时,记住优先级规则。正如名字锁表达的意思一样,优先级规则是完成计算的顺序。例如,注意以下计算次序的顺序:

    1. 执行括号里的运算。
    2. 执行幂运算。
    3. 执行乘法和除法运算。
    4. 执行加法和减法运算。

    2.7 逻辑运算符:AND、OR 和 NOT

    SQL 允许在一个查询中用逻辑运算符连接多个条件。逻辑运算符包括 AND、OR 和 NOT。

    • AND:执行的是并、且操作。
    • OR:执行的是或操作。
    • NOT:否定一个条件表达式的结果。通常用于查找不匹配一个确定条件的行。

    2.8 特殊运算符

    ANSI 标准的 SQL 允许将特殊运算符和 WHERE字句一起使用。特殊运算符包括:

    • BETWEEN:用于检查属性是否在一个范围内。
    • IS NULL:用于检查属性值是否为空。
    • LIKE:用于检查属性值是否和指定的字符串匹配。LIKE 和通配符一起用来在字符串属性中查找模式。当不知道完整的字符串时标准 SQL 允许使用百分号(%)和下划线(_)通配符来匹配。% 意味着任何和所有后面和前面的字符是匹配的;_ 意味着任何一个字符可以被下划线替换。
    • IN:用于检查属性值是否匹配值列表中的某个值。IN 运算符用了一个值列表。列表中所有值的数据类型必须相同。列表中每个值和属性相比较。
    • EXISTS:用于检查子查询是否返回任何记录。

    2.9 聚集函数

    SQL 可以执行各种数学统计,如计算满足指定条件的行数、查找某个属性上的最小或最大值、计算一列的值之和以及一列的平均值。这些聚集函数如下:

    • COUNT:含义非空值的行数。COUNT(*) 聚集函数用于计算一个查询结果集的行数。比较而言,COUNT(column) 聚集函数计算一个指定列中非空值的数量。
    • MIN:在给定行中的最小属性值
    • MAX:在给定行中的最大属性值
    • SUM:给的行中所有值之和
    • AVG:给的行中的平均值

    2.10 创建视图

    一个关系运算符如 SELECT 的输出是另一个关系(或表)。假设在每天结束的时候,要将一份所有商品的清单交个记录员,也就是,现有数量小于或等于最小数量的商品。与其每天结束的时候输入同样的查询,在数据库中永久保存这个查询不是更好吗?这就是视图的功能。视图(view)是建立在 SELECT 查询上的一个虚拟表。查询可以包含来自一个或多个表的列、可计算列、别名和聚集函数。视图建立在它上面的表称为基本表。可以用 CREATE VIEW 命令创建一个视图:

    CREATE VIEW 视图名 AS SELECT 查询;

    CREATE VIEW 语句是一个数据定义命令,存储子查询规范——SELECT 语句用于产生虚拟表——在数据字典中。

    展开全文
  • 结构化查询语言(SQL)简介

    千次阅读 2018-08-20 20:03:35
    第一部分:介绍 结构化查询语言(SQL)是现代数据库体系结构的基本构成部分之一。SQL定义了在大多数平台上建立和操作关系数据库的方法。乍看这种语言很可怕,很复杂,但它真的不是那么糟。现在你将会知道它的原理,...
    第一部分:介绍
      
      结构化查询语言(SQL)是现代数据库体系结构的基本构成部分之一。SQL定义了在大多数平台上建立和操作关系数据库的方法。乍看这种语言很可怕,很复杂,但它真的不是那么糟。现在你将会知道它的原理,你会向往它,用它来操作数据库的。
      
      这周,我们SQL系列的第一篇文章会介绍SQL的基本概念,我们会快速的看看数据库的创建和修改命令。在整篇文章,请记住我们的意图:我们会了解SQL的大概――不是掌握那些单个的命令。我们会提供一些例子来说明这个意图和解释它的原理,但是读完这篇文章后如果你还不会写自己的SQL命令请不要灰心。我们将在以后几个星期会详细介绍那些主要命令的。
      
      随便说说,SQL的正确发音在数据库交流中是有争论的。对于SQL标准,美国标准协会认为官方发音是“es queue el.”。然而,许多数据库专家用行话“sequel”。这看你自己的选择。
      
      SQL有好几种版本。Oracle 数据库定义它的PL/SQL。Microsoft SQL Server 定义它的Transact-SQL。然而,所有这些版本都是基于工业标准的ANSI SQL。在该指南,我们坚持用适用于任何现代关系数据库系统的基于ANSI标准的SQL命令
      
      SQL命令可以分成两大子系统语言。数据定义语言(DDL)包含那写用用于建立和删除数据库以及数据库实体的命令。用DDL语言定义了数据库结构后,数据库管理者和用户就可以利用数据操作语言来插入、得到和修改数据内容。在本文章的下两个部分,我们将更详细地探讨DDL和DML。在以后的文章中我们将会对特殊的SQL命令做更深入的探讨。
      
      现在让我们看看数据定义语言。
      
      
      
      第二部分:数据定义语言
      
      数据定义语言(DDL)是用来定义和删除数据库以及数据库实体的。这些命令主要是被数据库管理者用来建立和删除数据库实体的。让我们来看看四种基本DDL命令的结构和用法。
      
      CREATE
      
      在计算机上安装一个数据库管理系统以便你建立和管理许多独立的数据库。比如,你要维护一个销售部门的消费者库和人力资源部的职员数据库。用CREATE命令就能在你的平台上建立这些数据库。例如下面的命令:
      
      CREATE DATABASE employees
      
      在你的数据库管理系统上建立一个叫“employees”的空库。建立数据库后,下一步你就建一些包含这些数据的表。(如果这个没有意义,你可以看看关于Microsoft Access原理的文章来得到数据库和表的总的看法)。CREATE的另一个参数可用于这个目的。看:
      
      CREATE TABLE personal_info
      
      (first_name char(20) not null, last_name char(20) not null, employee_id int not null)
      
      在当前的数据库中建一个叫“personal_info”的表。在我们的例子中,表包含三个属性:first_name,last_name 和employee_id。不要担心此命令所包含的其它信息――我们将在以后的文章中有所介绍。
      
      USE
      
      USE命令让你能在你的数据库管理系统中指定要操作的数据库。比如,我们当前使用的是sales数据库,而我们要发出一些操作employees数据库的命令,我们就的先执行以下的命令:
      
      USE employees
      
      在执行命令和操作数据库前,你要有意识地确定你要操作的数据库,这是很重要的。
      
      ALTER
      
      一旦你在数据库中建立了一个表,你也许想要修改它。ALTER命令能让你改变数据库的结构而不用删除它之后在重建。看看下面的命令:
      
      ALTER TABLE personal_info
      
      ADD salary money null
      
      这个例子给personal_info表添加了一列新的属性――employee’s salary。“money”指定的格式使职员的薪水用美元和美分的格式存放。最后,为空(NULL)则告诉数据库对任何职员次列可以为空值。
      
      DROP
      
      数据定义语言的最后一个命令,DROP,允许我们从数据库管理系统中移去整个数据库实体。比如,如果你想永远的移去你建立了的personal_info表,我们就的用下面的命令:
      
      DROP TABLE personal_info
      
      同样的,下面的命令将用来移去整个employee数据库:
      
      DROP DATABASE employees
      
      请小心地使用这个命令!记住DROP命令会删除整个的数据库。如果你想删掉某个记录,用数据管理语言的DELETE命令。
      
      那只是数据定义语言的一小部分。在本文的下一部分,我们将看看数据操作语言怎样被用来操作数据库中的信息内容。请继续!
      
      
      
      第三部分:数据操作语言
      
      数据操作语言(DML)用来得到、插入和修改数据库信息的。用户在常规的数据库操作中使用这些命令。让我们来大概地了解一下基本的DML命令:
      
      INSERT
      
      在SQL中INSERT命令被用来在表中添加一些记录。回到上面的personal_info例子,假设人力资源部要往库中添加一个新的employee记录。他们会用到类似于下面的命令:
      
      INSERT INTO personal_info
      
      values(‘bart’,’simpson’,12345, 45000) <br>  <br>  请注意,在记录中指定了四个值。这些对应表中定义的属性:first_name,last_name,employee_id,and salary。<br>  <br>  SELECT <br>  <br>  SELECT命令是SQL最常用的命令。它允许数据库使用者从一个数据库中得到他们想要的信息。让我们看点例子,继续用employees库中的personal_info表。<br>  <br>  下面的命令得到personal_info表中的所有信息。注意,星号在SQL中是通配符。下面的意思是:“从personal_info表中取所有信息”。<br>  <br>  SELECT *<br>  <br>  FROM personal_info <br>  <br>  作为选择,用户想限定从数据库中得到的数据列。比如,人力资源部想列出公司中所有职员的名字。下面的SQL命令就能得到这些信息:<br>  <br>  SELECT last_name<br>  <br>  FROM personal_info<br>  <br>  最后,WHERE子句用来限定得到的记录,使其合乎要求。CEO也许会想得到所有高薪的职员的信息。下面的命令将从personal_info表得到薪水高于50,000美元的记录:<br>  <br>  SELECT *<br>  <br>  FROM personal_info<br>  <br>  WHERE salary &gt; 45000) <br>  <br>  请注意,在记录中指定了四个值。这些对应表中定义的属性:first_name,last_name,employee_id,and salary。<br>  <br>  SELECT <br>  <br>  SELECT命令是SQL最常用的命令。它允许数据库使用者从一个数据库中得到他们想要的信息。让我们看点例子,继续用employees库中的personal_info表。<br>  <br>  下面的命令得到personal_info表中的所有信息。注意,星号在SQL中是通配符。下面的意思是:“从personal_info表中取所有信息”。<br>  <br>  SELECT *<br>  <br>  FROM personal_info <br>  <br>  作为选择,用户想限定从数据库中得到的数据列。比如,人力资源部想列出公司中所有职员的名字。下面的SQL命令就能得到这些信息:<br>  <br>  SELECT last_name<br>  <br>  FROM personal_info<br>  <br>  最后,WHERE子句用来限定得到的记录,使其合乎要求。CEO也许会想得到所有高薪的职员的信息。下面的命令将从personal_info表得到薪水高于50,000美元的记录:<br>  <br>  SELECT *<br>  <br>  FROM personal_info<br>  <br>  WHERE salary &gt; 50000
      
      UPDATE
      
      UPDATE命令用来更新表的内容,无论是成批的还是单个的记录。每年公司给每个职员加30%的生活津贴。下面的命令用来快速地使所有的职员的记录实现这个目的:
      
      UPDATE personal_info
      
      SET salary = salary * 1.03
      
      另一方面,我们一个新的职员art Simpson超额完成工作。管理者想嘉奖他5,000美元。用WHERE子句就能单个地给Bart添加薪水:
      
      UPDATE personal_info
      
      SET salary = salary + $5000
      
      WHERE employee_id = 12345
      
      DELETE
      
      最后,我们来看看DELETE命令。你会发现它的语法类似于其它的DML命令。不幸的是,最新的公司收入报告比预想的还差,可怜的Bart被解雇了。用带WHERE的DELETE命令从personal_info表中删去他的记录。
      
      DELETE FROM personal_info
      
      WHERE employee_id = 12345 
     
                </div>
    
    展开全文
  • 一、结构化数据 结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子: id name age gender 1...
  • SQL四种语言:DDL,DML,DCL,TCL
  • SQL(结构化查询语言)简介

    千次阅读 2018-07-27 11:19:53
    一、结构化查询语言简介 结构化查询语言(Structured Query Language)简称SQL, 是操作和检索关系型数据库的标准语言,20世纪70年代由IBM公司开发,目前应用于各种关系型数据库。 二、SQL的发展 1974年首次提出,...
  • 精通SQL-结构化查询语言详解

    热门讨论 2014-12-20 12:05:19
    全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性.
  • SQL 结构化查询语言 6部分

    千次阅读 2018-03-31 21:56:49
    1、数据查询语言(DQL:Data Query Language):其语句称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,...
  • 结构化分析

    千次阅读 2018-06-19 10:24:51
    1、主要思想: 主要思想:抽象与自顶向下的逐层分解 (控制复杂性的两个基本手段) 2、瀑布模型 软件定义时期:问题定义,可行...4、结构化方法概述 一种面向数据流的传统软件开发方法 以数据流为中心构建软件...
  • MySQL结构化查询语言

    千次阅读 2015-09-23 20:47:17
    结构化查询语言sql包含以下四部分: 1.DDL //数据定义语言,create,drop,alter 2.DML //数据操作语言,insert,update,delete 3.DQL //数据查询语言,select 4.DCL //数据控制语言,grant,commit,rollback 以下...
  • c语言是一种结构化的程序设计语言。c++是一种支持面向对象的程序设计语言
  • 写在面前 大家好,我是李孟宦,号主小智前同事~ 传说程序员之间存在语言鄙视链,学汇编语言的站在最...首先看下什么是SCL语言:SCL语言是一种结构化文本,类似于计算机高级语言的编程方式,他的语言规范解决计算机的PA
  • 结构化与非结构化程序的区别

    千次阅读 2018-11-07 17:48:17
    1.结构化程序: 结构化程序设计由迪克斯特拉(E.W.dijkstra)在1969年提出,是以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变单纯而明确,为设计一些较大的软件...
  • C语言是一个结构化语言

    千次阅读 2014-08-13 09:00:18
    C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。C++,首要考虑的是如何构造一个对象模型,让这个...
  • 软件工程中的结构化分析方法

    千次阅读 2019-02-26 08:47:42
    软件需求分析--结构化分析(SA)方法 ...结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD 法)及结构化程序设计方法(SP 法)构成的。  结构化分析(Structured Analysis,简称S...
  • while及do while语句

    万次阅读 多人点赞 2019-07-16 21:48:39
    循环结构也是结构化程序设计的基本结构之一,因此熟练地掌握循环结构是程序设计最基本的要求。While循环、do while循环、for循环语句,3种循环语句在一般情况下可以相互转换 While 及dowhile语句 While语句和do ...
  • 结构化查询语言

    千次阅读 2018-09-10 16:01:27
    结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ “S-Q-L”),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;...
  • 目录 非结构化数据获取 ...它已成为许多新业务功能的重要工具,从聊天机器人和问答系统到情感分析,合规性监控,医疗见解以及非结构化和半结构化内容的BI和分析。 考虑所有可以带来重要见解的非结...
  • 面向过程的结构化程序设计分三种基本结构:顺序结构、选择结构、循环结构 原则: 1,自顶向下:指从问题的全局下手,把一个复杂的任务分解成许多易于控制和处理的子任务,子任务还可能做进一步分解,如此 重复,直到...
  • SQL:结构化查询语言(Structured Query Language)。 是关系型数据库标准语言。 特点:简单,灵活,功能强大。 ---------------------------------------------------- SQL包含6个部分: 一:数据查询语言(DQL...
  • 1.软件开发模型 1.1 瀑布模型 瀑布模型是将软件生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析、设计、编码、测试、运行与维护。它规定了由前至后、相互衔接的固定次序,如同瀑布...
  • 精通SQL 结构化查询语言详解

    热门讨论 2012-02-27 11:30:42
    以SQL Server 2005为工具,讲解SQL语言的应用.  提供了近500个典型应用,读者可以随查随用..  深入讲解SQL语言的各种查询语句  详细介绍数据库设计及管理  详细讲解存储过程、触发器和游标等知识  讲解了SQL...
  • SQL结构化查询语言速学宝典 第2版.pdf
  • 精通SQL--结构化查询语言详解

    千次下载 热门讨论 2011-12-11 16:35:41
    1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 数据库的工作流程 5 1.3 数据库的发展 6 1.3.1 第一代数据库 7 1.3.2 第二代数据库 7 1.3.3 新一代数据库...
  • 面向对象与结构化编程区别及异同

    千次阅读 2016-04-25 12:44:16
    结构化编程的语言主流的是c语言,采用结构化的编程方式,主要用来编写操作系统。特点:语言灵活非常接近底层,对硬件有强大的访问能力。对于一个比较复杂的系统,往往是自顶向下,逐步求精,分模块的思想来编写。...
  • 结构化数据与非结构化数据有什么区别?

    万次阅读 多人点赞 2019-08-08 10:53:28
    结构化数据和非结构化数据是大数据的两种类型,这两者之间并不存在真正的冲突。客户如何选择不是基于数据结构,而是基于使用它们的应用程序:关系数据库用于结构化数据,大多数其他类型的应用程序用于非结构化数据。...
  • SQL(结构化查询语言)介绍

    千次阅读 2017-05-03 11:07:07
    (一).SQL是一种非过程性语言。例如:它描述了如何对数据进行检索、插入、删除,但他并不说明如何进行这样操作。 (二).RDBMS–关系型数据库管理系统 (三).数据库–按照我们的意愿来存储和处理这些数据。 ...
  • 结构化结构化数据转换的研究与实现[D]. 西南交通大学, 2013. 文中提到了一种方法:非结构化数据(通过提取有关的元数据)——>xml文档(根据约束条件)——>结构化数据 通过这样的方式来使得数据从...
  • 常常在想,自然语言处理到底在做的是一件什么样的事情?到目前为止,我所接触到的NLP其实都是在做一件事情,即将自然语言转化为一种计算机能够理解的形式。这一点在知识图谱、信息抽取、文本摘要这...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,017,423
精华内容 406,969
关键字:

结构化语言