丨你微笑时好美丶

博客园 首页 联系 订阅 管理

查询关键字: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;//取别名

posted on 2019-07-18 20:20  丨你微笑时好美丶  阅读(186)  评论(0编辑  收藏  举报