为了解释章鱼的代码,百度到的
![]() 是以下面几篇文章中涉及到的数据库代码为蓝本进行百度的: http://flashroad.joinbbs.net/thread-958-1-1.html 【本帖的2~5楼详解】 http://flashroad.joinbbs.net/thread-896-1-1.html 【本帖的6楼详解】 http://flashroad.joinbbs.net/red ... =4342&fromuid=1 这里的第2行代码【本帖的8~9楼详解】:
| |||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||
创建表[转自]
https://www.1keydata.com/cn/sql/sql-create.php 和 https://www.cnblogs.com/qingsong/p/5384797.html 1、表格是数据库中储存资料的基本架构 在绝大部份的情况下,数据库厂商不可能知道您需要如何储存您的资料,所以通常您会需要自己在数据库中建立表格。 虽然许多数据库工具可以让您在不需用到 SQL 的情况下建立表格,不过由于表格是一个最基本的架构,我们决定重点讲解 CREATE TABLE 的语法。 2、表格的基本常识: 表格被分为栏位 (column) 及列位 (row)。每一列代表一笔资料,而每一栏代表一笔资料的一部份。 举例来说,如果我们有一个记载顾客资料的表格,那栏位就有可能包括姓、名、地址、城市、国家、生日...等等。 当我们对表格下定义时,我们需要注明栏位的标题,以及那个栏位的资料种类。 3、那么,资料种类是什么呢? 资料可能是以许多不同的形式存在的。 它可能是一个整数 (例如 1),、一个实数(例如 0.55)、一个字串 (例如 'sql')、一个日期/时间 (例如 '2000-JAN-25 03:22:22')、或甚至是 以二进法 (binary) 的状态存在。 当我们在对一个表格下定义时,我们需要对每一个栏位的资料种类下定义。(例如 '姓' 这个栏位的资料种类是 char(50)━━代表这是一个 50 个字符的字串)。 我们需要注意的一点是不同的数据库有不同的资料种类,所以在对表格做出定义之前最好先参考一下数据库本身的说明。 4、故此,创建表的命令需要如下信息: 表的名称 字段名称 定义每个字段(类型、长度等) 5、CREATE TABLE语法: 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE "表格名"( "栏位 1" "栏位 1 资料种类", "栏位 2" "栏位 2 资料种类", ... ); 6、若我们要建立我们上面提过的顾客表格,我们就打入以下的 SQL:
字段使用NOT NULL属性,是因为我们不希望这个字段的值为NULL。 因此,如果用户将尝试创建具有NULL值的记录,那么MySQL会产生错误。 字段的AUTO_INCREMENT属性告诉MySQL自动增加id字段下一个可用编号。 关键字PRIMARY KEY用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。 | |
SQL语言里面int(10)和int有什么区别?【来自】
https://zhidao.baidu.com/question/69988885.html 在sql语言里面,基本数据类型包括: 数值型、字符型、日期型、大文本型; 其中int是数值型里面的整数类型。 在建表的时候使用int来表示一个整型的属性; 而int(10)则表示长度最长为10位的整型属性; 带括号和不带括号主要是对最大长度的限制不同。 ========================================= int(10)还有varchar(10)的区别: varchar(10)和int(10)一样【都是规定大小是10个长度】 但是类型不同 int(10)是整型 varchar(10)是字符型 | |
COLLATE utf8_general_ci的含义【转自】
http://blog.163.com/lucas_nina/b ... 0149201502981944995 在我们创建数据库的时候,经常用到的创建语句是: CREATE DATABASE 'LUCAS' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 虽然一直这样写,但是总是对最后的COLLATE utf8_general_ci不太明白,现梳理如下: CREATE DATABASE 'LUCAS': 创建一个名为“LUCAS”的数据库; DEFAULT CHARACTER SET utf8: 设置数据库的字符集编码默认为utf8,是utf8而不是utf-8; COLLATE utf8_general_ci: 数据库的校验规则,ci是case insensitive的缩写,意思是大小写不敏感; 相对的是cs,即case sensitive,大小写敏感; 还有一种是utf8_bin,是将字符串中的每一个字符用二进制数据存储,区分大小写。 整理如下: utf8_bin:区分大小写; utf8_general_cs:大小写敏感; utf8_general_ci:大小写不敏感。 | |
engine=innodb和engine=myisam的区别【转自】
http://blog.knowsky.com/254992.htm InnoDB类型,支持事务处理等高级处理;而MyISAM类型并不支持。 MyISAM: 这个是默认类型,MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持 MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量 的SELECT,MyISAM是更好的选择。 InnoDB: 提供事务支持以及外部键等高级数据库功能,这样就可以根据数据表不同的用处而选择使用不同的存储类型。 它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它. 如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表, 另外,MyISAM类型的二进制数据文件可以在不同操作系统中迁移。也就是可以直接从Windows系统拷贝到linux系统中使用。 | |
ALTER TABLE【来自】
https://www.1keydata.com/cn/sql/sql-alter-table.php 1、在表格被建立在数据库中之后,我们常常会发现,这个表格的结构需要有所改变。常见的改变如下: 加一个栏位 删去一个栏位 改变栏位名称 改变栏位的资料种类 以上列出的改变并不是所有可能的改变。ALTER TABLE 也可以被用来作其他的改变,例如改变主键定义。 2、ALTER TABLE 的语法如下: ALTER TABLE "table_name" [改变方式]; 3、[改变方式] 的详细写法会依我们想要达到的目标而有所不同。再以上列出的改变中,[改变方式] 如下: 加一个栏位: ADD "栏位 1" "栏位 1 资料种类" 删去一个栏位: DROP "栏位 1" 改变栏位名称: CHANGE "原本栏位名" "新栏位名" "新栏位名资料种类" 改变栏位的资料种类: MODIFY "栏位 1" "新资料种类" 4、现在我们用在本帖2楼 步骤6内 建立的 Customer表格来当作例子: Customer 表格
第一步,我们要加入一个叫做 "Gender" 的栏位。这可以用以下的指令达成: ALTER TABLE Customer ADD Gender char(1); 这个指令执行后的表格架构是: Customer 表格
第二步,我们要把 "Address" 栏位改名为 "Addr"。这可以用以下的指令达成: ALTER TABLE Customer CHANGE Address Addr char(50); 这个指令执行后的表格架构是:Customer 表格
第三步,我们要将 "Addr" 栏位的资料种类改为 char(30)。这可以用以下的指令达成: ALTER TABLE Customer MODIFY Addr char(30); 这个指令执行后的表格架构是:Customer 表格
最后一步,我们要删除 "Gender" 栏位。这可以用以下的指令达成: ALTER TABLE Customer DROP Gender; 这个指令执行后的表格架构是:Customer 表格
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
char(10)和VARCHAR(10)主要的区别是什么?[来自]
https://zhidao.baidu.com/question/56951710.html 1、CHAR的长度是固定的,而VARCHAR的长度是可以变化的。 举例说明,现在我们要存储字符串“abc": 对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符), 而同样的VARCHAR (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。 CHAR(10)若输入数据的字符数小于10,则系统自动在其后添加空格来填满设定好的空间,若输入的数据过长,将会截掉其超出部分。 VARCHAR(10)数据类型的存储长度为实际数值长度。 2、CHAR的效率比VARCHAR的效率稍高。 3、目前VARCHAR2和VARCHAR是完全相同的数据类型。 工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。 Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。 如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR,因为Oracle今后会将VARCHAR作为其他用途。 | |
ORDER BY对结果集进行排序【转自】http://www.w3school.com.cn/sql/sql_orderby.asp
ORDER BY 语句用于根据指定的列对结果集进行排序。 默认按照升序(ASC)对记录进行排序;如果您希望按照降序对记录进行排序,请使用 DESC 关键字。 =========================================================== 下面是为了辅助理解而设置的几个例子,假设已经建好了一个名为Orders的表,该表的结构如下所示:
····························································· 实例 1 以字母顺序显示公司名称: SELECT Company, OrderNumber FROM Orders ORDER BY Company 处理结果如下所示:
································································· 实例 2 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber): SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber 结果:
`````````````````````````````````` 实例 3 以逆字母顺序显示公司名称: SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC 结果:
·································································· 实例 4 以逆字母顺序显示公司名称,并以数字顺序显示顺序号: SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC 结果:
注意:实例4的结果中,有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。 | |||||||||||||||||||||||||||||||||||||||||||||||||||
LIMIT用法【转自】
https://zhidao.baidu.com/question/266421833.html 直接看代码公式: select * from table limit m,n 其中m是指记录开始的index,【如果m为0,表示第一条记录】 n是指从第m+1条开始,取n条。 举例: select * from tablename limit 2,4 即取出第3条至第6条,共有4条记录 ================================ 【转自】https://www.cnblogs.com/acm-bingzi/p/msqlLimit.html 初始记录行的偏移量是 0(而不是 1): SELECT * FROM table LIMIT 5,10; //检索记录行6-15 为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last 如果只给定一个参数,它表示返回最大的记录行数目。换句话说,LIMIT n 等价于 LIMIT 0,n: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 | |