登录注册数据库建立

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

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

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

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

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

具体表格设计如下:

create table user(

    id  int( 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开始计的。

原文地址:https://www.cnblogs.com/renshengrucha/p/4581524.html