PHP之路——MySql基础操作语句
1,创建数据库,create datebase 数据库名,在这里kenan建立一个数据库名为myfirstdb
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之路——MySql基础操作语句的更多相关文章
- 【MySQL】MySQL基础操作语句
mysql基础操作语句,包括数据库的增.删.切换,以及表的增.删.改.查.复制. 创建数据库 mysql> create database tem; 使用数据库 mysql> use te ...
- Mysql基础操作语句
SQL 简单的增删改查 不区分大小写, 表名和字段名可不加引号 查询语句 SELECT * FROM `table_name`; -- 注释 CTRL+/ : 注释 CTRL+/ : 取消注释 /* ...
- MySQL基础操作&&常用的SQL技巧&&SQL语句优化
基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t ...
- MySQL数据库基础操作语句
SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,分为3种类型: 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER 2.DM ...
- MYSQL基础操作
MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...
- MYSQL 基础操作
1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...
- mysql数据库优化课程---13、mysql基础操作
mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...
- MySQL基础操作(二)
MySQL基础操作 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.注意:使用视图时 ...
- mysql常用操作语句
mysql常用操作语句 1.mysql -u root -p 2.mysql -h localhost -u root -p database_name 2.列出数据库: 1.show datab ...
随机推荐
- lightoj 1013 dp
题目链接:http://lightoj.com/volume_showproblem.php?problem=1013 #include <cstdio> #include <cst ...
- @synthesize和@dynamic分别有什么作用?
@property有两个对应的词,一个是 @synthesize,一个是 @dynamic.如果 @synthesize和 @dynamic都没写,那么默认的就是@syntheszie var = _ ...
- XPath总结(转)
XPath简介 XPath是W3C的一个标准.它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计.目前有XPath1.0和XPath2.0两个版本.其中Xpath1.0是199 ...
- solr5.3.1 集群服务搭建
转http://978538.blog.51cto.com/968538/1710442 一. 安装部署 zookeeper集群部署: 节点: 10.1.12.51:2181 node1 1 ...
- ajax同步刷新
\js\ajax.js //图片形式状态切换 function toggle(url,action,obj,str,id){//状态转换/obj-当前对象/str-传入类型字符串/id-传入ID $. ...
- 杠杠做的全屏随鼠标滚动显示图片,类似于PPT效果
图片有22张,是一张张加载的,耐心点,鼠标一直尝试向下滚就行了. 图片来自<天空之境:乌尤尼盐沼>,一个好美好美的地方 引个流,欢迎去我的博客看看:http://blog.cxycs.co ...
- 【下载分】C语言for循环语句PK自我活动
想了解自己C语言for语句的掌握程度吗?敢和自己PK较量一番吗?參加"C语言for循环语句PK自我活动",仅仅要成绩70分以上.就可赢得CSDN下载分. 12道题目题库动态读取,每 ...
- 搜索-hdu-3720-Arranging Your Team
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3720 题目大意: 有23个人,告诉每个人的名字,能力值,以及踢球的位置.要求选出1个守门员,2个前锋 ...
- Java NIO中核心组成和IO区别
1.Java NIO核心组件 Java NIO中有很多类和组件,包括Channel,Buffer 和 Selector 构成了核心的API.其它组件如Pipe和FileLock是与三个核心组件共同使用 ...
- GridView禁止上下滚动的方法
通常情况下,我们使用GridView来完成类似表格的布局,这种布局,我们只需要设置列数,会自动根据适配器的数据进行适配,非常灵活. GridView其实就是一个容器.允许向其内部添加控件,通常情况下, ...