学习前端的时候Ajax学习的时候主要练习讲解的就是登录注册问题,从最开始的源生代码到后来的JQuery再到后面的AngularJS。讲了这三种登录注册问题。

我先讲一下后台数据库的建立,因为不管是哪一种后台都是一样的,只有前台js的时候才有差别。

要登录和注册,首先就要先建立数据库,我们设计数据库表的时候就要先考虑清楚数据库表需要有哪些内容,我们给表格命名user,用户表首先要包括用户表id,这一栏设为这个表的主键,为了提高查询时的效率我们需要给表格设置一个主键。这样就算人名有重复的时候我们根据主键也可以找到我们需要找到的,因为主键是不能重复的是唯一的。当然我们设计的这个登录注册功能注册时会先判断用户名是否存在,如果用户名存在就不能注册,需要重新输入一个用户名。主键设计好了我们给主键取个名字id,在SQL SERVER中,主键是一个表中的约束。这个约束,一张表只能有一个,一般作为ID使用,这个约束一般给别人外键引用。这个约束的功能就是,不可重复,保证了唯一性,正是这种特性,使得大多数人都把他作为表中ID的字段使用。

用户要登录我们需要设计一个登录名,命名name,在命名的时候大家尽量用英文单词来命名,这样在后期写sql语句的时候容易看懂,能够看到名字就知道大概是什么了。要登录当然还有一个不可少的就是用户密码了,平时大家在各种网站平台还有qq等软件使用时一般都是需要用户名和密码来登录的。

但是注册的时候邮箱email还有性别sex

具体表格设计如下:

create table user(

idint( 10 ) not null auto_increment primary key,/*主键不为空自增长*/name varchar(20 ) not null,

pass varchar(20 ) not null,

email varchar(20 ) not null,

sex varchar(5 ) not null)charset=utf8;

我们可以看到上表中我们用了varchar而没有用char ,下面我简单讲一下char和varchar有什么区别,还有什么情况下用char什么时候用varchar。

一.数据存储开销

1.char(n) 是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。

在程序中,会返回给你8位,后面的用空格补上;

在数据库中,char(8),占用16个字节(1个字符=2个字节);

2.varchar(n) 是长度为 n 个字节的可变长度且非 Unicode 的字符数据。n必须是一个介于1和 8000之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。

二.插入数据

1.char列的NULL值占用存储空间。

2. varchar列的NULL值不占用存储空间。

插入同样数量的NULL值,varchar列的插入效率明显高出char列。

插入不为null的数据时,无论插入数据涉及的列是否建立索引,varchar列的插入效率也是明显高出char列。

三.更新数据

如果更新的列上未建立索引,则char的效率低于varchar,但效率差异不大。

如果更新的列上建立索引,则char的效率低于varchar,并且效率差异很大。

四.修改结构

无论增加或删除的列的类型是char还是varchar,操作都能较快的完成,而且效率上没有什么差异。

对于增加列的宽度而言,char与varchar有非常明显的效率差异,varchar列基本上不花费时间,而修改char列需要花费很长的时间。

五.数据检索

无论是否通过索引,varchar类型的数据检索略优于char的扫描。

那实际开发中,我们使用哪种呢?

当确定字符串为定长、数据变更频繁、数据检索需求少时,使用char;

当不确定字符串长度、对数据的变更少、查询频繁时,使用varchar。

如下图所示我们可以看见建好的表如下:

表建好了我们需要写sql语句了。

首先如果我们登录的话没有账户就要注册,注册就是往数据库表里面增加数据,我先简单写一句增加数据的例子;

假如用户名为susan1,密码是123456,邮箱123@qq.com,性别女

语句如下:

Insert into user(name,pass,email,sex) values ("susan1",123456,"123@qq.com","女");

可以查看一下表数据已经加进去了,如下图所示:

我们要注册的时候输入了用户名要先查看用户名是否存在,思路如下:

select * from user where u_name="+name+";"+name+"表示输入的名字,先查询表里面的用户名有没有等于输入名的,如果没有的话查到的数据长度为零,就是可以用这个名字来注册,如果长度大于零的话就是用户名存在,需要重新输入用户名注册。

当然也有的需要做出删除用户的功能,删除用户例子如下,比如我想删除用户名是张三的用户,可以这样写:

delete from user where u_name="susan1";

表格里面用户名是susan1的已经删除了。

我们要求的还有把所有的用户打印出来,如果数据库里面的用户名有很多的话我们就还需要做用户分页的。用户分页可以有两种方法,一种是把所有用户查询出来然后在前台来分页,这样的工作量比较大,我们用第二种,假设一页加载五项,就是第一页的时候先加载查询出的数据前五项,第二页的时候找出第6项到第十项。

Sql语句如下:

select * from user limit 5;/*第一页*/

查询结果如下:

select * from user limit 5,5;/*第二页*/

查询结果如下:

