zoukankan      html  css  js  c++  java
  • JavaWeb学习笔记(5)

    查询关键字:SELECT 语法

    SELECT selection_list /*要查询的列名称*/

    FROM table_list /*要查询的表名称*/

    WHERE condition /*行条件*/

    GROUP BY grouping_columns /*对结果分组*/

    HAVING condition /*分组后的行条件*/

    ORDER BY sorting_columns /*对结果排序*/

    LIMIT offset_start, row_count /*结果限定*/

    如果是插入所有的字段,那么字段的指定可以省略,比如:  INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');

    #创建一个学生表
    CREATE TABLE stu(
        sid CHAR(6),
        sname VARCHAR(50),
        age INT,
        gender VARCHAR(6)
    );
    #插入数据
    INSERT INTO stu (sid,sname,age,gender) VALUES ('300001','刘总',20,'female');
    SELECT * FROM stu;
    INSERT INTO stu VALUES ('3000','xyq',21,'male');

    查询所有列

    SELECT * FROM stu;

    查询指定列

    SELECT sid, sname, age FROM stu;

    模糊查询  like

    去除重复字段  DISTINCT

    DISTINCT不要和多个字段使用,如果使用就无效

    给列名添加别名 AS  SELECT *,sal+IFNULL(comm,0) AS '总金额' FROM emp;  AS可以省略  SELECT *,sal+IFNULL(comm,0) '总金额' FROM emp;

    排序 order by

    asc 升序   desc 降序

    如果有多个排序,可以用逗号隔开

    聚合函数:

    聚合函数是用来做纵向运算的函数:

    l  COUNT():统计指定列不为NULL的记录行数

    l  MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

    l  MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

    l  SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

    l  AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

    分组查询:group by

    having 分组后过滤

    注:having与where的区别:

                      1.having是在分组后对数据进行过滤.

                        where是在分组前对数据进行过滤

                     

    2.having后面可以使用聚合函数(统计函数)

              where后面不可以使用聚合函数。

    WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

    LIMIT 是mysql独有的

    SELECT * FROM emp LIMIT 0,5;  0是初始索引值,5是每一页的条数

    数据的完整性

    作用:保证用户输入的数据保存到数据库中是正确的。

    确保数据的完整性 = 在创建表时给表中添加约束

    完整性的分类:

    > 实体完整性

    > 域完整性

    > 引用完整性

    实体完整性

    实体:即表中的一行(一条记录)代表一个实体(entity)

    实体完整性的作用:标识每一行数据不重复。

    约束类型: 主键约束(primary key)  唯一约束(unique)  自动增长列(auto_increment)

    主键约束(primary key)

    特点:数据唯一(不能重复),且不能为null

    唯一约束(unique):

    CREATE TABLE student(

    id int primary key,

    name varchar(50) unique

    );

    自动增长列(auto_increment)

    给主键添加自动增长的数值,列只能是整数类型,但是如果删除之前增长的序号,后面再添加的时候序号不会重新开始,而是会接着被删除的那一列的序号

    域完整性

    域完整性的作用:限制此单元格的数据正确与否

    域完整性约束:数据类型 非空约束(not null默认值约束(default)

    Check约束(mysql不支持) check();

    外键约束:语法格式  CONSTRAINT  外键名称  FOREIGN KEY(外键字段)  REFERENCES 表名(主键)

    CREATE TABLE score (
        id INT PRIMARY KEY AUTO_INCREMENT,
        score INT,
        name VARCHAR(10) NOT NULL,
        sid INT,
        CONSTRAINT fk_student_score FOREIGN KEY(sid) REFERENCES student(id)
    );
    
    INSERT INTO score (score,name,sid) VALUES (90,'数学',1);
    INSERT INTO score (score,name,sid) VALUES (92,'数学',2);
    INSERT INTO score (score,name,sid) VALUES (93,'数学',3);

    表和表之间的关系:一对一,一对多,多对多

    合并结果集

    作用:合并结果集就是把两个select语句的查询结果合并到一起

    合并结果集有两种方式:

    UNION:去除重复记录,例如:SELECT * FROM t1 UNION SELECT * FROM t2;

    UNION ALL:不去除重复记录,例如:SELECT * FROM t1 UNION ALL SELECT * FROM t2。

    要求:被合并的两个结果:列数、列类型必须相同

    CREATE TABLE employee_china(
        id int,
        name varchar(50)
    );
    CREATE TABLE employee_usa(
        id int,
        name varchar(50)
    );
    
    INSERT INTO employee_usa VALUES (1,'michal');
    INSERT INTO employee_usa VALUES (2,'lucy');
    INSERT INTO employee_usa VALUES (3,'anmy');
    
    INSERT INTO employee_china VALUES (1,'马云');
    INSERT INTO employee_china VALUES (2,'郭永峰');
    INSERT INTO employee_china VALUES (3,'马化腾');
    
    INSERT INTO employee_usa VALUES (4,'vincent');
    INSERT INTO employee_china VALUES (4,'vincent');
    
    SELECT * FROM employee_china UNION  SELECT * FROM employee_usa;
    SELECT * FROM employee_china UNION ALL SELECT * FROM employee_usa;

    笛卡尔集过滤:

    SELECT * FROM employee e,department d WHERE e.depno = d.id;

    SELECT e.id,e.name as '名字',d.name as '部门' FROM employee e,department d WHERE e.depno = d.id;//取别名

  • 相关阅读:
    Ubuntu 16.04 not a com32r image
    重定向输出遇到的缓冲问题
    you don't have permission to access / on this server解决
    LaTeX入门简介
    解决eclipse中出现Resource is out of sync with the file system问题
    Ubuntu安装新英伟达驱动出现问题解决方法
    同步与异步的区别
    Cuda入门笔记
    解决 Cocos2d-x 3.2 error C1041: 无法打开程序数据库vc120.pdb
    vs2013编译过程中,错误 59 error C4996: 'GetVersionExW': 被声明为已否决
  • 原文地址:https://www.cnblogs.com/zhangwugai/p/11203536.html
Copyright © 2011-2022 走看看