创建数据库
CREATE DATABASE stu SET utf8mb4 COLLATE utf8mb4_ general_ci ;
MySQL支持多种存储引擎,以插拔式。5.5以前默认使用MYISAM ,之后默
认使用Innodb。
怎么选择?
1:傻瓜式操作,不知道如何选择就选择Innodb。
2:在写入和查找为主的表,使用MYISAM速度更快。比如日志类型的数据表。
3: 当需要使用事务和外键约束时务必选择Innodb。
事务
要么成功,要么失败!
失败时候进行回滚 rollback,增删改查回无效。
成功进行提交commit,持久化到硬盘。
如何选择数据类型?
选择合适的数据类型设置最恰当的长度
1.整型
纯数字,需要表示大小。
-
tinyint
占用1字节
有符号/无符号 -128~127/0 ~255 -
samllint
占用2字节
有符号/无符号 65535 -
mediumint
占用3字节
有符号/无符号 16777216 -
int
占用4字节
有符号/无符号 4294967296 -
bigint
占用8字节 2^64
有符号/无符号
2.字符类型
保存和检索的方式不同
- char(M)
固定长度的字符类型
假设M=10;最大只能存储10个字节
固定占用10个字节的空间
当读取时, char类型尾部空格会被去除。因为char是定长,处理速度比varchar快,处理速度比varchar快,可能浪费存储空间。
- varchar(M)
可变长度的字符类型
假设M=10;最大只能存储10个字节需要占用11字节的空间, 0-255需要-
个字节来表示长度,大于255需要2字节来表示长度。
根据实际内容长度占用时间的存储空间。
varchar虽然是可变的字符类型,在
定义时依然需要指定最合理的长度。
3.日期时间
- date日期
- time时间
- datetime日期时间
- timestamp日期时间会显示当前实际时区的时间,存储范围较小, 2038年。
- Year .年份
在实际开发中,很常用的是保存时间戳。int, time0),strtotime0,mktime0;
4.浮点型和定点型
- 单精度float(M, N) 插入时会进行四舍五入
- 双精度double(M , N) 插入时会进行四舍五入
- 定点型decimal(M , N), 实际以字符串形式+ 存放,更精确。
在写入数据小数位超出指定时,根据SQL MODE设置有不同情况:
1 :正常写入,但是有给出警告。
2:直接写入失败。
3 :可以通过show varibales like ‘%sql
_mode%’
一个原则:跟货币有关系的建议用定点型decimal
不能直接对浮点型进行比较0.1+0.7 = 0.8
字段的命名
不建议使用大写
不建议使用MYSQL内置的关键字select update insert delete
代码测试
<?php
$mysql_server_name='localhost';
$mysql_username='root';
$mysql_password='';
$mysql_database='stu';
//连接数据库的信息
$conn=mysqli_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); //连接数据库
if (mysqli_connect_errno($conn)) {
die("连接 MySQL 失败: ".mysqli_connect_error());
}
$sql="select * from stuinfo";
//执行SQL语句
$query = $conn->query($sql);
while($row = $query->fetch_array()){
echo $row['idcard'],'<br>';
}
//释放资源
$query->close();
//关闭连接
$conn->close();
?>
数据库
结果