博客列表 >初识 mysql 数据库

初识 mysql 数据库

超超多喝水
超超多喝水原创
2021年10月23日 17:11:02536浏览

初识 mysql 数据库

数据库与数据表的命名

数据库与数据表可以根据名称的含义使用下划线_进行拼接,如:公司名_项目名_表名

主键

主键是表里的一个关键数据,是每条数据的一个唯一值,一般用作 id,类型为整数、且会跟随创建自增,如果已经存在的 id 被删除,那么其他 id 数值也不会逐个减一或重新计算,而是继续往后延续

mysql 命令书写规范及注意事项

mysql 命令可以是大写,也可以是小写,但是一般我们都按照默认的命令大写,其他字段、数据小写的方式来书写 mysql 代码
mysql 代码中表名跟字段名是需要用反引号``包裹的,字符串的值是用单引号’’包裹

mysql 常用命令

  • 连接数据库:mysql -h localhost -u root -p password;
  • 展示数据库:SHOW DATABASES;
  • 选择数据库:USE mydatabase;
  • 展示数据表:SHOW TABLES;
  • 创建数据库:CREATE DATABASE IF NOT EXISTS test;
  • 创建数据表(以商品用户表为例):
  1. --在test数据库下创建mall_user数据表
  2. CREATE TABLE `test`.`mall_user` (
  3. -- 内容区
  4. -- 创建id字段 整数类型 不为空 备注为用户id
  5. `id` INT NOT NULL COMMENT '用户id' ,
  6. -- 创建username字段 varchar类型,限制长度30 设置utf8mb4编码 排序规则utf8mb4_unicode_ci 不为空 备注为用户名
  7. `username` VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名' ,
  8. -- 创建password字段 varchar类型,限制长度30 设置utf8mb4编码 排序规则utf8mb4_unicode_ci 不为空 备注为用户密码
  9. `password` VARCHAR(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户密码' ,
  10. -- 创建gender字段 TINYINT类型 不为空 备注为区分男女
  11. `gender` TINYINT NOT NULL COMMENT '用户性别:1,男;0,女' ,
  12. -- 创建age字段 TINYINT类型 不为空 备注为用户年龄
  13. `age` TINYINT NOT NULL COMMENT '用户年龄' ,
  14. -- 设置id为主键
  15. PRIMARY KEY (`id`)
  16. -- 存储引擎为InnoDB可事务回滚 编码utf8mb4 排序规则utf8mb4_unicode_ci 备注商城用户表
  17. ) ENGINE = InnoDB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT = '商城用户';
  • 查询 SELECT
  1. -- *默认是查询所有数据,也可以替换为字段名查询某列数据,后面也可以增加WHERE命令进一步增加条件
  2. SELECT * FROM `mall_user`;
  • 修改 UPDATE
  1. -- UPDATE语句中一般必须要加WHERE判断,否则会把字段的所有数据全部修改
  2. UPDATE `mall_user` SET `username` = 'admin' WHERE `id` = 1;
  • 删除 DELETE
  1. -- DELETE语句中也必须要加WHERE判断,否则会收拾行李准备跑路
  2. DELETE FROM `mall_user` WHERE `id` = 1;
  • 新增 INSERT
  1. -- 新增单个数据
  2. INSERT INTO `mall_user` SET `username` = `admin`;
  3. -- 新增一组数据
  4. INSERT INTO `mall_user`(`id`,`username`,`password`,`gender`,`age`)VALUES('','ADMIN','ADMIN123','1','18');
  • 运算符

    • 比较运算符
      |比较|符号|
      |—-|—-|
      |大于|>|
      |小于|<|
      |等于|=|
      |大于等于|>=|
      |小于等于|<=|
      |不等于|<>|
    • 逻辑运算符
      |逻辑|符号|
      |—-|—-|
      |与|AND|
      |或|OR|
      |异或|XOR|
    • 逻辑非 NOT/!
      逻辑非有两种方式一种是 NOT,另一种是!,NOT 常用于判断是否为 NULL,!常与=一起使用,判断是否为非某个值

      1. SELECT * FROM `mall_user` WHERE `username` = 'admin' AND `id` != 1;
      2. SELECT * FROM `mall_user` WHERE `username` = 'admin' AND `password` IS NOT NULL;
    • BETWEEN 查询某个区间内的值

      1. <!-- 查询id大于等于1小于等于2的所有内容 -->
      2. SELECT * FROM `mall_user` WHERE `id` BETWEEN 1 AND 2;
    • LIKE 模糊查询

      模糊查询一般搭配_或者%使用,其中_代表一个字符,在要查询的内容前后加多少个,就相当于是前后有多少个数据,%相当于是所有数据,加在前后,不管有多少全部查询出来

      1. SELECT * FROM `mall_user` WHERE `username` LIKE '__admin__';
      2. SELECT * FROM `mall_user` WHERE `username` LIKE '%admin%';
    • LIMIT 分页
      LIMIT 后面如果只跟一个参数,代表查询前多少条数据,也可以跟两个参数,第一个参数是查询的起始位置,第二个是查询的条数,mysql 数据库里数据的下标与数组相同,也是从 0 开始。

      1. SELECT * FROM `mall_user` WHERE `username` = 'admin' LIMIT 10;
      2. SELECT * FROM `mall_user` WHERE `username` = 'admin' LIMIT 0,10;
    • 排序 ORDER BY
      ORDER BY 后面跟需要按那一列的数值进行排序,再后面默认是正序排列,也可以加 DESC 代表是倒序排列.ORDER BY 必须在 LIMIT 前面

      1. SELECT * FROM `mall_user` WHERE `username` = 'admin' ORDER BY `id` LIMIT 10;
      2. SELECT * FROM `mall_user` WHERE `username` = 'admin' ORDER BY `id` DESC LIMIT 10;

PDO 连接数据库

  1. /**
  2. * 连接数据库
  3. * @param localhost 主机名称
  4. * @param test 数据库名称
  5. * @param root 数据库账号
  6. * @param password 数据库密码
  7. */
  8. $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', 'root');
  9. //prepare方法预处理sql语句
  10. $pre = $pdo->prepare('SELECT * FROM `mall_user`');
  11. //execute()方法执行sql预处理的语句
  12. $exe = $pre->execute();
  13. //fetch、fetchALL
  14. // fetch返回结果中的第一条数据是一维数据 fetchAll返回结果集
  15. $data = $pre->fetch();
  16. $datas = $pre->fetchAll();
  17. //try{}catch{}对数据库连接抛错
  18. try {
  19. $pdo = new PDO('mysql:host=localhost,dbname=test', 'root', 'root');
  20. } catch (PDOException $e) {
  21. echo '数据库连接失败' . $e->getMessage();
  22. }
  23. //errorInfo()对执行抛错
  24. if (!$exe) {
  25. print_r($pre->errorInfo());
  26. }
  27. //PDO绑定参数
  28. // PDO绑定参数有两种方式
  29. // 第一种
  30. $sql = 'INSERT INTO `mall_user` SET `username`=:username,`password`=:password,`gender`=:gender,`age`=:age';
  31. $pre = $pdo->prepare($sql);
  32. // 通过bindParam绑定
  33. //三个参数分别为:指定的内容,传入的值,指定的传入的类型
  34. $pre->bindParam('username', $username, PDO::PARAM_STR);
  35. $pre->bindParam('password', $password, PDO::PARAM_STR);
  36. $pre->bindParam('gender', $gender, PDO::PARAM_INT);
  37. $pre->bindParam('age', $age, PDO::PARAM_INT);
  38. $exe = $pre->execute();
  39. //执行完毕后可以使用rowCount()查看影响的行数(即是否成功)
  40. echo $pre->rowCount();
  41. //还可以使用pdo里的lastInsertId();来查看最后一个增加的id
  42. echo $pdo->lastInsertId();
  43. // 第二种?号占位符
  44. $sql = 'INSERT INTO `mall_user` SET `username`=?,`password`=?,`gender`=?,`age`=?';
  45. $pre = $pdo->prepare($sql);
  46. $pre->bindParam(1, $username, PDO::PARAM_STR);
  47. $pre->bindParam(2, $password, PDO::PARAM_STR);
  48. $pre->bindParam(3, $gender, PDO::PARAM_INT);
  49. $pre->bindParam(4, $age, PDO::PARAM_INT);
  50. $exe = $pre->execute();
  51. // 以上两种方法也可以不用绑定,在execute的时候直接传一个数组进去
  52. // 第一种
  53. $sql = 'INSERT INTO `mall_user` SET `username`=:username,`password`=:password,`gender`=:gender,`age`=:age';
  54. $pre = $pdo->prepare($sql);
  55. $exe = $pre->execute(['username' => $username, 'password' => $password, 'gender' => $gender, 'age' => $age]);
  56. //第二种
  57. $sql = 'INSERT INTO `mall_user` SET `username`=?,`password`=?,`gender`=?,`age`=?';
  58. $pre = $pdo->prepare($sql);
  59. $exe = $pre->execute([$username, $password, $gender, $age]);
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议