数据表的完整性约束条件


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基础总结(二)的更多相关文章

  1. MySQL基础(二)——DDL语句

    MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...

  2. Mysql基础(二)

    学习路线:数据约束-> 数据库的设计过程-> 存储过程的相关知识-> 触发器-> 权限管理 (一)数据约束 1.1.默认值的设置 创建员工表emp 将默认地址设置为'中国'my ...

  3. Linux系统——MySQL基础(二)

    # MySQL数据库完全备份与恢复## 数据库备份的分类1. 从物理与逻辑的角度,备份可以分为物理备份和逻辑备份.(1)物理备份:对数据库操作系统的物理文件(数据文件.日志文件)的备份.物理备份又可分 ...

  4. MySQL基础(二):视图、触发器、函数、事务、存储过程

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 视图和上一篇学到的临时表搜索类似. ...

  5. Mysql基础(二):MySQL之存储引擎

    目录 MySQL之存储引擎 1.MySQL存储引擎介绍 2.MySQL结构 3.MySQL存储引擎分类 4.存储引擎的使用 5.总结 MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数 ...

  6. MySQL基础(二)(约束以及修改数据表)

    一,约束以及修改数据表 约束的作用?1.约束保证数据的完整性.一致性:2.约束分为表级约束.列级约束:3.约束类型包括:NOT NULL(非空约束).PRIMARY KEY(主键约束).UNIQUE ...

  7. MySQL基础之二:主从复制

    # mysql主从复制逻辑: 1.从库执行start slave 开启主从复制. 2.从库请求连接到主库,并且指定binlog文件以及位置后发出请求. 3.主库收到从库请求后,将信息返回给从库,除了信 ...

  8. mysql基础教程(二)-----分组函数、多表查询、常见函数

    分组函数 什么是分组函数 分组函数作用于一组数据,并对一组数据返回一个值. 组函数类型 • AVG() • COUNT() • MAX() • MIN() • SUM() 组函数语法 AVG(平均值) ...

  9. mysql基础(二)—— 简单sql

    查询 select * from company select c.code from company c; select m.bookname from myview m; (myview为视图) ...

  10. MySQL基础练习(二)

    第一个例子我们编写一个 SQL 查询,列出所有超过或等于5名学生的课. 先建表 CREATE TABLE courses( student ) NOT NULL, class ) NOT NULL ) ...

随机推荐

  1. SVG案例:动态去创建元素createElementNS

    案例一: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  2. MVC学习的心路历程

    2020/4/17 之前接触过三层架构,但是没有接触过mvc,所以有点蒙,所以现在在一步步构建思路. 1.了解MVC的发展,做一个简单的项目.

  3. 一起了解 .Net Foundation 项目 No.24

    .Net 基金会中包含有很多优秀的项目,今天就和笔者一起了解一下其中的一些优秀作品吧. 中文介绍 中文介绍内容翻译自英文介绍,主要采用意译.如与原文存在出入,请以原文为准. Xamarin.Mobil ...

  4. 中间人攻击-Arp之局域网内DNS欺骗

    基础知识 网关是啥? 网关是工作在OSI七层模型中的传输层或者应用层,用于高层协议的不同网络之间的连接,网关就好比一个房间通向另一个房间的一扇门. ARP协议 假设A(192.168.1.2)与B(1 ...

  5. ADO.NET(一)

    最近在公司有用到了ADO.NET技术,由浅入深的复习一下. 如图所示,水源就像一个水库,进水龙头就像Connection,同理,抽水机:Command,输水管:DataAdapter 或 DataRe ...

  6. 曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚

    前言 一直以来,对linux的掌握就是半桶水的状态,经常yum装个东西,结果依赖一堆东西:然后再用源码装个东西,只知道make.make install,背后干了啥也不清楚了,卸载也不方便. 这几天工 ...

  7. 小程序里json字符串转json对象需注意的地方

    一.JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象: //由JSON字符串转换为JSON对象 var obj = eval('(' + str + ') ...

  8. [Windows API] Listing the Files in a Directory,可用来数文件夹下有多少个子文件(夹)

    转载 #include <windows.h> #include <tchar.h> #include <stdio.h> #include <strsafe ...

  9. Mybatis自动生成插件对数据库类型为text的处理

    2019独角兽企业重金招聘Python工程师标准>>> 如果数据库中的字段为text或者blob这种大文本类型,在使用MybatisGenerator工具自动生成代码的时候会将其进行 ...

  10. 《例说51单片机(C语言版)(第3版)》——1-3 认识MCS-51的存储器结构

    本节书摘来异步社区<例说51单片机(C语言版)(第3版)>一书中的第1章,第1.3节,作者:张义和,王敏男,许宏昌,余春长,更多章节内容可以访问云栖社区"异步社区"公众 ...