MySQL基础总结(二)
数据表的完整性约束条件
AUTO_INCREMENT (自增长)
注意事项:
1.一个表中只能有一个自增长字段
2.必须配合主键使用

方法1:



方法2:

方法3:

指定自增长初始值的方法:

修改自增长值的方法:

NOT NULL (非空)
注意事项:
1.值不能为NULL
(比如建立网站时,要求用户输入用户名和密码时,就可以用NOT NULL

DEFAULT (默认值)
注意事项:
1.一般配合NOT NULL使用


UNIQUE KEY (唯一性)
注意事项:
1.一个表中可以有多个唯一
2.被标志上UNIQUE KEY字段的值不允许重复(NULL不算重复)
(UNIQUE KEY使用时,KEY可以省略不写)

修改表结构的操作
重命名数据表
方法1: <ALTER TABLE tbl_name RENAME [ TO|AS ] new_name;


方法2: RENAME TABLE tbl_name TO new_name;

添加和删除字段
添加字段:ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件] [ FIRST|AFTER 字段名称];

带有完整性约束条件的添加字段

在指定位置添加字段

一次添加多个字段的操作

删除字段:ALTER TABLE tbl_name DROP 字段名称;

一次删除多个字段

也可以同时进行添加删除字段的操作

修改字段类型和字段名称
修改字段类型:ALTER TABLE tbl_name MODIFY 字段名称 字段类型 [完整性约束条件] [ FIRST|AFTER 字段名称 ];

从上图可以看到原先email属性的NOT NULL约束条件和默认值在修改后都发生了变化,如果想修改时不让它发生变化,就要在命令中添加完整性约束条件

还可以改变字段的位置

同样,可以既修改字段类型,也改变字段位置

修改字段名称:ALTER TABLE tbl_name CHANGE 旧字段名称 新字段名称 字段类型 [完整性约束条件] [ FIRST|AFTER 字段名称 ];

还可以不修改字段名称,修改字段类型

添加删除默认值
添加默认值:ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值;

删除默认值:ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT;

添加删除主键
添加主键:ALTER TABLE tbl_name ADD [ CONSTRAINT[ symbol ] ] PRIMARY KEY [index_type] (字段名称,…) ;

添加主键的完整语句

添加复合主键


删除主键:ALTER TABLE tbl_name DROP PRIMARY KEY;

有一种情况不能直接删除主键


添加删除唯一
添加唯一:ALTER TABLE tbl_name ADD [ CONSTRAINT [ symbol ] ] UNIQUE [ INDEX|KEY ] [索引名称] (字段名称,…);

用完整写法设置索引名称

还可以添加复合唯一

删除唯一:ALTER TABLE tbl_name DROP { INDEX|KEY } index_name

修改表的存储引擎
ALTER TABLE tbl_name ENGINE=存储引擎名称;

设置自增长值
ALTER TABLE tbl_name AUTO_INCREMENT=自增长值;

对数据的操作(DML)
插入数据
不指定具体的字段名:INSERT [INTO] tbl_name VALUES|VALUES(值…);

列出指定字段:INSERT [INTO] tbl_name(字段名称1,…) VALUES|VALUES(值1,…);

同时插入多条记录:INSERT [INTO] tbl_name[(字段名称…)] VALUES|VALUES(值…),(值…)…;

通过set形式插入记录:INSERT [INTO] tbl_name SET 字段名称=值,…;

将查询结果插入到表中:INSERT [INTO] tbl_name[(字段名称…)] SELECT 字段名称 FROM tbl_name [WHERE 条件];

更新数据
UPDATE tbl_name SET 字段名称=值 [WHERE 条件][ORDER BY 字段名称][LIMIT 限制条数];



删除数据
删除指定数据:DELETE FROM tbl_name [WHERE 条件][ORDER BY 字段名称][LIMIT 限制条数];


彻底清空数据表:TRUNCATE [TABLE] tbl_name;

查询数据的操作(DQL)
查询记录
单表查询:

查询表达式:
(查询整个数据表)SELECT * FROM tbl_name; / SELECT tbl_name. * FROM tbl_name;
(查询数据表中的某几个字段)SELECT 字段名称1,… FROM tbl_name;
(明确查询来自某个数据库的表时)SELECT 字段名称1,… FROM db_name.tbl_name;
(给表名起别名)SELECT 字段名称1,… FROM tbl_name AS alias_name;(别名一般为表名的缩写,不超过两个字母)
WHERE条件

用WHERE条件查询指定记录(比较运算符)







指定范围查询

指定集合查询




模糊查询
会用到两个符号:
%:代表零个、一个或者多个任意字符
_:代表一个任意字符


分组查询(GROUP BY)



可以用GROUP BY配合GROUP_CONCAT()得到分组详情


聚合函数:
COUNT(); 得到总计数



