当前位置: 首页 > news >正文

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

转载于:https://www.cnblogs.com/xj76149095/p/5513420.html

相关文章:

  • windows下读取Linux分区软件
  • Angular.js Services
  • 折腾Openoffice---解决中文和注册问题(原创)
  • react 入门到放弃 之 webpack
  • 如何用Beyond Compare对比压缩文件
  • iOS推送通知的实现步骤
  • 异步与并行~大话目录
  • MySQL in不走索引
  • linu系统管理中和shell编程中常用的技巧
  • 云栖社区
  • linux下升级python版本
  • CentOS 7 网络配置
  • Report Server Windows Service (MSSQLSERVER) 无法与报表服务器数据库建立连接 错误ID107...
  • 滴滴算法大赛算法解决过程 - 机器学习
  • 构建之法阅读笔记4
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • CSS居中完全指南——构建CSS居中决策树
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Fundebug计费标准解释:事件数是如何定义的?
  • Linux CTF 逆向入门
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • SQLServer插入数据
  • ucore操作系统实验笔记 - 重新理解中断
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue ES6 Jade Scss Webpack Gulp
  • 从零开始的无人驾驶 1
  • 理清楚Vue的结构
  • 力扣(LeetCode)965
  • 批量截取pdf文件
  • 使用common-codec进行md5加密
  • 用Visual Studio开发以太坊智能合约
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • (AngularJS)Angular 控制器之间通信初探
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C++17) std算法之执行策略 execution
  • (Matlab)使用竞争神经网络实现数据聚类
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (七)Knockout 创建自定义绑定
  • (顺序)容器的好伴侣 --- 容器适配器
  • (一)VirtualBox安装增强功能
  • (转)关于多人操作数据的处理策略
  • (转载)Google Chrome调试JS
  • .aanva
  • .NET 反射 Reflect
  • .Net 垃圾回收机制原理(二)
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NetCore 如何动态路由
  • .net反混淆脱壳工具de4dot的使用
  • .Net下的签名与混淆
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [8-27]正则表达式、扩展表达式以及相关实战