创建数据库和表、修改表结构
数据表中数据的增删改操作
数据表中数据的查询操作
事务提交/回滚等
create database db character set utf8; # 创建一个db数据库指定字符集
use db; 切换数据库
select database(); 查看正在使用的数据库
show database; 查看有哪些数据库
show create database db; 查看一个数据库的定义信息
drop database db; 删除某个数据库
CREATE TABLE 表名( 字段名称1 字段类型(长度), 字段名称2 字段类型);
create table A like B;创建一个表结构与B相同的A表
show tables; 查看当前数据库中所有的表
desc A; 查看表A结构
show create table A;查看创建表的SQL语句
drop table if exists A; 表A存在才删除
rename table A to B; 将表A名字改为B
alter table A add a1 varchar(20); 为表A添加一个新字段a1
alter table A modify a1 varchar(50); 修改表A字段a1类型
alter table A change a1 a2 varchar(100); 更改命名表A字段a1为a2
alter table A drop a2; 删除表A的a2字段
对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性. 违反约束的不正确数据,将无法插入到表中
常见约束
约束名
约束名关键字
特点
作用
主键
primary key
不可重复 唯一 非空
用来表示数据库中的每一条记录(用来唯一标识数据表中的一条记录)
唯一
unique
某一列不予许为空
非空
not null
表中的某一列的值不能重复(对null不做唯一的判断
外键
foreign key
用来指定某列的默认值
create table A(a4 varchar(20) default 'nn') 为表A添加一个默认值为'nn'的字段a4
create table A(a1 int primary key) 创建一个带主键的表(写法1)
create table A(a1 int,primary key(a1))创建一个带主键的表(写法2)
alter table A add primary key(a1);创建表后再指定主键(写法3)
alter table A drop primary key; 删除表A的主键
create table A(a1 int primary key auto_increment) 为表A创建一个主键自增字段a1
create table A(a1 int primary key auto_increment)auto_increment=100;默认auto_increment的开始值为1,修改编号从100开始
删除表中所有数据有两种方式
清空表数据的方式
特点
delete
只是删除表中所有数据,对自增没有影响
truncate
整个表删除掉,然后再创建一个新表,自增主键重新计算
create table A(a2 varchar(20) not null) 为表A添加一个值不能唯一的字段a2
create table A(a3 varchar(20) not null) 为表A添加一个值不能为空的字段a3
主键:数据表A有一列可以作为唯一标识一条记录(主表)
外键:数据表A有一列指向另外一张数据表B的主键(从表)
语法:
[constraint] [外键约束名称] foreign key (外键字段名)references 主表(主键字段名)
alter table 从表 add [constraint] [外键约束名称] foreign key (外键字段名) references 主表(主键字段名)
alter table 从表 drop foreign key 外键约束名称
如果想实现删除主表数据的同时,也删除掉从表数据,可以使用级联删除操作
on delete cascade
insert into 表名 (字段名1,字段名2...) values(字段值1,字段值2...);
update 表名 set 列名=值 [where 条件表达式:字段名 = 值]
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
出现上述报错,可能是没带条件修改导致,可以解除安全模式
输入:SET SQL_SAFE_UPDATES = 0
delete from 表名 [where 字段名=值] 【不推荐】一条条记录删除,效率低
truncate table A; 【推荐】先删除表A,再创建一张表A
from + join --> where --> group by --> having --> select (窗口函数) --> order by --> limit
select a1 from A 查询表A中a1字段的所有数据
select 列名 from 表名 where 条件表达式
运算符
运算符
说明
>,<,<=,>=,=,<>,!=
大于,小于,小于(大于)等于,等于,不等于,不等于
between..and...(not between...and...)
显示在某一区间的值 (>=min && <= max)
in(集合),not in (不在集合)
集合表达多个值,使用逗号分隔
like '%aa%'
模糊查询(包括aa)
is null,is not null
查询某一列为null的值,不能写=null
<=>
比较两个值是否为null,是则其值为1,否则为0
RLIKE, REGEXP
正则式匹配
逻辑运算符
运算符
说明
and &&
多个条件同时成立
Or ||
多个条件任一成立
Not
不成立,取反
本节涉及的内容主要有:排序、聚合、分组、多表、合并、子查询
select 字段名 from 表名 [where 字段=值] order by 字段名 [asc/desc] 其中asc默认值表示升序排序,desc表示降序
select * from A order by a1 desc, a2 desc; 组合排序,对字段a1降序再对字段a2降序
目的:把多个值(某一列的值,纵向查询)进行计算,返回一个单一的值。(聚合函数会把null忽略),比如求个数、求和、求平均值等
select 聚合函数(字段名) from 表名;
聚合函数
作用
count(字段)
统计指定列不为null的记录行数
sum(字段)
计算指定列的数值和
max(字段)
计算指定列的最大值
min(字段)
计算指定列的最小值
avg(字段)
计算指定列的平均值
分组往往和聚合结合着一起使用,分组后对各自组内进行聚合统计。
select 分组字段/聚合函数 from 表名 group by 分组字段 [having条件];
where 与 having的区别
过滤方式
特点
where
where 进行分组前过滤,后面不能写 聚合函数
having
haing 进行分组后过滤,后面可以写 聚合函数
查询2张表及以上
select 字段名 from 表1,表2; 交叉连接查询
好习惯:小表在前,大表在后
union all简单的将结果合并后返回,在效率上要比union快很多
一条select查询语句的结果,作为另一条selet语句的一部分
SELECT 查询字段 FROM 表 WHERE 字段=(子查询) 子查询的结果作为查询条件
SELECT 查询字段 FROM (子查询)表别名 WHERE 条件;子查询的结果作为一张表
SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询); 子查询结果是单列多行
SELECT 查询字段 FROM 表 WHERE (字段1,字段2) IN (子查询);子查询结果是多列多行
好习惯:子查询起别名
select 字段1,字段2... from 表名 limit offset, length;offset 起始行数,从0开始记数,如果省略,则默认为0, length 返回的行数
窗口函数对一组查询执行类型聚合的操作。但是不同的是,聚合函数操作将查询的行分组,从而得到单个结果行,窗口函数为每个查询行生成一条记录。
窗口的概念非常重要,它可以理解为记录集合,窗口函数也就是在满足某种条件的记录集合上执行的特殊函数。对于每条记录都要在此窗口内执行函数,窗口大小都是固定的,这种属于静态窗口;不同的记录对应着不同的窗口,这种动态变化的窗口叫滑动窗口
语法:
函数名([expr]) over(partition by <要分列的组> order by <要排序的列> rows between <数据范围>)
语法分解:
函数(如:sum(), max(), row_number()...) + 窗口子句(over函数)
over() 内部参数:
窗口子句
备注
PRECEDING
往前 n preceding 从当前行向前n行
FOLLOWING
往后 n following 从当前行向后n行
CURRENT ROW
当前行
UNBOUNDED
起点
UNBOUNDED PRECEDING
表示该窗口最前面的行(起点)
UNBOUNDED FOLLOWING
表示该窗口最后面的行(终点)
排序函数
备注
ROW_NUMBER()
从1开始,按照顺序,生成分组内记录的序列
RANK()
生成数据项在分组中的排名,排名相等会在名次中留下空位 1 2 2 4
DENSE_RANK()
生成数据项在分组中的排名,排名相等在名次中不会留下空位。1223
NTILE(n)
用于将分组数据按照顺序切分成n片,返回当前切片值, 等频切片
统计函数
备注
COUNT(col)
统计各分组内个数
SUM(col)
统计各分组内合计
MIN(col)
统计各分组内最小值
MAX(col)
统计各分组内最大值
AVG(col)
统计各分组内平均值
偏移函数
备注
LEAD(col,n,DEFAULT)
用于统计窗口内往下第n行值 从当前行下移几行的值
LAG(col,n,DEFAULT)
用于统计窗口内往上第n行值 从当前行上移几行的值
first_value(col, DEFAULT)
取分组内排序后,截止到当前行,第一个值
last_value(col, DEFAULT)
取分组内排序后,截止到当前行,最后一个值
但是索引也不是建立越多越好,如果把索引比作是目里,有一本书有100页,50页是目录,试问这本书还有人愿意看吗?
索引名称
说明
主键索引 (primary key)
主键是一种唯一性索引,每个表只能有一个主键, 用于标识数据表中的每一条记录
唯一索引 (unique)
唯一索引指的是 索引列的所有值都只能出现一次, 必须唯一.
普通索引 (index)
最常见的索引,作用就是 加快对数据的访问速度
create view 视图名 [column_list] as select语句;
create view Aasname as select * from A;创建一个名为Aasname的视图,视图指向表A
ifnull为空值设置一个默认值
if条件语句
case when...then.. end条件语句
round保留小数位
concact合并函数
DATE_FORMAT()
DATEDIFF()日期相減
MONTH() 获取月份(如果以年/月/日作为分组,分组后select日期字段可以完整保留,这也是日期与其它非日期字段分组的特别之处。)
select .. from .. group by ... having count(*) > n即可过滤组内统计>n时
结合一些文档,把SQL/MySQL常用知识点汇总总结起来,或多或少还有遗漏,但不要紧,日后遇到再补充,以便本文日后当笔记查阅。
Ensp 简单的VXLAN 实验
联合主键采用联合主键可以解决表中没有唯一主键字段的问题,不过联合主键有如下的缺点: 效率低。在进行数据的添加、删除、查找以及更新的时候数据库系统必须处理两个字段,这样大大降低了数据处理的速度。 使得数据库结构设计变得糟糕。组成联合主键的字段通常都是有业务含义的字段,这与“使用逻辑主键而不是业务主键”的最佳实践相冲突,容易造成系统开发以及维护上的麻
DISTINCT对整个结果集进行数据重复抑制DISTINCT是对整个结果集进行数据重复抑制的,而不是针对每一个列,执行下面的SQL语句:SELECT DISTINCT FDepartment,FSubCompany FROM T_Employee执行完毕我们就能在输出结果中看到下面的执行结果: FDepartmen
1、概念SQL提供了将SQL语句嵌入到某种高级语言中的使用方式,通常采用预编译的方法将SQL语句嵌入高级语言中。采用的方法由DBMS的预处理程序对源程序...
1、SQL标准ANSI(美国国家标准机构)SQL对ANSI SQL进行修改后在1992年采用的标准SQL-92或SQL2SQL-99或SQL3标准从SQ...
0x00 概述 之前写过一篇Mysql B+树学习,简单的介绍了B+数以及MySql使用B+树的原因, 有了这些基础知识点,对MySql索引的类型以及索引使用的一些技巧,就比较容易理解了。
继我的上篇博客:Oracle索引知识学习笔记,再记录一篇MySQL的索引知识学习笔记,本博客是我在学习尚硅谷的学习教程后,做的笔记,当然我不是为...
平常知识学习笔记积累,点点滴滴的积累成就将来成功的自己。
基础知识1 . 除了常规比较操作,以下值或返回True或False: - 数字(0,0.0返回false) - 数据
装修知识笔记
介绍sql注入当中的一些基础知识,包括一些重要的trick、文件操作、常用的函数...
一、 SQL 基本语句SQL 分类:DDL —数据定义语言 (Create , Alter , Drop , DECLARE)DML —数据操纵语言 (Select , Delete , Update , In
笔记列表 基础知识 语言基础 函数 数组 字符串 cookie和storage 异步处理 DOM DOM操作 DOM事件 计算机原理 计算机是怎样跑起来的 CSS3 transform BFC Git config配置项 git常用命令及技巧 Git版本控制管理 网络与安全 网络 get和post请
目录Hadoop HDFS分布式文件
(一)最优子结构与递归方程 设 dp [i][j] 表示从顶部走到第 i 行第 j 列的最大路径和。最优子结构表现为:dp [i][j] = max (dp [i-1][j-1], dp [i-1][j]) + 三角形第 i 行第 j 列数值(j>0 且 j<i)。边界条件:dp [0][0] = ...
理解关系数据库(关系模型),需要了解关系代数(关系模型)。 关系代数有如下演算。◆4つの集合演算和集合演算(Union)差集合演算(Difference)共通集合演算(Intersection)直積演算(Cartesian Product)◆4つの関係演算射影演算(Projection)選択演算(Selection)結合演算(Join)商演算(Division) 【和集合演算(
一、Pandas库简介 Pandas 是基于 NumPy 构建的专门用于处理表格和混杂数据设计的 Python 库,核心设计理念包括: 标签化数据结构,提供带标签的轴。 灵活处理确实数据,内置 NaN 处理机制。 智能数组对齐,自动按标签对齐数据。 强大的 IO 工具,支持从 CSC、Excel、S ...
一、核心代码实现 %% 参数设置 Nt = 64; % 发射天线数 Nr = 16; % 接收天线数 K = 8; % 用户数 SNR = 20;% 信噪比(dB) iter = 50;% 迭代次数 %% 信道生成(毫米波簇状信道) H = zeros(Nr, Nt); for k = 1:K Ao ...