一、数据库的创建
1、创建数据库
1//创建数据库
2$createDb = "CREATE DATABASE database_name";
2、检测数据库创建结果
2.1、面向对象方法
1if($conn -> query($createDb) === true){
2 echo "数据库创建成功!";
3}else{
4 echo "Error creating database: " . $conn->error;
5}
2.2、面向过程方法
1if(mysqli_query($conn,$createDb)){
2 echo "数据库创建成功!";
3}else{
4 echo "Error creating database: " . mysqli_error($conn);
5}
二、创建数据表
1、创建表
语法:
CREATE TABLE table_name();
实例
1$createTable = "CREATE TABLE members (2id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,3姓名 VARCHAR(10) NOT NULL,4电话 VARCHAR(13) NOT NULL,5内容 VARCHAR(60) NOT NULL6)
参数说明
约束 | 说明 |
---|---|
NOT NULL | 每一行都必须含有值(不能为空),null 值是不允许的。 |
DEFAULT | 规定没有给列赋值时的默认值。 |
UNIQUE | 保证某列的每行必须有唯一的值。 |
CHECK | 保证列中的值符合指定的条件。 |
FOREIGN KEY | 保证一个表中的数据匹配另一个表中的值的参照完整性。 |
PRIMARY KEY | NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 |
2、检测表的创建
2.1、面向对象方法
1if($conn -> query($createTable)===true){
2 echo "数据表创建成功
";
3}else {
4 echo '数据表创建错误:' .$conn -> error;
5}
2.2、面向过程方法
1if(mysqli_query($conn,$createTable)){
2 echo "数据表创建成功
";
3}else {
4 echo '数据表创建错误:' .mysqli_error($conn);
5}
3、向表中插入数据
在创建完数据表后,我们可以向表中插入数据,但须遵循一些语法规则:
PHP 中 SQL 查询语句必须使用引号
在 SQL 查询语句中的字符串值必须加引号
数值的值不需要引号
NULL 值不需要引号
3.1、语法用法
INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)
实例
1...
2//参照上方规则:字符串必须加引号
3$insertData = "INSERT INTO members (姓名,电话,内容)4VALUES ('".$name."',$phone,'".$comment."')";
5
6...
3.2、检测插入数据结果
3.2.1、面向对象方法
1if ($conn->query($insertData) === TRUE) {
2 echo "新记录插入成功";
3} else {
4 echo "Error: " . $insertData . "
" . $conn->error;
5}
3.2.2、面向过程方法
1if (mysqli_query($conn, $insertData)) {
2 echo "新记录插入成功";
3} else {
4 echo "Error: " . $insertData . "
" . mysqli_error($conn);
5}
三、数据库连接
1、面向对象方法
1//数据库连接
2$conn = new mysqli($servername,$username,$password,$database_name);
3
4//连接检测
5if($conn -> connect_error){
6 die("Connection failed:".$conn -> connect_error);
7}else {
8 echo "数据库连接成功。
";
9}
2、面向过程方法
1//数据库连接
2$conn = mysqli_connect($servername,$username,$password,$database_name);
3
4//检测连接
5if(!$conn){
6 die("Connection failed: " .mysqli_connect_error());
7}else {
8 echo "数据库连接成功。";
9}
四、从数据库读取数据
语法:
SELECT column_name(s) FROM table_name
SELECT * FROM table_name
读取所有字段
1、面向对象方法
1//读取数据
2$fecth = "SELECT * FROM members";
3$res = $conn -> query($fecth);
4
5//检测读取结果并输出
6if($res -> num_rows > 0){
7while($row = $res->fetch_array()){
8 echo << 9
10 {$row["id"]}11 {$row["姓名"]}12 {$row["电话"]}13 {$row["内容"]}14
15
16HTML;
17}
18}else{
19echo "0结果";
20}
2、面向过程方法
1//读取数据
2$fecth = "SELECT * FROM members";
3$res = mysqli_query($conn,$fecth);
4
5//检测读取结果并输出
6if(mysqli_num_rows($res) > 0){
7while($row = mysqli_fetch_array($res)){
8 echo << 9
10 {$row["id"]}11 {$row["姓名"]}12 {$row["电话"]}13 {$row["内容"]}14
15
16HTML;
17}
18}else{
19echo "0结果";
20}
拓展
1、WHERE
WHERE 子句用于提取满足指定标准的的记录。
语法:
1SELECT column_name(s)
2FROM table_name
3WHERE column_name operator value
实例
1$where = "SELECT * FROM members WHERE 姓名='张三' ";
2、ORDER BY
ORDER BY 关键词用于对记录集中的数据进行排序。
默认升序排序,可以使用 DESC 进行降序排序。
语法:
1SELECT column_name(s)
2FROM table_name
3ORDER BY column_name(s) ASC|DESC
实例
1$order = "SELECT * FROM members ORDER BY id DESC;
根据两列进行排序
可以根据多个列进行排序。当按照多个列进行排序时,只有第一列的值相同时才使用第二列:
1SELECT column_name(s)
2FROM table_name
3ORDER BY column1, column2
特殊:拼音排序
拼音排序需要根据字符集采用的编码决定使用方法
字符集 | 使用方法 |
---|---|
gbk (中文编码) | 直接在查询语句后边添加 ORDER BY |
utf8 (万国码) | 先对字段进行转码然后排序。 方法: CONVERT(row_title using gbk) |
实例:现有表格如下。对表格按姓名拼音排序
id | 姓名 | 性别 |
---|---|---|
1 | 丁一 | 女 |
2 | 牛二 | 男 |
3 | 张三 | 男 |
执行操作(由于原本是拼音升序,所以这里我们用降序来区别)
1$orderPy = "SELECT * FROM members2ORDER BY CONVERT(姓名 using gbk) DESC";
输出结果:
id | 姓名 | 性别 |
---|---|---|
3 | 张三 | 男 |
2 | 牛二 | 男 |
1 | 丁一 | 女 |
3、UPDATE
UPDATE 语句用于更新数据库表中已存在的记录。
语法:
1UPDATE table_name
2SET column1=value, column2=value2,...
3WHERE some_column=some_value
注意:UPDATE 语法中的 WHERE 子句。WHERE 子句规定了哪些记录需要更新。如果您想省去 WHERE 子句,所有的记录都会被更新!
实例
现有如下表格:(已设置降序排列)
id | 姓名 | 电话 | 内容 |
---|---|---|---|
3 | 张三 | 333 | 我叫张三 |
2 | 牛二 | 222 | 我叫牛二 |
1 | 丁一 | 111 | 我叫丁一 |
修改更新表中 张三 为 李四
1$updateData = "UPDATE members SET 姓名='李四'2WHERE 姓名 = '张三';
输出结果
id | 姓名 | 电话 | 内容 |
---|---|---|---|
3 | 李四 | 333 | 我叫张三 |
2 | 牛二 | 222 | 我叫牛二 |
1 | 丁一 | 111 | 我叫丁一 |
UPDATE方法可以同时修改一条数据的多个字段
修改更新表中
张三 ——> 李四
333 ——> 444
我叫张三 ——> 我叫李四
1$updateData = "UPDATE members SET 2姓名='李四',电话 = '444', 内容 = '我叫李四'3WHERE 姓名 = '张三' ;
输出结果:
id | 姓名 | 电话 | 内容 |
---|---|---|---|
3 | 李四 | 444 | 我叫李四 |
2 | 牛二 | 222 | 我叫牛二 |
1 | 丁一 | 111 | 我叫丁一 |
id设置为
PRIMARY KEY
,不要轻易去改变它,若需要改变,不可与已存在的重复,否则无法更新数据。
4、DELETE
DELETE 语句用于从数据库表中删除行。
语法:
1DELETE FROM table_name
2WHERE some_column = some_value
注意:DELETE中的WHERE子句。WHERE 子句规定了哪些记录需要删除。如果您想省去 WHERE 子句,所有的记录都会被删除!
实例
现有表格同上,需要删除id为3的行:
1$delete = " DELETE FROM members2WHERE 姓名 = '李四';
输出结果:
id | 姓名 | 电话 | 内容 |
---|---|---|---|
2 | 牛二 | 222 | 我叫牛二 |
1 | 丁一 | 111 | 我叫丁一 |
drop
truncate
和 delete
都可以对数据表进行删除操作,具体区别如下表:
语句 | 含义 |
---|---|
drop | 删除表。删除表及其结构。不可回滚 |
truncate | 清空表。删除表中所有数据,保留表结构。不可回滚 |
delete | 删除行。删除操作作为事务记录在日志中。可以回滚 |
TRUNCATE
与不带WHERE
的DELETE
都是删除表数据,保留表结构。
好好学习
有趣的灵魂在等你