免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享

[sql代码]乱七八糟

本文来自:★flash之路-flash技术交流★ 转帖请注明出处! 作者:flashroad 您是第3071个浏览者

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
flashroad友情提示:
“点评”不是“回帖”!
为了解释章鱼的代码,百度到的

是以下面几篇文章中涉及到的数据库代码为蓝本进行百度的:
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楼详解】:
  1. {eval $q2=$db->query("SELECT * FROM zy_postinner WHERE pid = " . $post[pid] . " ORDER BY ptid DESC LIMIT 5");}
复制
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

获得 小恶魔卡 一张

卡片说明:flashroad被风吹乱了秀发,花费了5金币请理发师整理了一个酷炫发型

卡片效果:-5

友情提示:单击下列任意一个表情,即可瞬间自动回复本帖!

好贴......
郁闷......
开心......
擦汗......
鄙视......
狂怒
谢谢
爱你呦
拜托了
嗯嗯
OMG
求关注
伤心......
无奈.....
无奈.....
无奈.....
无奈.....
无奈.....
哈哈哈
NO
OK
what
我来了

最近访问本帖者列表:

flashroad
访问时间:2020-09-14 08:32
天使小小
访问时间:2018-08-21 11:52

打赏

取消

感谢您的支持,我会继续努力的!

扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by 爱秀代码,分享从这里开始,精彩与您同在

点评
B Color Smilies

您还可以输入:个字符
X

X

创建表

[转自]
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:
  1. CREATE TABLE Customer(
  2. First_Name char(50),
  3. Last_Name char(50),
  4. Address char(50),
  5. City char(50),
  6. Country char(25),
  7. Birth_Date datetime);
复制
7、补充实例:
  1. create table tutorials_tbl(
  2.    tutorial_id INT NOT NULL AUTO_INCREMENT,
  3.    tutorial_title VARCHAR(100) NOT NULL,
  4.    tutorial_author VARCHAR(40) NOT NULL,
  5.    submission_date DATE,
  6.    PRIMARY KEY ( tutorial_id )
  7. );
复制
解析:
字段使用NOT NULL属性,是因为我们不希望这个字段的值为NULL。 因此,如果用户将尝试创建具有NULL值的记录,那么MySQL会产生错误。
字段的AUTO_INCREMENT属性告诉MySQL自动增加id字段下一个可用编号。
关键字PRIMARY KEY用于定义此列作为主键。可以使用逗号分隔多个列来定义主键。
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

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)是字符型
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

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:大小写不敏感。
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

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系统中使用。
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

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 表格

栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addresschar(50)
Citychar(50)
Countrychar(25)
Birth_Datedatetime

第一步,我们要加入一个叫做 "Gender" 的栏位。这可以用以下的指令达成:
ALTER TABLE Customer ADD Gender char(1);
这个指令执行后的表格架构是:
Customer 表格
栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addresschar(50)
Citychar(50)
Countrychar(25)
Birth_Datedatetime
Genderchar(1)


第二步,我们要把 "Address" 栏位改名为 "Addr"。这可以用以下的指令达成:
ALTER TABLE Customer CHANGE Address Addr char(50);
这个指令执行后的表格架构是:Customer 表格
栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addrchar(50)
Citychar(50)
Countrychar(25)
Birth_Datedatetime
Genderchar(1)


第三步,我们要将 "Addr" 栏位的资料种类改为 char(30)。这可以用以下的指令达成:
ALTER TABLE Customer MODIFY Addr char(30);
这个指令执行后的表格架构是:Customer 表格
栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addrchar(30)
Citychar(50)
Countrychar(25)
Birth_Datedatetime
Genderchar(1)


最后一步,我们要删除 "Gender" 栏位。这可以用以下的指令达成:
ALTER TABLE Customer DROP Gender;
这个指令执行后的表格架构是:Customer 表格
栏位名称资料种类
First_Namechar(50)
Last_Namechar(50)
Addrchar(30)
Citychar(50)
Countrychar(25)
Birth_Datedatetime
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

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作为其他用途。
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

获得 大穷神卡 一张

卡片说明:flashroad不小心破坏了公物,被警察叔叔扣掉4金钱

卡片效果:-4

点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

ORDER BY对结果集进行排序

【转自】http://www.w3school.com.cn/sql/sql_orderby.asp

ORDER BY 语句用于根据指定的列对结果集进行排序。
默认按照升序(ASC)对记录进行排序;如果您希望按照降序对记录进行排序,请使用 DESC 关键字。

===========================================================

下面是为了辅助理解而设置的几个例子,假设已经建好了一个名为Orders的表,该表的结构如下所示:
CompanyOrderNumber
IBM3532
W3School2356
Apple4698
W3School6953

·····························································
实例 1
以字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company
处理结果如下所示:
CompanyOrderNumber
Apple4698
IBM3532
W3School6953
W3School2356

·································································
实例 2
以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):
SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
结果:
CompanyOrderNumber
Apple4698
IBM3532
W3School2356
W3School6953

``````````````````````````````````
实例 3
以逆字母顺序显示公司名称:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
结果:
CompanyOrderNumber
W3School6953
W3School2356
IBM3532
Apple4698

··································································
实例 4
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
结果:
CompanyOrderNumber
W3School2356
W3School6953
IBM3532
Apple4698


注意:实例4的结果中,有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的。
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.
点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

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 个记录行
您所在的用户组只能看到部分内容.
如查看全部内容, 请先登录或者注册.

获得 小恶魔卡 一张

卡片说明:flashroad不小心破坏了公物,被警察叔叔扣掉5金钱

卡片效果:-5

点评
B Color Smilies

您还可以输入:个字符
X

X

TOP

 

B Color Image Link Quote Code Smilies
高级模式 | 发新话题

您需要登录后才可以回帖 登录|立即注册

快速
返回顶部
返回首页