首页 > PHP技术文章 > MySQL数据库快速入门

MySQL数据库快速入门

2009年8月5日 admin 发表评论 阅读评论

 

一。MYSQL基础

 简述:mysql是一种高效免费的数据库系统.虽然非常复杂不过用于做网站就不需要多高深的知识,知道一些基本概念就行了。安装了mysql后可以建立许多数据库,每个数据库又可以建立许多表,一般来说一个程序只使用一个数据库。

数据表由若干个“字段”组成。如下表。假设表的名字为user

编号 姓名  年龄  简介
1  张三  15   这是个白痴
2  李四  20   他经常跟张三比谁聪明
3  王五  18   他只比张三笨一点

……
假设人物有100万个。这个人物表里面,每一行就叫一个“记录”,每一列有个列名,如编号,姓名,年龄,简介这就是四个“字段”了。定义了字段,才知道这一列表示的是什么内容,大的表甚至有一百多个字段。注意字

段名不要用中文,但记录的内容里可以有中文(必须是gbk,gb2312或utf8编码)

通常操作数据库都使用通用的SQL语言。(其他数据库系统也用),用SQL语言操作数据库可以极大的简化程序操作。

1.试想如果上表中要得到一个按年龄排序的表,数据量达到几十万的时候将是很恐怖的一件工作,可能要辛苦一个月时间,而且为了维持顺序,每次加入新“记录”还得找半天位置。那学会数据库和SQL

语言后会怎么做呢?只需要一句

 SELECT * FROM user ORDER BY 年龄

 有了这句代码,数据库就把整个表的记录按年龄为顺序列出来,一句代码就完成了以前痛苦的工作。

3.然后修改呢?比如过了一年,每个人年龄增加了一岁,是不是一个个手动去改呢?再试试SQL语句操作数据库吧

 UPDATE user SET 年龄=年龄+1

4.要删除20岁以下的所有人呢?

 DELETE FROM user WHERE 年龄<20

添加一个新人物这样做

 INSERT INTO user VALUES(100,’马六’,25,’这里填人物简介’)

注意,以上为了便于理解,将字段名设成中文了,实际上要用英文,最好用英文单词,有些字段甚至已经约定成俗了,例如姓名用name,密码用pass或者password等,别人一看就能理解你的数据表。

 

二:建立表.

开始不需要学习创建表的语句,用navicat操作或phpmyadmin就可以.
比如navicat的新建表.

在字段选项卡里,可以填入各字段的属性,

名称:即字段名(id,name之类的),

类型:是这个字段的值类型,例如年龄字段肯定用数字(int)吧,姓名肯定用字符串(varchar),而简介由于可能很久,通常用长文件型(text).

长度:通常指字符的最长限制,数字型不用定义,自动有限制.
十进制:不管

允许空:添加的时候是否允许不加值.