需要注意的是我们查询时从第几项时是从0开始计的。

mysql建用户注册登录表_登录注册数据库建立相关推荐

  1. mysql设计积分兑换表_积分系统数据库表设计.docx

    积分系统数据库表设计 文件编号:JHDZ/SJ 密 级: 云上城积分功能数据库设计文档 项目名称:<云上城>项目代号:XXX版 本:V1.0编制单位:平台运营编制日期:2014-10-08 ...

  2. 第三方登录mysql表_浅谈数据库用户表结构设计,第三方登录

    说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情.用户表结构的设计,算是整个后台架构的基石.如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地 ...

  3. java mysql单库多表_第69节:Java中数据库的多表操作

    第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文 ...

  4. 数据库迁移登录名_如何将数据库的登录名迁移到其他服务器

    数据库迁移登录名 Sometimes, it is necessary to move the database from one server to another. The problem is ...

  5. mysql 多维度分表_亿级订单数据分库分表设计方案(满足多维度查询:订单号、用户、商家、渠道)...

    根据业务初步预估订单业务量,每天500万的数据.我们将订单数据划分为了2大类型:分别为热数据和冷数据. 热数据:1个月内的订单数据,查询实时性较高; 冷数据:归档订单数据,查询频率不高; 根据实际业务 ...

  6. mysql 查询两张表结构相同的数据库_利用反射处理多个表结构相同的数据的查询和数据库表的关联...

    最近做一个项目,需要对人口数据进行查询,但是人口数据分布在不同的街道表中,首先进行了数据表结构的统一,每个数据表以街道名开头,然后其他的名字都一样 前期将各个表中的字段也进行了统一 抽象出一张字典表 ...

  7. mysql到mysqli转变表_利用mysql和mysqli取得mysql的所有数据库和库中的所有表

    /*** mysqli  op mysql demo*//***公用函数*//***功能:列出一个数据库的所有表*@param$dbname*@param$con*/functionlist_tabl ...

  8. mysql 截断多个表_如何从MySQL数据库中截断所有表?

    好吧,我自己解决了这里是存储过程:) BEGIN DECLARE done BOOLEAN DEFAULT FALSE; DECLARE truncatestmnt TEXT; -- this is ...

  9. mysql killed进程不结束_优秀的数据库产品——MySQL 云数据库服务

    作为一种低成本,高性能,高可靠性和开放源代码的数据库产品,MySQL已在Internet公司中广泛使用. 例如,淘宝有数千个MySQL服务器. 尽管NoSQL在过去两年中发展迅速,新产品层出不穷,但N ...

  10. mysql异地灾备架构_最佳实践 数据库异地灾备

    方案概述 根据企业所在行业.合规要求.数据规模.RPO/RTO要求的不同,数据库灾备目的和要求各不相同,投入成本也是不同的.阿里云数据库灾备解决方案提供实时数据备份能力,满足企业备份多样化选择.通过数 ...

最新文章

  1. 简单介绍Vue之vue.$set()方法源码案例
  2. 运行返回签名不正确_不正确运行废气治理RTO设备容易引起爆炸,注意事项有哪些?...
  3. 【.NetCore学习】ASP.NET Core EF Core2.0 DB First现有数据库自动生成实体Context
  4. php国外地址生成,thinkphp url生成
  5. CefSharp向浏览器中指定DOM发送点击事件
  6. intellij IDEA--- 报inspects a maven model for resolution problems
  7. Going Further with Point Pair Features: PPF, 如何走的更远?
  8. R语言中,保留含有特定字符的元素
  9. Linux下使用源码包安装禅道
  10. 【Axure组件库】Axure移动端小程序组件库 移动端高交互元件库
  11. linux vi命令怎么使用方法,linux vi命令的使用方法
  12. sql server 2008 r2 “远程过程调用失败“解决方案
  13. 如何登陆FTP服务器下载文件
  14. openCV calcHist函数的使用
  15. 基金使用计划 数学建模 matlab,基金使用计划(数学建模).ppt
  16. 关于因和数据库库断开数据源没有自动重连变无效的问题
  17. vue3使用setup代替created
  18. 结绳编程【按钮事件】
  19. python——温度换算(以字母结尾)
  20. dxc 2.0 线程的创建和启动

热门文章

  1. “飞客蠕虫”形成全球最大僵尸网络 每日感染数万网民
  2. 电驴服务器搜索文件排序,eMule如何搜索文件
  3. 轻量java框架_smart-framework
  4. 蓝桥杯 C语言 试题 历届试题 高僧斗法
  5. c++代码打印爱心图(适用初学者)
  6. 光纤基础知识;接口类型、光模块、光纤种类、
  7. ST、SC、FC、LC光纤接头区别
  8. gephi用安装java吗_Gephi安装
  9. Oracle P6培训系列:03设置用户设置
  10. Pr插件大全一键安装包视频剪辑必备工具预设