创建数据库和表
-
CREATE DATABASE 语句
用于在Mysql中创建数据库
-
CREATE TABLE语句
用于创建Mysql表
字段限制条件:
- NOT NULL 值不能为空
- DEFAULT value 设置默认值
- UNSIGNED 使用无符号数值类型,0及正数
- AUTO INCREMENT 设置值在新增记录是每次自动增长
- PRIMARY KEY 唯一标识
连接数据库
使用mysqli扩展:
$conn=new mysqli($servername, $username, $password, $dbname);
操作数据库
读取数据
使用select语句
SELECT * FROM table_name
插入数据
$sql="INSERT INTO TableName(Column1,Column2,......) VALUES (value1,value2,......);
如果设置了AUTOINCREMENT或TIMESTAMP,不需要再SQL查询语句中指定值;Mysql会自动为该列添加值
插入多条数据
$sql="...;";
$sql.="...;";
$sql.="...";
......
然后用mysqli_multi_query($sql) 来执行多条SQL语句
注意:每个SQL语句必须使用分号分开,因为这是把多个SQL语句用.连接成一个字符串
更新数据
UPDATE 语句用于中修改数据库表中的数据。
UPDATE table_name SET column1=value1,column2=value2 WHERE some_column=some_value
删除数据
DELETE 语句用于从数据库表中删除行。
DELETE FROM table_name WHERE some_column = some_value
预处理语句
预处理语句的工作原理如下:
- 预处理:创建 SQL 语句模板并发送到数据库。预留的值使用参数 “?” 标记 。例如:
- INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
- 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出。
- 执行:最后,将应用绑定的值传递给参数("?" 标记),数据库执行语句。应用可以多次执行语句,如果参数的值不一样。
相比于直接执行SQL语句,预处理语句有两个主要优点:
- 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。
- 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。
- 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。
总结起来就是:用于执行多个相同的SQL语句,并且执行的效率更高,预留的值使用参数
"?"
标记。将问号替换为整形(i),字符串(s),双精度浮点值(d)和布尔值(b)。
INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
$stmt->bind_param("sss", $firstname, $lastname, $email);
where子句
WHERE 子句用于提取满足指定标准的的记录。
SELECT column_name(s) FROM table_name WHERE column_name operator value
排序ORDER BY
- ORDER BY 关键词用于对记录集中的数据进行排序。
- ORDER BY 关键词默认对记录进行升序排序。
- 如果你想降序排序,请使用 DESC 关键字。
- ORDER BY用在from 后面,如果存在where子句,则用在where子句后面
SELECT column_name(s) FROM table_name ORDER BY column_name(s) ASC|DESC
常用函数
-
num_rows()
判断返回的数据行数
-
fetch_assoc()
将结果集放入到关联数组
-
fetch_row()
从结果集中取得一行,并作为枚举数组返回
-
mysqli_query(connection, query, resultmode)
参数 描述 connection 必需。规定要使用的 MySQL 连接。 query 必需,规定查询字符串。 resultmode 可选。一个常量。可以是下列值中的任意一个:
- MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
- MYSQLI_STORE_RESULT(默认)针对成功的select,show,describe,explain查询,将返回一个mysqli_result对象,针对其他成功的查询,返回true。失败都返回false
-
mysqli_set_charset($connection, ‘utf-8’)
连接数据库后需设置mysql的编码
-
date()
把时间戳转换为可读性更好的如日期和时间
date(“y/m/d”) <——> 2019/10/1
实践
PHP与Mysql的实践请参考:https://blog.csdn.net/BUCTOJ/article/details/93107522