PHP之路——MySql基础操作语句
2016-05-20 21:00
609 查看
1,创建数据库,create datebase 数据库名,在这里kenan建立一个数据库名为myfirstdb
2,查看所有的数据库
3,选择数据库,只有先选择数据库,才能在选择的数据库中进行数据库操作
4,删除数据库
1,建立数据库表
这里创建了一个名为user 的表,id为int型的,auto_increatement表明这个是自增字段,primary key表明这个是主键,username varchar(50)表明userame是可变的字符长,not null表明该字段不能够为空,createtime datetime 字段cratetime是日期时间类型的。
2, 查看表结构
3,修改表结构
添加列
修改列
修改后的表结构
4,删除表
5,插入数据
6,查询数据
6,带有where字句的条件查询
7,group by 对查询结果进行分组
8,order by 对结果进行排序
9,distinct的用法
10,like模糊查询
11,LIMIT 限定结果行数,用来进行分页查询
12,修改记录
13,删除记录
create database myfirstdb;
2,查看所有的数据库
show databases;
3,选择数据库,只有先选择数据库,才能在选择的数据库中进行数据库操作
use myfirstdb;
4,删除数据库
drop database myfirstdb;
数据库的增删改查
这里要先使用 use来选择要操作的数据库1,建立数据库表
use myfirstdb; create table user( id int auto_increment primary key, username varchar(50) not null, password varchar(50) not null, createtime datetime, )
这里创建了一个名为user 的表,id为int型的,auto_increatement表明这个是自增字段,primary key表明这个是主键,username varchar(50)表明userame是可变的字符长,not null表明该字段不能够为空,createtime datetime 字段cratetime是日期时间类型的。
2, 查看表结构
mysql> desc user; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(50) | NO | | NULL | | | password | varchar(50) | NO | | NULL | | | createtime | datetime | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+ 4 rows in set (0.01 sec) mysql> show columns from user; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(50) | NO | | NULL | | | password | varchar(50) | NO | | NULL | | | createtime | datetime | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+ 4 rows in set (0.01 sec)
在这里展示了两种查看表结构的方式
3,修改表结构
添加列
mysql> alter table user add age int; Query OK, 0 rows affected (0.25 sec) Records: 0 Duplicates: 0 Warnings: 0
修改列
mysql> alter table user modify username varchar(30); Query OK, 0 rows affected (0.19 sec) Records: 0 Duplicates: 0 Warnings: 0
注意关键词 modify
修改后的表结构
mysql> desc user; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(30) | YES | | NULL | | | password | varchar(50) | NO | | NULL | | | createtime | datetime | YES | | NULL | | | age | int(11) | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+ 5 rows in set (0.01 sec)
4,删除表
mysql> drop table user; Query OK, 0 rows affected (0.03 sec)
5,插入数据
mysql> insert into user values(null,'kenan','kenan',now()); Query OK, 1 row affected (0.13 sec)
这里使用了日期函数,表示当前时间和日期,字符串要用单引号引起来
6,查询数据
mysql> select * from user; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | +----+----------+----------+---------------------+ 1 row in set (0.00 sec) mysql> select username,password from user; +----------+----------+ | username | password | +----------+----------+ | kenan | kenan | +----------+----------+ 1 row in set (0.00 sec)
第一句表示查询所有的字段从user表里边,在这里*表示所有,第二句表示单独查询username和password字段
6,带有where字句的条件查询
mysql> select * from user where id > 1; mysql> select * from user where username = 'kenan'; mysql> select * from user where username = 'kenan' and id = 1;
这里分别进行了三个带有where字句的子查询,分别对id,和username进行限制,用and 连接两个限制条件
7,group by 对查询结果进行分组
mysql> select * from user; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 2 | lele | lele | 2012-10-31 15:01:20 | | 3 | kenan | lele | 2012-10-31 15:06:46 | +----+----------+----------+---------------------+ 3 rows in set (0.00 sec) mysql> select * from user group by username; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 2 | lele | lele | 2012-10-31 15:01:20 | +----+----------+----------+---------------------+ 2 rows in set (0.04 sec) mysql> select username,avg(id) from user group by username; +----------+---------+ | username | avg(id) | +----------+---------+ | kenan | 2.0000 | | lele | 2.0000 | +----------+---------+ 2 rows in set (0.04 sec) mysql> select username,sum(id) from user group by username; +----------+---------+ | username | sum(id) | +----------+---------+ | kenan | 4 | | lele | 2 | +----------+---------+ 2 rows in set (0.03 sec)
这里展示的group by的用法,首先第一句是按照username分组,所以 username相同的数据会认为是一组 只显示第一条数据,第二个sql语句和第三个sql语句用了两个分组函数avg(),sum()函数,这两个函数 呢,是跟group by 配合使用的,avg()是用来求这一组数据的平均值,而sum()是用来求这一组数据的 和。
8,order by 对结果进行排序
mysql> select * from user; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 2 | lele | lele | 2012-10-31 15:01:20 | | 3 | kenan | lele | 2012-10-31 15:06:46 | +----+----------+----------+---------------------+ 3 rows in set (0.00 sec) mysql> select * from user order by username; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 3 | kenan | lele | 2012-10-31 15:06:46 | | 2 | lele | lele | 2012-10-31 15:01:20 | +----+----------+----------+---------------------+ 3 rows in set (0.00 sec) mysql> select * from user order by id; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 2 | lele | lele | 2012-10-31 15:01:20 | | 3 | kenan | lele | 2012-10-31 15:06:46 | +----+----------+----------+---------------------+ 3 rows in set (0.00 sec) mysql> select * from user order by id desc -> ; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 3 | kenan | lele | 2012-10-31 15:06:46 | | 2 | lele | lele | 2012-10-31 15:01:20 | | 1 | kenan | kenan | 2012-10-30 21:46:31 | +----+----------+----------+---------------------+ 3 rows in set (0.00 sec) mysql> select * from user order by username,id; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 3 | kenan | lele | 2012-10-31 15:06:46 | | 2 | lele | lele | 2012-10-31 15:01:20 | +----+----------+----------+---------------------+ 3 rows in set (0.00 sec)
在这里第一个sql语句,查出所有的user表中的数据,默认是按照你插入时的数据来排序,就是id递增 第二句是 按照username排序,这个会比较username的首字母 order by id 是按照id递增排序 order by id desc 是按照id递减排序,这里大家明白 desc的作用了吧 order by username,id是添加了两个排序条件,首先按照username排序,username相同的话,会按照id排序 在排序中如果遇到NULL值,把NULL值按照最小的值来处理
9,distinct的用法
mysql> select distinct username from user; +----------+ | username | +----------+ | kenan | | lele | +----------+ 2 rows in set (0.00 sec)
distinct的是去重,然后把不重复的查询出来
10,like模糊查询
mysql> select * from user where username like 'ke%'; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 3 | kenan | lele | 2012-10-31 15:06:46 | +----+----------+----------+---------------------+ 2 rows in set (0.00 sec) mysql> select * from user where username like '_e%'; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | | 2 | lele | lele | 2012-10-31 15:01:20 | | 3 | kenan | lele | 2012-10-31 15:06:46 | +----+----------+----------+---------------------+ 3 rows in set (0.01 sec)
在这里用了like模糊查询 第一个sql语句,是查询出来 uername 以 ke 开头的 行 第二个sql语句,是查询出来 username 的第二个字母是e的行 在这里%表示0或多个字符,_代表一个字符
11,LIMIT 限定结果行数,用来进行分页查询
mysql> select * from user limit 1; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 1 | kenan | kenan | 2012-10-30 21:46:31 | +----+----------+----------+---------------------+ 1 row in set (0.00 sec) mysql> select * from user limit 1,2; +----+----------+----------+---------------------+ | id | username | password | createtime | +----+----------+----------+---------------------+ | 2 | lele | lele | 2012-10-31 15:01:20 | | 3 | kenan | lele | 2012-10-31 15:06:46 | +----+----------+----------+---------------------+ 2 rows in set (0.00 sec)
limit的两种用法 第一种limit 1这个是显示查询出来的数据的第一条 当让1换成x,就是x条 第二种limit 1,2这里limit带有的两个参数 首先我们把查询出来的数据进行编号,从0号开始(当然这个编号是不存在的,就是说表内不存在这个字段),它不是id 这个编号是便于我们理解人为的编号 然后第一个参数代表的含义呢,就是要显示的数据的编号 第二个参数表示的就是从刚刚编号开始(包含选中的编号)显示多少条数据 分页用法,要显示第x页的数据,每页显示y条 首先计算第x也的数据的开始编号是(x-1)*y 所以这个sql语句应该这样写 select * from user limit (x-1)*y,y;
12,修改记录
mysql> update user set createtime = now() where username = 'kenan'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0
这里把user表中的所有username叫做kenan的记录更新createtime字段,更新为当前时间
13,删除记录
mysql> delete from user where username = 'lele'; Query OK, 1 row affected (0.06 sec)
这里删除user表中所有username叫做lele的记录 原文链接:http://soukenan.blog.51cto.com/5130995/1045340
相关文章推荐
- PHP ajax 实现三级联动
- yii2框架-composer的自动加载
- yii2框架-理解yii2的架构
- PHP Yii框架过滤器用法详解
- 屏蔽PHP默认设置中的Notice警告的方法
- php测试题整理(0519)
- 学习笔记-Laravel 数据库 聚合+Join 查找语句。
- php xml删除节点
- 介绍使用PHP框架的十大理由
- php xml修改节点中的属性和值
- PHP新手之学习类与对象
- php变量详解
- PHPMailer发送邮件demo示例
- PHP在Windows环境下安装Imagick扩展
- PHP开发者应了解的24个库
- php 在原有xml文件中追加节点
- 8 个必备的PHP功能开发
- PHP 代码优化技巧大盘点
- ViewPager+Fragment最优实现方案
- php 创建xml文件