不喜欢敲代码的IT狗之十万个为什么
(一)SQL、Mysql、数据库到底什么关系?
刚入门sql时很多人都搞不清Sql和Mysql,数据库之间的关系,其实这些概念之间的关系用下面这张图就能搞懂:
也就是说,数据库是草图,Mysql是建筑师,数据可以理解成砖块,sql是处理砖块(数据)的工具。
下面这张图是SQL的常见分类,以及常用操作指令:
数据库中表的结构包括了代表列名的列,和具体数据的行
表中的某一列(或几列)会被定为主键,表示数据唯一性
主键值不允许有重复
联结 join:不同表之间通过主键联系起来
数据库的数据类型:1)字符串型 2)数字型 3)日期
1)字符串类型:char定长字符串 varchar可变长度字符串 text文本字符串类型 blob二进制的文本数据(视频等)等等
2)数字型:int整型 float浮点型 等等
3)日期型:date日期值 datetime日期与时间组合 timestamp等等
SQL书写规则:
1)语句以英文结尾
2)不区分关键字的大小写
3)表名与列名不区分大小写
4)输入符号的时候只能用英文
5)列名不能加单引号
学习前要安装好Mysql(官网下载)和Navicat客户端,通过Navicat客户端进行表创建、删除、查询、更新等操作。有了客户端之后就可以对各种不同数据库操作系统进行访问。
在客户端添加表,如图为例:
(二)服务器、IP地址和域名之间有什么关系?
写在前面:
**IP(internet protocol)**互联网协议:用于区分互联网中的主机。
127.0.0.1本机IP
域名(the domain name) domain>领域:与主机IP直接关联,便于用户通过简易的域名访问主机。
localhost本机域名
DNS(domain name system) internet 上的一个映射ip和域名的数据库,便于域名和ip直接关联,用户访问域名时,该分布式数据库会自动根据域名去匹配ip主机,也就是域名解析。
端口(port):用于找到主机上的软件,也称入口,分为物理端口与虚拟端口。
物理端口:可视端口,如网卡插口,USB插口
虚拟端口:不可视端口,如80,8888等等
访问IP只能找到该主机,不能指定访问那个软件,所以每个软件指定一个端口,在访问主机时匹配ip+端口便可找到该主机上的软件。
一、服务器
服务器其实就像我们的家用电脑一样,也有主板、CPU、内存、硬盘、电源等,但是由于它们处理问题的不同,服务器更像一台加强的家用电脑,服务器是为展网络业务而存放、处理数据的,所以服务器一般是存放在机房的,由机房管理人员负责管理维护的,它就像是一个人的大脑一样,负责记录、存放、处理数据。所以我们在开展网络业务的时候,服务器是不可或缺的。根据功能来说服务器可分为web服务器、ftp服务器、数据库服务器、邮件服务器等等,做什么用途就可以叫做什么服务器,根据地域来说可分为国内服务器、香港服务器、美国服务器、日本服务器等等,服务器放在什么地方就可以叫做什么服务器。
二、ip地址
ip地址是一台服务器所必须的,只有输入正确的ip地址,才能找到对应的服务器,不然的话,我们只能知道自己的服务器具体地址在什么地方、什么机房、什么位置,但是无法进入、无法正常的使用服务器,服务器需分配绑定好对应的ip地址后,就可以通过这个ip地址进行远程连接到服务器,然后把业务需要的资料传输到服务器,并且设置好对应访问规则,那么所有的网络用户就可以通过这个ip地址来浏览您需要展示的东西。ip就像是一个人的住址一样,虽然说直接找这个地址也可以找到这个人,但是这样很不方便,如果他搬家了,那么我们就找不到了,所以为了方便大家寻找,就有了域名。
三、域名
如果一台服务器上面只有一条ip,但是需要搭建几个网站,那么只能通过不同的端口来实现,这样就比较麻烦,如果是使用不同的域名来搭建,实现的效果就比较好,而且域名都是比较方便记忆的,不像ip地址那样不容易被人记住,就像是一个家庭,里面是有几个成员的,我们不能都把他们都称呼做一样的,所以域名更像是一个人的名字,ip地址就像是家庭地址一样,多条域名是可以同时解析一条ip的,但是一条域名是无法解析多条ip的,同时如果需要把网站业务搬到其他的服务器,只需要把数据转移好,然后域名重新解析到新ip上就可以了,这样对于自己的业务来说基本上是没有什么影响的。
四、它们之间的关系
服务器是开展网络业务所必须的,ip是服务器所必须的,域名是辅助开展网络业务的,没有服务器存在数据,就无法展示我们的信息,没有ip我们就无法使用服务器,没有域名无法让用户快速的记住我们,业务的生命力也就不强,所以我们在开展网络业务之前一定要先准备好服务器、ip以及域名,有了它们才能更好的开展我们所需的网络业务。
(三)HTTP协议中GET和POST到底有哪些区别
HTTP 定义了与服务器交互的不同方法,最常用的有4种,Get、Post、Put、Delete,如果我换一下顺序就好记了,Put(增),Delete(删),Post(改),Get(查),即增删改查,下面简单叙述一下:
1)Get, 它用于获取信息,注意,他只是获取、查询数据,也就是说它不会修改服务器上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是可以修改数据的,所以这也是两者差别之一了。
2) Post,它是可以向服务器发送修改请求,从而修改服务器的,比方说,我们要在论坛上回贴、在博客上评论,这就要用到Post了,当然它也是可以仅仅获取数据的。
3)Delete 删除数据。可以通过Get/Post来实现。用的不多,暂不多写,以后扩充。
4)Put,增加、放置数据,可以通过Get/Post来实现。用的不多,暂不多写,以后扩充。
下面简述一下Get和Post区别:
1) GET请求的数据是放在HTTP包头中的,也就是URL之后,通常是像下面这样定义格式的,(而Post是把提交的数据放在HTTP正文中的)。
login.action?name=hyddd&password=idontknow&verify=%E4%BD%E5%A5%BD
a,以 ? 来分隔URL和数据;
b,以& 来分隔参数;
c,如果数据是英文或数字,原样发送;
d,如果数据是中文或其它字符,则进行BASE64编码。
2)GET提交的数据比较少,最多1024B,因为GET数据是附在URL之后的,而URL则会受到不同环境的限制的,比如说IE对其限制为2K+35,而POST可以传送更多的数据(理论上是没有限制的,但一般也会受不同的环境,如浏览器、操作系统、服务器处理能力等限制,IIS4可支持80KB,IIS5可支持100KB)。
3)Post的安全性要比Get高,因为Get时,参数数据是明文传输的,而且使用GET的话,还可能造成Cross-site request forgery攻击。而POST数据则可以加密的,但GET的速度可能会快些。
所以综上几点,总结成下表:
(四)Mysql数据库中数据类型的长度是什么?
在mysql中新建数据表的时候会有长度一说,其实用建表语句建数据表的时候也有涉及
例如:
CREATE TABLE user(
uid int(4),
name varchar(255),
passward varchar(20)
birthday data
)
不知道你有没有注意这个数据类型后面的括号有什么玄机,今天看了《Mysql 5.6 从零开始学》这本书,算是把这个地方搞清楚了。
括号里的数字叫数据的宽度,我们不能一概而论,因为不同的数据类型对宽度的处理也不一样:
1、整数类型,这里显示的宽度和数据类型的取值范围是没有任何关系的,显示宽度只是指明Mysql最大可能显示的数字个数,数值的位数小于指定的宽度时会由空格填充;如果插入了大于显示宽度的值,只要该值不超过该类型的取值范围,数值依然可以插入,而且能够显示出来。
例如上面的udi,显示的宽度是4,但是我向uid中插入100001,也是可以的,保存和显示的都会是100001
如果你不设置宽度,系统将添加默认的宽度 tinyint(4),smallint(6),mediumint(9),int(11),bigint(20),这些默认的宽度是跟该类型的取值范围长度相关。
2、字符串类型,字符串类型这个宽度才真的用上了。不管是char还是varchar,宽度都定义了字符串的最大长度
例如上面的 password varchar(20),如果你输入了一个21个字符的密码,那么保存和显示的只会是前20个字符,你将丢失一个字符信息,char同理。由于varchar是变长存储的,所以实际开发中我们一般都把varchar的宽度设为最长255,反正你没用完它也不会浪费空间。
3、浮点和日期等数据类型对数据的宽度没有要求,一般也不设置,默认是0
(五)id主键的创建及作用
作用
从业务上来说
在设计数据库时不需要费尽心思去考虑设置哪个字段为主键。然后是这些字段只是理论上是唯一的,例如使用图书编号为主键,这个图书编号只是理论上来说是唯一的,但实践中可能会出现重复的 情况。所以还是设置一个与业务无关的自增ID作为主键,然后增加一个图书编号的唯一性约束。
从技术上来说
如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。 总的来说就是可以提高查询和插入的性能。
对InnoDB(数据存储引擎)来说
主键索引既存储索引值,又在叶子节点中存储行的数据,也就是说数据文件本身就是按照b+树方式存放数据的。
如果没有定义主键,则会使用非空的UNIQUE键做主键 ; 如果没有非空的UNIQUE键,则系统生成一个6字节的rowid做主键;
聚簇索引中,N行形成一个页(一页通常大小为16K)。如果碰到不规则数据插入时,为了保持B+树的平衡,会造成频繁的页分裂和页旋转,插入速度比较慢。所以聚簇索引的主键值应尽量是连续增长的值,而不是随机值(不要用随机字符串或UUID)。
故对于InnoDB的主键,尽量用整型,而且是递增的整型。这样在存储/查询上都是非常高效的。业务主键和非业务主键
自增字段作为主键(一般多用int类型定义),也称为非业务主键(逻辑主键或者代理主键)意思就是这列数据与业务无关,仅仅作为主键而设计,会浪费主键资源。
sqlserver修改主键为自增
先删除id字段, 执行下面sql即可:
alter table 表名 add id int IDENTITY (1,1) PRIMARY KEY
如果在navicat中需要移动id字段位置,可以将其他字段复制粘贴到id字段,再将id字段前的删除优缺点
(六)位、字节、字符
bit(位)
1bit = 1位二进制数
数据存储的最小单位,一个二进制数据0或1就代表一位
byte(字节)
1byte = 8bit
存储空间的基本计量单位
(1)一个英文字母占一个字节:1字母 = 1byte = 8bit
(2)一个汉字占2个字节:一个汉字 = 2byte = 16bit
(3)标点符号:汉字输入状态下,默认为全角输入,占2位字节
(4)标点符号:英文输入状态下,默认为半角输入,占1位字节
(5)mysql 4.0以下版本中,varchar(50)就代表50个字节,如果存放utf8汉字时,只能存放16个(每个汉字3字节)
字符
1个汉字 = 一个字符 = 2byte
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。a、A、中、+、*、の…均表示一个字符
(1)utf-8编码下,一个汉字占位3个字节
(2)gbk编码下,一个汉字占位2个字节
(3)mysql 5.0版本以上,varchar(50) 指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个
字符集
字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等
字符编码
字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递
(七)主键约束和唯一性约束的区别
简单说:
主键不能为空
而唯一可以为空
相同的就是 都不允许重复
详细的说:
1.主键约束(PRIMARY KEY)
1.主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。
2.是不可能(或很难)更新.
3.主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
4.主健可作外健,唯一索引不可;
2.唯一性约束(UNIQUE)
1.唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
2.只要唯一就可以更新.
3.即表中任意两行在 指定列上都不允许有相同的值,允许空(NULL).
4.一个表上可以放置多个唯一性约束
例如,用户表里面的用户名唯一,设为主键约束,向用户表里输入唯一的银行卡号,那么银行卡号就是唯一性约束。
不喜欢敲代码的IT狗之十万个为什么相关推荐
- 你这么喜欢敲代码,那么技术的乐趣在哪里?
在中国的技术圈子里,流行着这样一种说法:过了三十五岁,就一定得改行.在技术飞速发展的今天,只要稍不留神,就会掉下队来.因此,诸多技术工作者在仔细权衡利弊之后,终于还是决定跳离技术这个是非之地,将工作机 ...
- 计算机专业女生不想敲代码
为什么选这个专业 1.从小到大的生活都很平淡,没有什么特殊的爱好,家里也只是农村的,没有什么兴趣爱好,所以报专业的时候是跟风,可以这么说吧,在知乎上看,计算机专业比较厉害,工资也高,我觉得还可以就报了 ...
- VS Code的背景图老是黑白灰等?放一张喜欢的图片当做背景图敲代码不更舒服么
"废话-哈哈哈" 作为一名程序员,我们要长时间对着电脑敲代码,有时候看代码看的会头晕眼花,但是背景图放一张自己喜欢的图片看代码不更舒服么,但你也不要被背景图吸引,耽误了敲代码,放一 ...
- 沈阳python需求大吗_我为什么放弃了敲代码,做产品?
作为Python的狂热者,人生苦短,我用Python!为什么放弃了? Hall Of FameThe Script;http://will.i.am 四年前怀着无比向往的心,对未来充满憧憬的我来到了陌 ...
- 不是码农,不会敲代码的她,却最懂程序员!| 人物志
受访者 | 西乔 采访人 | 伍杏玲 出品 | 程序人生(ID:coder_life) 作为程序员,想必你肯定看过这样一组漫画:简洁的画风,常年驼背对着电脑敲代码的程序员,他表情木讷,嘴里吐槽的内容扎 ...
- 某女程序员吐槽自己被男同事集体排挤!一个人吃饭,一个人敲代码!深深感觉到世界的恶意!...
请点击上面 一键关注! 都说女程序员是程序员里的团宠,事实真是这样吗? 一个女程序员发帖吐槽自己太孤独,上班时一个人吃饭,一个人敲代码.男程序员却能一起讨论不会的问题,吃饭也一起吃.小姐姐感慨:终于知 ...
- pycharm 敲代码时的效果插件_精选Pycharm里6大神器插件
原标题:精选Pycharm里6大神器插件 上次写了一篇关于Sublime的精品插件推荐,有小伙伴提议再来一篇Pycharm的主题.相比Sublime,Pycharm要强大许多,而且是专为python设 ...
- 一名优秀的开发人员,空闲时间会敲代码吗
原网页:Do I Need to Code in My Free Time to Be a Good Developer? 作者:Maxim Chechenev "只有在空闲时间也敲代码,才 ...
- 周末想找个地方敲代码_观看我们的代码游戏,全周末直播
周末想找个地方敲代码 by freeCodeCamp 通过freeCodeCamp 观看我们的代码游戏,全周末直播 (Watch us Code Games Live All Weekend) Not ...
最新文章
- VIM中空格和TAB的替换 [转]
- 体系文件管理解决方案
- JS知识点笔记-常用方法
- php图片生成缩略图_PHP实现生成图片缩略图函数
- 高效开发iOS系列 -- 那些不为人知的KVC
- 这两天,我们还没毕业
- RabbitMQ的5种队列_Work模式_入门试炼_第5篇
- ubuntu 上搭建lanp环境
- 在word中打出带圈的数字,文字以及其它字符
- 后缀树 c++代码实现
- adb连接木木模拟器
- mapgis明码文件转为点线面文件_Geomap格式转化.doc
- signature=cdae83b1c2034e2244a378f624349dfb,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
- SQL 如何得到两个日期间的工作日(附假期表)
- 计蒜客 幼儿园买玩具
- java 判断zip文件编码_如何使用UTF-8编码打开java程序生成的zip文件
- 网络性能优化的几个思路
- 京东员工出版的计算机书籍,【京东工资】业务员待遇-看准网
- Word中利用字体把文字转换为特殊图案(转)
- 2022年全国计算机二级考试MS Office题库软件(考试原题)
热门文章
- 免费在线阅读 计算机,计算机考试2008.doc
- 网络经济与企业管理(一)
- Apollo Planning(四)
- Oracle EBS OM Drop Ship Orders(直发业务)技术-API和核心表关联关系介绍
- UIAutomator环境搭建
- linux shell 编辑文件内容,Shell编辑与文本处理(Bash sed文本编辑)
- 环境质量pm2.5各城市各站点历史数据14年至今
- 多项式——多项式除法
- wxpython选择框_wxpython 对话框
- 2017丝绸之路国际博览会暨第二十一届中国东西部合作与投资贸易洽谈会会刊(参展商名录)