在MySQL中只要是自动增长列必须是主键 1.3.4 主键(primary key) 主键概念:唯一标识表中的记录的一个或一组列称为主键。...作用: 1、保证数据完整性 2、加快查询速度 选择主键的原则 最少性:尽量选择单个键作为主键 稳定性:尽量选择数值更新少的列作为主键 比如:学号,姓名、地址 这三个字段都不重复,选哪个做主键 选学号...); -- 可以直接插入数字 Query OK, 1 row affected (0.06 sec) -- 自动增长列可以插入null,让列的值自动递增 mysql> insert into stu25...truncate table删除数据后,再次插入从1开始 练习 在主键列输入的数值,允许为空吗? 不可以 一个表可以有多个主键吗?...不可以 在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗? 对 标识列(自动增长列)允许为字符数据类型吗?
我们针对数据库的增删改查语句比较熟悉了,但是今天建立数据库的时候想在固定位置通过语句添加一列,做以下总结: ALTER TABLE:添加,修改,删除表的列,约束等表的定义。...查看列:desc 表名; 修改表名:alter table t_book rename to t_user; 添加列:ALTER TABLE t_userADD COLUMN tianjia INT...(后面表示是在id列后添加) AFTER id; 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table t_user change...修改列名Oracle:lter table t_user rename column tianjia to xiugai int; 修改列属性:alter table t_book modify...namevarchar(22);** 注意:这里表名和列名是否加 ‘’ 都可以 针对上述部分语句做一个示例 1.我的是mysql数据库,t_user表: 2.在id的列后添加tianjia列:
MySQL发送查询请求,到底做了什么工作? 下图是MySQL查询执行流程图: ? •客户端发送一条查询给服务器。•服务器先检查查询缓存,如果命中了缓存,则立刻返回查询在缓存中的结果。...对于MySQL,最简单的衡量查询开销的三个指标如下: •响应时间•扫描的行数•返回的行数 没有哪个指标能够完美地衡量查询的开销,但它们大致反映了MySQL在内部执行查询时需要访问多少数据,并可以大概推算出查询运行的时间...查询慢的原因基本都是:我们的不合理操作导致查询的多余数据太多了。常见原因有以下: 1.查询不需要的记录。...•filtered: 表示此查询条件所过滤的数据的百分比•extra: 额外的信息 更详细的可以参考以下文章: 【性能优化神器 Explain 使用分析[2]】 【高性能MySQL[3]】 总结 查询优化目的就是为了快速得到结果...,所以每当写完SQL应该思考以下几点: •是否需要全表查询以及返回的数据是否合理。
MYSQL数据库-复合查询 零、前言 一、基本查询 二、多表查询 三、自连接 四、子查询 1、单行子查询 2、多行子查询 3、多列子查询 3、在from子句中使用子查询 五、合并查询 1、union 2...、union all 零、前言 本章主要讲解学习MYSQL数据库中的复合查询,前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够 一、基本查询 示例: 查询工资高于500...实际开发中往往数据来自不同的表,所以需要多表查询。...本节我们用一个简单的公司管理系统,有三张表EMP,DEPT,SALGRADE来演示如何进行多表查询 示例: 显示雇员名、雇员工资以及所在部门的名字 因为上面的数据来自EMP和DEPT表,因此要联合查询...,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言的,而多列子查询则是指查询返回多个列数据的子查询语句 示例:查询和SMITH的部门和岗位完全相同的所有雇员,不含SMITH本人 3、在from
Mysql数据库-子查询 1. 什么是子查询 # 子查询定义 ## B语句作为A语句的一部分,B语句是select查询语句,那么B语句称之为子查询,内层查询(子集,subquery) -- 1....标量子查询: 返回的结果是一个数据(单行单列) 2. 列子查询: 返回的结果是一列(多行单列) 3. 行子查询: 返回的结果是一行(单行多列) 4....表子查询: 返回的结果是一张表(多行多列) 当然也有按照子查询出现的位置进行区分: #按子查询出现的位置 1. select 后面: (少见) a....相关子查询 a. 含义: 依赖于外部查询的数据的子查询 b....子查询在 where或having之后 # where或having之后, 可以跟的子查询类型 1. 标量子查询(一个数据) 常见 2. 列子查询(一列) 常见 3.
概述: 连接查询的作用将多张表进行内容上的连接,查看数据时可以同时看到多张表的多个数据 连接查询的分类 内连接查询 左连接查询 右连接查询 自连接查询 语法 #内连接 SELECT * FROM...inner join 实现多表查询,查询共有记录。...SELECT * FROM 表1 inner join 表2 on 表1.字段=表2.字段 左连接查询 left join 以左表为主,查询右表的数据。若右表不存在数据,则返回null。...SELECT * FROM 表1 left join 表2 on 表1.字段=表2.字段 右连接查询 right join 以右表为主,查询左表的数据。若左表不存在数据,则返回null。...SELECT * FROM 表1 right join 表2 on 表1.字段=表2.字段 自连接查询 inner join 左表和右表是同一个表,查询两个表中的数据。
MySql版本信息的查询: 1、通过mysql -V命令查询 C:/mysql/bin>mysql -V mysql Ver 12.22 Distrib 4.0.18, for Win95/Win98...(i32) 2、通过mysql模式下的status命令查看状态 mysql> status -------------- mysql Ver 12.22 Distrib 4.0.18, for Win95...> 3、通过mysql模式下的select语句查询 mysql> select version(); +-----------+ | version() | +-----------+ | 4.0.18...-nt | +-----------+ 1 row in set (0.00 sec) mysql> 4、通过mysql --help命令进行查看 C:/mysql/bin>mysql --help mysql... Ver 12.22 Distrib 4.0.18, for Win95/Win98 (i32) Copyright (C) 2002 MySQL AB
,一般结合分组(group by)来使用,用于统计和计算分组数据 常用的聚合函数: count(col): 表示求指定列的总行数 max(col): 表示求指定列的最大值 min(col): 表示求指定列的最小值...SQL语句,子查询被嵌入到一对小括号里面 数据库设计之三范式 1、数据库设计之三范式的介绍 范式: 对设计数据库提出的一些规范,目前有迹可寻的共有8种范式,一般遵守3范式即可。...5、E - R模型的介绍 E-R模型即实体-关系模型,E-R模型就是描述数据库存储数据的结构模型。...E-R模型由 实体、属性、实体之间的关系构成,主要用来描述数据库中表结构。...-- 创建 "京东" 数据库 create database jing_dong charset=utf8; -- 使用 "京东" 数据库 use jing_dong; -- 创建一个商品goods数据表
概述 使用where子句实现对查询数据的筛选 where子句分为五类: 比较运算符 逻辑运算符 范围查询 模糊查询 空判断 语法 select 字段名from 表名 where子句; 分类 比较运算符筛选...= 逻辑运算符 and or not 范围查询 in between 大 and 小 模糊查询 like 查询关键字 %表示任意多个字符(包括0) _表示任意一个字符 escape:取消%或_字符的通配符特性
概述 分组查询的作用是将查询的结果按指定字段分组,字段中数值相等的为一组。 分组以后可以配合count()、agv()、sum()、max()等聚合函数使用。...语法 group by 列名 [having表达式][with rollup] having表达式:用来过滤分组后的数据 with rollup:在所记录后加一条,显示select查询聚合的结果 案例
前言:本文不对SQL查询做详细讲解,而做案例实践,适合已掌握MySQL基础语法,需要通过实际案例巩固技能的开发者。 首先准备这样三张表 雇员信息表、部门信息、薪水等级。...复合查询 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为大写的J select * from emp where (sal>500 or job='MANAGER') and...本质: 穷举组合(笛卡尔积) 两张表变成一张表,变成单表查询 无意义的部门信息: 所以,外键主键结合 注:MySQL中一切皆表。 显示部门号为10的部门名,员工名和工资。...'); 多行子查询 查询和10号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含10自己。...如何理解?例如有两个表:一个学生信息表a,一个学生成绩表b,但有的学生没有参加考试,所以b表的信息比a表少。在合并时如果想显示每个学生成绩信息,尽管它没有参加考试,则把表a做为左表进行左外连接。
序 本文主要展示如何使用mysql的多列组合查询 何为多列组合查询呢,就是查询的值不再是单个列的值,而是组合列的值。...查询 select * from t_demo where (name,score) in (('c',30),('e',60)); +----+------+-------+ | id | name...-+ | 3 | c | 30 | | 6 | e | 60 | +----+------+-------+ 2 rows in set Time: 0.119s 小结 多列组合查询平常比较少见...doc • mysql-filtering-by-multiple-columns[1] • selecting-where-two-columns-are-in-a-set[2] 外部链接 [1]...mysql-filtering-by-multiple-columns https://www.tutorialspoint.com/mysql-filtering-by-multiple-columns
查询数据库数据量大小 -- SHOW TABLE_SCHEMA; -- use information_schema; SELECT concat( round( sum(data_length.../ 1024 / 1024), 2 ), 'MB' ) AS DATA FROM TABLES WHERE table_schema = '你的数据库名字';
虚表不能进行编辑、导出SQL操作 2.简单查询 所有列查询是指查询结果返回数据源的所有字段,而指定列查询是指只返回数据源查询的部分字段 2.1 所有列查询 所有列查询不会对数据源进行任何筛选和限制,直接返回数据源的所有行和所有列...前面我们所学的查询语句中,查询源都只有一个,在实际1应用中,为了便于后期数据的维护,在进行数据库逻辑设计时,我们往往把不同主题的信息分别存放在不同的数据表中,在需要时从不同的数据表中提取出来。...3.1 两表查询 3.1.1 定义 指查询的数据源(记录源)不只一个数据表,而是两个数据表,查询结果集中的列也分别是来自这两个表的列或新增的计算列。...当查询结果中返回的列在两个数据源中都存在且名称相同时,在命令中需要指明该列来自哪个数据表。引用形式为“数据表名称.列名称(class.Class_id)”。...3.2.2 定义 指查询的数据源(记录源)是多个数据表,查询结果集中的列也分别是来自这些表的列或新增的计算列。
序 本文主要展示如何使用mysql的多列组合查询 何为多列组合查询呢,就是查询的值不再是单个列的值,而是组合列的值。...查询 select * from t_demo where (name,score) in (('c',30),('e',60)); +----+------+-------+ | id | name...查询 select * from t_demo where (name,score) = ('c',30) or (name,score) = ('e',60); +----+------+------...-+ | 3 | c | 30 | | 6 | e | 60 | +----+------+-------+ 2 rows in set Time: 0.119s 小结 多列组合查询平常比较少见...doc mysql-filtering-by-multiple-columns selecting-where-two-columns-are-in-a-set
Mysql查询数据库数据量 SELECT table_name AS '表名', table_rows AS '记录数', TRUNCATE (data_length / 1024.../ 1024, 2) AS '数据容量(MB)', TRUNCATE (index_length / 1024 / 1024, 2) AS '索引容量(MB)' FROM information_schema
MySQL Timestamp列按照日期格式查询 假如UpdateTime列的值是: 2020-12-17 13:51:08 MySQL: SELECT * FROM Test WHERE DATE(UpdateTime
以大小写输入关键词查询是等价的,比如SELECT=select。...(4)mysql接受自由格式的输入:它收集输入行但直到看见分号才执行。 (5)要注意提示符如何从mysql>变为->,这正是mysql如何指出它没见到完整的语句并且正在等待剩余的部分。...提示符是你的朋友,因为它提供有价值的反馈,如果使用该反馈,将总是知道mysql正在等待什么。...比如输入以下语句:SELECT * FROM my_table WHERE name = 'Smith AND age < 30; 什么都没返回,如何结束该语句呢?‘\c
mysql> select * from stu where 1; -- 输出所有数据 mysql> select * from stu where 0; -- 不输出数据 思考:如何查找北京和上海的学生...】 将查询的结果分组,分组查询目的在于统计数据。...2、查询字段是普通字段,只取第一个值 3、group_concat()将同一组的数据连接起来 1.5.6 order by排序 asc:升序【默认】 desc:降序 -- 按年龄的升序排列 mysql>...按总分降序 mysql> select *,ch+math '总分' from stu order by ch+math desc; 多列排序 -- 年龄升序,如果年龄一样,按ch降序排列 mysql...desc limit 3; Query OK, 3 rows affected (0.00 sec) 1.5.9 查询语句中的选项 查询语句中的选项有两个: 1、 all:显示所有数据 【默认
数据操作语言:普通查询 记录查询 最基本的查询语句是由 SELECT 和 FROM 关键字组成的 SELECT * FORM t_emp; SELECT empnpo, ename, sal FROM...用户不必关心数据的真实存储,交由数据库高效的查找数据 USE demo; SELECT * FROM t_emp; SELECT empno,ename,sal FROM t_emp; 使用列命名 通常情况下...,SELECT 子句中使用了表达式,那么这列的名字就默认为表达式,因此需要一种对列名重命名的机制。...SELECT empno, sal*12 AS "income" FROM t_emp; SELECT empno,sal*12 AS "icome" FROM t_emp; 查询语句的子句执行顺序...SELECT empno, sal*12 AS "income" FROM t_emp; 语法分析与优化 读取 SQL 语句 FORM 选择数据来源 SELECT 选择输出内容 数据分页 比如我们查看朋友圈