主键:数据库里一般有一个字段做为主键,每条记录的主键值绝不能相同,是记录的唯一标志.(比如人的身份证号),没有好的唯一标志,通常都是建一个id字段,设为主键,并且设为自动增加.(在navicat设计

表的时候,下方有个”自动递增”选项.这样添加的时候,不用添加id值,数据库会自动分配一个编号给它.每加一条记录,编号自动加1,永不重复.

例如上表,在navicat里这么创建表

名称      类型   长度  十进制  允许空?   (主键?)  
id       int                    主键(自动递增)
name     varchar  20
age      int
description  text         是
    

text是长文本的,属于备注型,在查看记录的时候,要点上方的备注才能看到text的值.
除了上面的三种类型,常用的还有时间类型(datetime),布尔型(只有1和0两个值,表示真和假)
上面三种基本类型还有变型,例如smallint表示短整型,int能表示11位数字,而短整的就小一些.

 设计表实战:一个日志表

 

 

根据需要可以继续加字段

一个通讯录的表

 字段名 类型 长度  允许空?  主键?  备注 
 id  int   是  主键(自增列) 
name varchar  20       名字
nick  varchar  20       妮称、网名
class  varchar  20       类型
qq varchar 12       
phone  varchar  15       电话
photo  varchar  100      相片路径 
description  text  1000      简介、备注

qq和电话虽然是数字,但是不用于数学计算,所以一般还是用字符型比较好.
上传图片的时候,实际上是上传到硬盘目录里,数据库只保存图片的地址而己(删除记录的时候根据地址再删了图片文件).虽然也可以把真正图片存入数据库,但那样做,会使数据库庞大而缓慢.这些可以以后再学现在最关键的是多设计一些表,然后在PHP里练习以下的四个语句。当然直接用navicat或phpmyadmin练习也可以,效率更高点。

三。简单SQL语法

简述:人们对于数据的操作不外乎“添加”“删除”“修改”“读取”这四种。这四种操作里

1.添加记录
 INSERT INTO 表名(字段1,字段2,字段3) VALUES(值1,值2,值3)
 解释:格式都是这样子的,如果看得懂英语很容易理解什么意思,具体应用中自己替换”表名”,字段名和值三个部分.
 实例:仍然以上表为例.但不再用中文字段名,而用英文代替.编号=id,姓名=name,年龄=age,简介=description
  
2.删除记录
 DELETE FROM 表名 WHERE 条件
 解释:如果没有后面的WHERE 条件,将会删除整个表,一般情况下都限定条件的.
 实例:

SQL代码
  • INSERT INTO user(name,age,description) VALUES(‘赵云’,17,‘三国名将’)   
  • INSERT INTO user VALUES(11,\‘赵云\’,17,\’三国名将\’)         //如果所有字段都添加值,可以省略字段部分.实际上编号id字段都设置成主键,并且自动增加,一般不用人工输入值.   
  •  

    SQL代码
  • DELETE FROM user //这样会删除整个user表记录.但是表结构(字段信息)还在   
  • DELETE FROM user WHERE age>20 //删除年龄大于20的记录   
  • DELETE FROM user WHERE name=‘张三’ //删除姓名为张三的,注意字符要加引号   
  • 3.修改记录
     UPDATE 表名 SET 字段1=值1,字段2=值2 WHERE 条件
     解释: 修改记录的字段值,多少个字段要改就写多少个”字段=值”
     实例:

    SQL代码
  • UPDATE user SET age=age+1 //所有人年龄加1   
  •   UPDATE user SET name=‘张山’ WHERE name=‘张三’ //修改名字为“张三”,条件是这条记录的姓名为“张三”.(即只改张三的姓名为“张山”.条件子句是经常用到的.   
  • 4.读取记录.
     SELECT * FROM 表名 WHERE 条件 ORDER BY 字段 LIMIT 数字
     解释:这是最常用到的语句.
     实例: 注意:LIMIT子句必须写在最后,条件子句(WHERE)和排序子句(ORDER)随便顺序都可以,像HTML的属性一样,没有先后和依附关系.

    SQL代码
  • UPDATE user SET age=age+1 //所有人年龄加1   
  • UPDATE user SET name=‘张山’ WHERE name=‘张三’ //修改名字为“张三”,条件是这条记录的姓名为“张三”.(即只改张三的姓名为“张山”.条件子句是经常用到的.   
  •  四:SQL进阶
     1.复合条件:稍微复杂一点的情形中,可能不只需要一个条件.

     例如我要年龄>20的,并且编号>1000的,这就需要复合条件了,其实也非常简单,用and或or把条件组合起来就行了.
     例:

    SQL代码
  • SELECT * FROM user age>20 AND id>1000 //年龄>20并且编号>1000   
  • SELECT * FROM user age>20 OR id>1000 //年龄>20或者编号>1000   
  •   能理解”并且”和”或者”的区别吧? 2.相反排序.与正排序比,反排序只需要加一个词

    SQL代码
  • SELECT * FROM user age>20 AND id>1000 //年龄>20并且编号>1000   
  • SELECT * FROM user age>20 OR id>1000 //年龄>20或者编号>1000   
  •  

    SQL代码
  • SELECT * FROM user ORDER BY id DESC //读全表,并按id反排序(即大的编号排前面)   
  •  3.读取中间一部分记录.例如从10到204.读取一部分字段.有时候字段太多的时候管用.比如只想知道张三的编号

    SQL代码
  • SELECT * FROM user LIMIT 10,10  //从第10条开始,读取10条.   
  •  

    SQL代码
  • SELECT id FROM user WHERE name = ‘张三’  
  • //或者还需要知道年龄   
  • SELECT id,age FROM user WHERE name=‘张三’  
  •    
  • ………

    注意事项,各字段不用按顺序写,添加记录的时候也一样,不过字段名和值要一一对应,例如name字段放第二位,后面的姓名就填在第二位.

     

     

    名称 类型 长度 允许空? (主键?) 备注
    id int    主键(自增列)
    title varchar 50   标题
    content varchar 50   内容
    addtime datetime     加入时间
    class varchar 20   分类
    author varchar 20   作者
    click int     点击数
    分类: PHP技术文章 标签:
    1. 本文目前尚无任何评论.
    1. 本文目前尚无任何 trackbacks 和 pingbacks.