那应该算是我第一次接触数据库这种东西,从此对它念念不忘(论一个老师对学生的影响力!)...扯远了,飞回来~~~ 创建数据库 SQL常用规则0 数据库的名称只能使用小写字母 关系数据库以行为单位读写数据 SQL根据功能不同可以分为三类,其中使用最多的是DML(数据操纵语言) SQL语句以分号(...表的创建 SQL常用规则1 数据库名称、表名和列名由字母、数字和下划线组成 名称必须以字母开头 名称不能重复 表的删除 表定义的更新(添加列) 表定义的更新(删除列) 列的查询 查询出表中的所有列 根据...WHERE语句来选择记录 SQL常用规则2 SQL语句可以使用AS关键字为列设定别名,设定汉字别名时需要使用双引号(’’)括起来 在SELECT语句中可以使用DISTINCT来删除重复行 WHERE子句要紧跟在...FROM子句之后 SQL语句的注释分为单行注释和多行注释,单行注释书写在“—”之后,多行注释书写在“/”和“/”之间 SELECT 子句中可以使用常数或者表达式 字符串类型的数据原则上按照字典顺序进行排列
那应该算是我第一次接触数据库这种东西,从此对它念念不忘(论一个老师对学生的影响力!)...扯远了,飞回来~~~ 创建数据库 CREATE DATABASE ; SQL常用规则0 数据库的名称只能使用小写字母 关系数据库以行为单位读写数据 SQL根据功能不同可以分为三类,其中使用最多的是...来删除重复行 WHERE子句要紧跟在FROM子句之后 SQL语句的注释分为单行注释和多行注释,单行注释书写在“—”之后,多行注释书写在“/”和“/”之间 SELECT 子句中可以使用常数或者表达式 字符串类型的数据原则上按照字典顺序进行排列...FROM ORDER BY , , ...; SQL常用规则3 COUNT(*)会得到包含NULL的数据行数,而COUNT()会得到NULL之外的数据行数...事务结束语句(COMMIT或者ROLLBACK); SQL常用规则4 原则上,执行一次INSERT语句会插入一行数据 省略INSERT语句中的列名,就会自动设定为该列的默认值(没有默认值会设定为NULL
,详见(3.1.3 oracle支持的数据类型) 3.1.2 命名规则 1.字母开头 2.长度为1-30 3.只能有大小写英文,数字和_ $ # 4.同一个用户下的对象名不能重复 5.不能使用关键词作为表名...分类: 表级约束:定义在表级别的约束(即在列的完整定义完成后,才定义的约束) column dataType , unique(column) 列级约束:直接跟在列完整性定义后边的约束 column dataType...自定义 列级/表级 创建时间: 1.创建表的同时定义约束 2.表创建完成之后,通过修改表结构(后期描述) 创建语法: 列级: column [CONSTRAINT constraint_name] constraint_type...主键只能有一个。 2.主键可以是单列,也可以是组合列。 3.强制非空且唯一,如果由多列组成,组合唯一且列的每一部分都不能为null。 4.可以表级,可以列级。 5.自动创建唯一值索引。...(组合列),这一列(组合列)的值可以唯一的确定另外一张表中和当前表相关联的一行数据。
,针对每一组返回一个结果。...对字符型数据的最大值,是按照首字母由A~Z的顺序排列,越往后,其值越大。当然,对于汉字则是按照其全拼拼音排列的,若首字符相同,则比较下一个字符,以此类推。...count([distinct] column | *) : count(*) : 统计表中所有的行数 count(column) : 返回所有非空行的行数 group by 子句 1.用来将表中的行划分成若干更小的组...5.当group by子句中出现多列的时候,表示按照从左至右的顺序进行分组,即先按照第一列分组, 然后再第一列分好的组里面 按照第二列进行分组,以此类推。...1.如果希望限制组结果的返回,那么直接使用having子句跟在group by 子句之后。
}]}); // 创建一个第一行和列冻结的工作表 const sheet = workbook.addWorksheet('My Sheet', {views:[{xSplit: 1, ySplit:...', key: 'DOB', width: 10, outlineLevel: 1 } ]; // 通过键,字母和基于1的列号访问单个列 const idCol = worksheet.getColumn...// 注意:第4列及以上的列将右移1列。 // 另外:如果工作表中的行数多于列插入项中的值,则行将仍然被插入,就好像值存在一样。...// 获取一个行对象。如果尚不存在,则将返回一个新的空对象 const row = worksheet.getRow(5); // Get multiple row objects. ...,并设置了列宽: 可以看到,导出的 excel 列宽比例跟在线的表格是一致: 图片 源码: import { Table, Button } from 'antd'; import React from
也可以添加OFFSET语句,设置返回数据的起始行: SELECT col_1 FROM table_name LIMIT 10 OFFSET 5; 从第五行之后,返回十行数据(即第5-第14行)。...这里可以看出,DESC关键字的用法:只对跟在语句前面的变量有效。所以,想要对多列进行降序排序时,需要对每一列都指定DESC关键字。...用通配符进行过滤(LIKE) 通配符用来匹配值的一部分,跟在LIKE关键字后面进行数据过滤。...expanded_price的计算字段,也就是一个新列。...col_country列进行了拼接,新列的名字叫做col_title。
}]}); // 创建一个第一行和列冻结的工作表 const sheet = workbook.addWorksheet('My Sheet', {views:[{xSplit: 1, ySplit:...', key: 'DOB', width: 10, outlineLevel: 1 } ]; // 通过键,字母和基于1的列号访问单个列 const idCol = worksheet.getColumn...// 注意:第4列及以上的列将右移1列。 // 另外:如果工作表中的行数多于列插入项中的值,则行将仍然被插入,就好像值存在一样。...// 获取一个行对象。如果尚不存在,则将返回一个新的空对象 const row = worksheet.getRow(5); // Get multiple row objects. ...,并设置了列宽: 可以看到,导出的 excel 列宽比例跟在线的表格是一致: 源码: import { Table, Button } from 'antd'; import React from
一、创建表 MySQL不仅用于表数据操作,还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。...创建表一般有如下两种方式: ①使用具有交互式创建和管理表的工具; ②直接使用MySQL语句操纵表; 1、表创建基础 使用程序创建表,可使用SQL中的create table语句,需要以下两个信息: ①新表的名字...PS:创建新表时,指定的表名必须不存在(如果只想在一个表不存在时创建它,应在表名前给出if not exists:这样做不检查表模式是否与打算创建的表模式匹配,只检查表名是否存在)。...创建表时,主键都用类似primary key的语句定义:primary key(column);创建由多个列组成的主键,应该以逗号分隔的列表给出各列名(主键可以在创建表时定义,或者在创建表之后定义)。...如果要多比较复杂的表进行更改,一般需要手动删除过程,涉及的步骤如下: ①用新的列布局创建一个表; ②使用insert select语句从旧表复制数据到新表,如果有必要,可使用转换函数和计算字段; ③检验包含所需数据的新表
\w+:匹配一个或多个字母、数字或下划线字符(即匹配邮箱地址的域名部分)。 .:匹配一个点(.)字符。 \w+:匹配一个或多个字母、数字或下划线字符(即匹配邮箱地址的顶级域名部分)。...首先,使用open()函数打开一个文件,传入两个参数:文件名和打开模式。打开模式可以是 “w”(写入)、“a”(追加)、“r”(只读)等。如果文件不存在,将会创建一个新的文件。...使用SQLite数据库存储数据的示例代码 SQLite基本语法 创建表格: 使用CREATE TABLE语句创建新的表格。指定表格的名称和列定义。每个列都包括列名和数据类型。...', 25); 这将在"users"表格中插入一行数据,其中name列的值为’Alice’,age列的值为25。...指定表格名称、要更新的列和新值,以及更新条件。
3.2 行子查询 行子查询可以当作一个一行多列的临时表使用。...ALL 必须跟在比较运算符之后,如果表达式与子查询返回列中的所有值的比较结果为 TRUE,则返回 TRUE。...ANY 关键字必须跟在比较运算符之后,如果表达式与子查询返回列中的任何值的比较结果为 TRUE,则返回 TRUE。...JSON_TABLE() 函数生成一个表,并提供另一种创建派生表的方法: SELECT * FROM JSON_TABLE(arg_list) [AS] tbl_name ......如果相同,则排名 (@rn) 自增 1,表示同一个部门内的下一个员工。如果部门 ID 不同(即进入了新的部门),则排名 (@rn) 被重置为 1,表示这是新部门的第一个员工。
如果表中有多列,且不存在主键,则count(1)效率优于count(*) count(*):包括所有列,返回表中的总行数,在统计结果的时候,不会忽略值为Null的行数。...count(1):包括所有列,1表示一个固定值,没有实际含义,在统计结果的时候,不会忽略列值为Null的行数,和count(*)的区别是执行效率不同。...count(列名):只包括列名指定列,返回指定列的行数,在统计结果的时候,不统计列值为Null,即列值为Null的行数不统计在内。...count(distinct 列名):返回指定列的不重复的行数,在统计结果的时候,会忽略列值为NULL的行数(不包括空字符和0),即列值为NULL的行数不统计在内。...查找用户名中最后一个字母以i结尾的信息 SELECT * FROM user_info WHERE user_name LIKE '%i'; -- 9.
helloB1946AC92492D2347C6235B4D2611184SHA(安全散列算法,Secure Hash Algorithm)是一个密码散列函数家族,是FIPS所认证的安全散列算法。...其中最新的SHA-3 ,2015年正式发布,由于对MD5出现成功的破解,以及对SHA-0和SHA-1出现理论上破解的方法,NIST感觉需要一个与之前算法不同的,可替换的加密散列算法,也就是现在的SHA-...AH公共摘要算法(单向散列函数)MD5和SHA1实现此功能。下一个头(8位):表示紧跟在AH头部后面的协议类型。...下一个头:表示紧跟在ESP头部后面的协议,其中值为6表示后面封装的是TCP。验证数据:是变长字段,只有选择了验证服务时才需要有该字段。ESP的验证灵活,不验证外侧IP头部,这使得它能很好的兼容NAT。...两端会定义一些感兴趣的流量,这个流量是指满足一系列规则的流量,比如说某个网段或更复杂的acl策略,无论规则如何,如果一端发起的流量与其中这些规则匹配,则它就会被归为感兴趣的流量,并且会创建ipsec隧道
3.2 行子查询 行子查询可以当作一个一行多列的临时表使用。...ALL 必须跟在比较运算符之后,如果表达式与子查询返回列中的所有值的比较结果为 TRUE,则返回 TRUE。...ANY 关键字必须跟在比较运算符之后,如果表达式与子查询返回列中的任何值的比较结果为 TRUE,则返回 TRUE。...当子查询出现在 FROM 子句中时,相当于创建了一个语句级别的派生表(Derived Table)。 SELECT ... FROM (subquery) [AS] tbl_name ......如果相同,则排名 (@rn) 自增 1,表示同一个部门内的下一个员工。如果部门 ID 不同(即进入了新的部门),则排名 (@rn) 被重置为 1,表示这是新部门的第一个员工。
:字母、下划线、#及@符号。...其中要注意的是VARCHAR需要在括号内设置字符串的最大长度。 刷新之后就可以看到我们创建的数据库中多了一张表: ? 选择打开表可以直观的看到内容: ?...修改表 添加新列: ALTER TABLE t_student ADD student_address VARCHAR(50); ?...更改列: ALTER TABLE t_student CHANGE student_birthday student_age INT; 这里我们把学生生日列改为学生年龄列,CHANGE后第一个为旧列名,...分类: 1.实体完整性 保证一行数据是有效的 2.域完整性 保证一列数据是有效的 3.引用完整性 保证引用的编号是有效的 4.用户自定义完整性 保证自定义规则 实体完整性--主键约束:
指定列标题时,可在列名之后使用AS子句;也可以使用:列别名=的形式指定列标题。 AS子句的格式为:列名或计算表达式 [AS] 列标题 其中:AS可省略。...限制查询结果中的返回行数 使用top选项可限制查询结果的返回行数,即返回指定个数的记录数。...格式为:表达式 [not] between and 其中:between关键字之后的是范围的下限(即低值),and关键字之后的是范围的上限(即高值) 例8:查询xs表中1980...(八)、select语句的其它功能: 1、复制或创建表(into子句): into子句功能:将select语句查询所得的结果保存到一个新建的表中。...注意:into 子句应放在select 字段名列表之后。into子句不能与compute子句一起使用。 例25:由xs表创建’计算机专业学生借书证’表,包括借书证号和姓名。
因此,当修改性能远远大于检索性能时,不应该创建索引。 根据数据库的功能,可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。 唯一索引 唯一索引是不允许其中任何两行具有相同索引值的索引。...当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。...优势:创建索引可以大大提高系统的性能。 第一:通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二:可以大大加快数据的检索速度,这也是创建索引的最主要的原因。...也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?因为,增加索引也有许多不利的方面。索引的缺点 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。...字符串的排序方式:先按照第一个字母排序,如果第一个字母相同,就按照第二个字母排序。。。
当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。 数据库表就是一个多行多列的表格。在创建表时,需要指定表的列数,以及列名称,列类型等信息。...而不用指定表格的行数,行数是没有上限的。 当把表格创建好了之后,就可以向表格中添加数据了。向表格添加数据是以行为单位的!...创建数据库 CREATE DATABASE mydb1;--创建一个名为mydb1的数据库。...其中 “”匹配任意一个字母,5个“”表示5个任意字母。...stu WHERE sname LIKE 'z%'; 其中“%”匹配0~n个任何字母。
, column_count # 行数和列数 row_count, column_count = get_row_and_column_num(sheet) print('行数和列数分别为:', row_count..., column_count) openpyxl 提供 2 种方式来定位一个单元格,分别是: 数字索引,从 1 开始 数字索引:行数字索引、列数字索引 比如:row_index=1,column_index...写入数据 要写入数据到 Excel 表格 首先,使用 openpyxl.Workbook() 创建一个 Excel 工作簿对象 接着,使用工作簿对象的 create_sheet() 新建一个 Sheet...# 创建一个Excel工作簿 # 注意:每次新建一个Excel文件,都会默认生成一个名称为【Sheet】的工作表Sheet wb = openpyxl.Workbook() # 创建一个新的sheet...('新的Sheet', 0) 默认创建的 Sheet 被插入到最后一个位置,第 2 个参数可以指定 Sheet 插入的位置 Sheet 标签的背景色同样支持修改,使用 sheet_properties.tabColor
当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。 数据库表就是一个多行多列的表格。在创建表时,需要指定表的列数,以及列名称,列类型等信息。...而不用指定表格的行数,行数是没有上限的。下面是tab_student表的结构: 当把表格创建好了之后,就可以向表格中添加数据了。向表格添加数据是以行为单位的!...[IF NOT EXISTS] mydb1; 创建数据库,例如:CREATE DATABASE mydb1,创建一个名为mydb1的数据库。...其中 “_”匹配任意一个字母,5个“_”表示5个任意字母。...* FROM stu WHERE sname LIKE 'z%'; 其中“%”匹配0~n个任何字母。
如果你是一个有经验的 Bash 程序员,希望在提高技巧的同时乐在其中,那么请跟着我编写一个你的运行在终端中的扫雷游戏。完整代码可以在这个 GitHub 存储库中找到。...创建一个叫 plough 的函数,我们先将标题显示出来:两个空行、列头,和一行 -,以示意往下是游戏界面: printf '\n\n' printf '%s' " a b c d...接着,在每行中,插入列,所以是时候写一个新的 for 循环了。这一循环管理着每一列,也就是说,实际上是生成游戏界面的每一格。我添加了一些辅助函数,你能在源码中看到它的完整实现。...然后将代表列数的字母传给分支语句,从而得到其对应的列数。为了更好地理解这一过程,可以看看下面这段代码中,变量 o 所对应的值。...创建判断单元格是否可选的逻辑 为了找到地雷,在将坐标转化,并找到实际位置之后,程序会检查这一单元格是否可选。如不可选,程序会显示一条警告信息,并要求玩家重新输入坐标。
领取专属 10元无门槛券
手把手带您无忧上云