MAX(); 得到记录最大值
MIN(); 得到记录最小值
AVG(); 得到记录平均值
SUM(); 得到记录总和

GROUP BY配合WITH ROLLUP会对统计记录进行二次统计
简单来说,就像图中的
totalUsers是求记录计数总和,sumAge是求年龄总和,那么它们最下方ROLLUP产生的也是一个总和
而maxAge是求最大值,ROLLUP产生的也是几个统计记录中的最大值
minAge,avgAge同理

HAVING子句对分组结果进行二次筛选

MySQL基础总结(二)的更多相关文章
- MySQL基础(二)——DDL语句
MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...
- Mysql基础(二)
学习路线:数据约束-> 数据库的设计过程-> 存储过程的相关知识-> 触发器-> 权限管理 (一)数据约束 1.1.默认值的设置 创建员工表emp 将默认地址设置为'中国'my ...
- Linux系统——MySQL基础(二)
# MySQL数据库完全备份与恢复## 数据库备份的分类1. 从物理与逻辑的角度,备份可以分为物理备份和逻辑备份.(1)物理备份:对数据库操作系统的物理文件(数据文件.日志文件)的备份.物理备份又可分 ...
- MySQL基础(二):视图、触发器、函数、事务、存储过程
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 视图和上一篇学到的临时表搜索类似. ...
- Mysql基础(二):MySQL之存储引擎
目录 MySQL之存储引擎 1.MySQL存储引擎介绍 2.MySQL结构 3.MySQL存储引擎分类 4.存储引擎的使用 5.总结 MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数 ...
- MySQL基础(二)(约束以及修改数据表)
一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE ...
- MySQL基础之二:主从复制
# mysql主从复制逻辑: 1.从库执行start slave 开启主从复制. 2.从库请求连接到主库,并且指定binlog文件以及位置后发出请求. 3.主库收到从库请求后,将信息返回给从库,除了信 ...
- mysql基础教程(二)-----分组函数、多表查询、常见函数
分组函数 什么是分组函数 分组函数作用于一组数据,并对一组数据返回一个值. 组函数类型 • AVG() • COUNT() • MAX() • MIN() • SUM() 组函数语法 AVG(平均值) ...
- mysql基础(二)—— 简单sql
查询 select * from company select c.code from company c; select m.bookname from myview m; (myview为视图) ...
- MySQL基础练习(二)
第一个例子我们编写一个 SQL 查询,列出所有超过或等于5名学生的课. 先建表 CREATE TABLE courses( student ) NOT NULL, class ) NOT NULL ) ...
随机推荐
- Daily Scrum 12/10/2015
Zhaoyang: Finished the implementation of query suggestion UI; Yandong: Changed the fusion algorithm ...
- SpringCloud-Hystrix 服务降级、熔断
Hystrix 是什么? Hystrix 是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时.异常等,Hystrix 能够保证在一个依赖出问题的情况下 ...
- MySQL笔记总结-DQL语言
DQL语言 基础查询 一.语法 select 查询列表 from 表名; 二.特点 1.查询列表可以是字段.常量.表达式.函数,也可以是多个 2.查询结果是一个虚拟表 三.示例 1.查询单个字段 se ...
- Java中集合的初等案例
我有五个学生,请把这个学生的信息储存到数组中,并遍历数组,获取得到每一个学生信息. 学生:Strdent 成员变量:name,age 构造方法:无参,带参 成员方法:getXxx()/setXxx() ...
- UnicodeDecodeError: 'gbk' codec can't decode byte 0x8a in position 2: illegal multibyte sequence
pycharm报错UnicodeDecodeError: 'gbk' codec can't decode byte 0x8a in position 2: illegal multibyte seq ...
- PHP Ajax 跨域问题解决方案
本文通过设置Access-Control-Allow-Origin来实现跨域. 例如:客户端的域名是client.0751.tv,而请求的域名是server.0751.tv. 如果直接使用ajax访问 ...
- 更加安全的密钥生成方法Diffie-Hellman
更加安全的密钥生成方法Diffie-Hellman 之前我们谈到了密钥配送的问题,这个世界是如此的危险, 一不小心通信线路就会被监听,那么我们怎么在这种不安全的线路中传递密钥呢? 这里我们介绍一下Di ...
- Spring5参考指南:IOC容器
文章目录 为什么使用Spring5 什么是IOC容器 配置元数据 实例化容器 XML嵌套 groovy bean定义DSL 使用容器 最近在翻译Spring Framework Documentati ...
- 【三剑客】sed命令
1. Sed 简介 sed 是Stream Editor(流编辑器)的缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. sed 是一种新型的,非交互式的编辑器. 它能执 ...
- 《Arduino实战》——3.4 小结
本节书摘来异步社区<Arduino实战>一书中的第3章,第3.4节,作者:[美]Martin Evans ,Joshua Noble ,Jordan Hochenbaum,更多章节内容可以 ...