您的位置:首页 > 编程语言 > PHP开发

php操作mysql数据库

2014-02-25 18:55 561 查看
1. 插入数据

  user表中有四个字段分别是id,name,sex,age,其中id为主键自增。

  向表中插入一条完整的记录 insert into user values(null,'张三',’男‘,'18');

  插入字段的第一个值为表的主键,给该字段赋值为null或空,mysql会自动为其赋相应的值。

  向表中插入一条不完整的记录 insert into table (name,age) values('李四','20');

  在insert后面可以添加low_priority或delayed关键字。low_priority关键字意味着当数据不是从表格读出时,系统必须等待并且稍后再插入。delayed关键字意味着插入的数据将被缓存。如果服务器繁忙,我们可以继续运行其他查询,而不是等待这个insert操作的完成。

  上述两个关键字以后可以指定ignore(可选的)。这意味着如果尝试插入任何可能导致重复唯一键的记录行,这些记录将被自动忽略。

2. 查询数据

  select语句的基本格式

  select [options] items

  [into file_details]

  from tables

  [where conditions]

  [group by group_type]

  [having where_definition]

  [order by order_type]

  [limit limit_criteria]

  [procedure proc_name(arguments)]

  [lock_options]

  ;

  2.1 满足特定条件的查询

    select * from user where id = 3;

    where字句中最长用到的条件

    基本比较操作符:= , > , < , >= , <= , !=或<> ,

    描述条件:

      is not null    不为空

      is null      空

      between    例:between 6 and 10 ;  在某一区间

      in       测试一个值是否在某个集合里

      not in      测试一个值是否不在某个集合里

      or       满足几个条件中的任何一个即可      

      and       必须同时满足每个条件

    模式匹配

      like       例:name like (’李%‘)  用简单的mysql模式匹配检查一个值是否匹配另一个模式  

      not like     同上相反

      regexp     常规表达式       检查一个值是否匹配一个常规表达式

  2.2 从多个表中获取数据

    1. 双表连接

      select order.orderid,order.amount,order.date

      from customers , orders

      where customers.name = "李四" and customers.customerid = order.customerid;

      解释:在orders表中查找李四这个人的购买记录的orderid,amount,date,但是order这个表中没有姓名,不能直接按姓名查找,order表中的customerid字段与customers中的customerid字段相同,customers表中包含购买者的姓名。

    2. 关联多个表

    3. 左连接--查找不匹配的记录,或者不满足查询条件的记录,或者是除了匹配到的记录外剩下的记录

    3. 表的别名--在查询的开始给表起另外一个名字,似的后面查询更加方便,使用关键字as

      select c1.name

      from customers as c1,order as c2

      where c1.id = c2.id;

    4.mysql中关联类型

      笛卡尔乘积    所有要查询的表的所有行的所有关联。

      完全关联,交叉关联     同上

      内部关联     如果没有where条件,等价于完全关联,通常需要一个where条件使它成为内部关联。

      等价关联     在where中使用一个’=‘号的表达式条件。

      左关联      查找不匹配的记录,或者不满足查询条件的记录,或者是除了匹配到的记录外剩下的记录

    5. 特定条件查询数据

      1.特定顺序

        select name address from user order by name(asc);查询结果以名字的顺序升序(默认)排列

        select name address from user order by name desc;查询结果以名字的顺序降序排列

      2. 分组与合计数据

        mysql中的合计函数

        avg(列)      指定列的平均值

        count(项目)     如果指定一列,这将给出本列中非空(null)值的列数,如果在列的前加distinct单词,将得到本列中不同值的列数,如果指定count(*),将得到包含空值的行在内的行数

        min(列)       指定列的最小值

        max(列)      指定列的最大值

        std(列)       指定列的标准背离值

        sun(列)       指定列的所有值的和

        例:select max(amount) from orders;

          select customerid , avg(mount) from orders group by customerid;

      3. 选择要返回的记录行

        select name from customer limit 2,3;

        其中3代表要返回3行,2代表从第二行开始,行号是以0开始索引的。

      4. 使用子查询

        select id , amount

        from orders

        where amount = (select max(amount) from orders);

        子查询的效率较低,且多数查询可以在没有子查询的条件下完成。

  3. 更新数据

   格式

    update [low_priority] [ignore] tablename

    set colum1=value1,colum2=value2*2(这里可以是表达式)

    [where conditions] -- 限制条件

    [order by colum]  -- 通常使用limit时使用

    [limit number]    -- 限制受影响的行数

    例:update customers set price = '$250' where customerid = 4;

  4. 修改表的结构

    格式 alter table [ignore] tablename alteration [,altertion...]

    alter table 可以完成的修改

  5. 删除数据库中的记录

    格式

    delete [low_priority] [quick] [ignore] from table_name

    [where condition]

    [order by]

    [limit number]

    例:delete from customers where id=5;

  6. 删除表

    drop table tablename;

  7. 删除数据库

    drop database db_name;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: