PHP:MySQL常用DDL数据定义语言, DML数据库操作语言,pdo操作数据库的对象方法
一.常用DML数据库操作语言
SQL语句语法规范
常用MySQL的关键字我们需要大写,库名、表名、字段名称等使用小写
SQL语句支持折行操作,拆分的时候不能把完整单词拆开
数据库名称、表名称、字段名称不要使用MySQL的保留字,如果必须要使用,需要用反引号``将其括起来
命令 | 含义 |
---|---|
MySQL -uroot -ppassword | 登入数据库,-u账号,-p密码 |
exit | 退出数据库 |
SELECT USER(); | 得到登陆的用户 |
SELECT NOW(); | 得到当前的日期时间 |
SELECT VERSION(); | 得到MySQL的版本信息 |
SELECT DATABASE(); | 得到当前打开的数据库 |
USE db_name; | 打开指定数据库 |
SHOW TABLES; | 查看当前数据库下已有数据表 |
DESC tbl_name; | 查看表结构 |
①MySQL -uroot -ppassword 登入数据库,-u账号,-p密码
②SELECT USER();得到登陆的用户
③SELECT NOW();得到当前的日期时间
④SELECT VERSION();得到MySQL的版本信息
⑤SELECT DATABASE();得到当前打开的数据库
⑥USE db_name;打开指定数据库
⑦SHOW TABLES;查看当前数据库下已有数据表
⑧DESC tbl_name;查看表结构
二.常用DDL数据定义语言
添加记录
INSERT tbl_name[(字段名称…)] SELECT 字段名称,… FROM tbl_name [WHERE 条件]
INSERT [INTO] tbl_name[(col_name,…)] {VALUE|VALUES}(VALUES…);
修改记录
UPDATE tbl_name SET 字段名称=值,字段名称=值 [WHERE 条件]
如果不添加条件,整个表中的记录都会被更新
删除记录
TRUNCATE [TABLE] tbl_name;
清除表中所有记录
会重置AUTO_INCREMENT的值
DELETE FROM tbl_name [WHERE 条件]
如果不添加条件,表中所有记录都会被删除
DELETE 清空数据表的时候不会重置AUTO_INCREMENT的值,可以通过ALTER 语句将其重置为1
彻底清空数据表
查询记录
SELECT FROM tbl_name; 所有字段
SELECT select_expr,… FROM tbl_name
[WHERE 条件]
[GROUP BY {col_name|position} HAVING 二次筛选]
[ORDER BY {col_name|position|expr} [ASC|DESC]]
[LIMIT 限制结果集的显示条数]查询表中所有记录
指定字段的信息
SELECT 字段名称,… FROM tbl_name
库名.表名
SELECT 字段名称,… FROM db_name.tbl_name;
给字段起别名
SELECT 字段名称 ,… FROM tbl_name [AS] 别名;
表名.字段名的
SELECT tbl_name.col_name,… FROM tbl_name;
三.MySQL中的数据类型
数值型
整数型
浮点型
字符串类型
CHAR效率高于VARCHAR,CHAR相当于拿空间换时间,VARCHAR拿时间换空间
CHAR默认存储数据的时候,后面会用空格填充到指定长度;而在检索的时候会去掉后面空格;VARCHAR在保存的时候不进行填充,尾部的空格会留下
TEXT列不能有默认值,检索的时候不存在大小写转换
日期时间类型
三.PDO连接数据库操作
①用户名重复检测
②用户名注册信息传送到数据库表
注册按钮代码块
<?php//连接数据库require "/xp/phpstudy_pro/WWW/www.zwz.com/zwz/0511/config/PDO.php";session_start();$username = isset($_POST["username"]) ? $_POST["username"] : null;$password = isset($_POST["password"]) ? md5( $_POST["password"]) : null;$password2 = isset($_POST["password2"]) ? $_POST["password2"] : null;$captcha = $_POST["captcha_value"];//时间戳$create_time = time();//sql 语句 数据库表添加$insert = "INSERT INTO `User` SET `uname` = '{$username}', `pwd` = '{$password}',`create_time` = '{$create_time}';";$connect = $pdo->exec($insert);$tips;if ($connect !== 0) { $tips = 0;}else { $tips = 1 ;}if (!empty($username) && !preg_match("/^[A-Za-z]/i",$username)){ $tips = 0 ;}else { $tips = 1 ;}if ((!empty($password) && !empty($password2)) && !(strcmp($password,$password2))){ $tips = 1 ;}else { $tips = 0 ;}if(strtolower($_SESSION["captcha"]) === strtolower($captcha)){ $_SESSION["captcha"]=""; $tips = 1 ;}else { $tips = 0 ;}if ($tips === 1) { echo json_encode(["id" => 1 , "mgs" => "注册成功"],320);}else { echo json_encode(["id" => 0 , "mgs" => "注册失败"],320);}//点击按钮$("button[name='button']").click(function () { let data = {}; //用户名数据 data.username = $("input[name = 'username']").val(); //密码数据 data.password = $("input[name = 'password']").val(); data.password2 = $("input[name = 'password2']").val(); // console.log(data); //判断是否用户输入空值 $.post( "index.php", data, function (res) { if (res.id == 1) { alert("注册成功"); } else { alert("注册失败"); return; } }, "json" );});
用户名重复检测代码块
<?php//引入服务器require "/xp/phpstudy_pro/WWW/www.zwz.com/zwz/0511/config/PDO.php";session_start();//获取用户输入的用户名$username = $_POST['username'];$select = "SELECT * FROM USER WHERE UNAME = '{$username}'; ";$connect = $pdo->query($select)->fetchAll(PDO::FETCH_ASSOC);if (empty($connect) || !preg_match("/^[A-Za-z]/i",$username) ) { echo json_encode(["id" => 1, "mgs" => "不是字母" ],320);}else { echo json_encode(["id" => 0, "mgs" => "是字母" ],320);}//设置用户名失去焦点的时候检查第一个字母是否是字母$("input[name = 'username']").blur(() => { var data = {}; //用户名数据 data.username = $("input[name = 'username']").val(); //密码数据 data.password = $("input[name = 'password']").val(); data.password2 = $("input[name = 'password2']").val(); $.post( "username.php", data, function (res) { if (res.id == 1) { $("#error_msg").html("<span style='color:green'; >用户名不存在</span>"); } else { $("#error_msg").html("<span style='color:red'; >用户名存在</span>"); } }, "json" );});