翼度科技»论坛 编程开发 mysql 查看内容

mysql数据记录

3

主题

3

帖子

9

积分

新手上路

Rank: 1

积分
9
mysql数据记录

准备工作

创建库、表

  1. #创建数据库
  2. create database mysql02;
  3. #使用数据库
  4. use mysql02;
  5. #创建表
  6. create table student(id int ,name varchar(10),age int);
复制代码
查看student表结构
<img alt="image-20230506193257861" loading="lazy">

数据增删改操作

知识点

  1. 插入数据:insert into 表名(字段名1,字段名2,...) values(值1,值2,...),(...),...;
  2.         注意:可以不指定字段,那么默认指定所有字段,插入values时,要和字段一一对应。
  3.         注意:如果插入多条数据,中间用','分隔
  4. 删除数据:delete from 表名 where 条件;
  5. 修改数据:update 表名 set 字段名 = 值 where 条件;
  6. 注意:条件中,判断为空是is null,非空是is not null
复制代码
示例

  1. # 1.演示数据记录的插入操作
  2. # 指定字段中插入数据
  3. insert into student(name) values ('熊大');
  4. insert into student(name,age) values('熊大',8);
  5. insert into student(id,name,age) values(1,'熊大',2);
  6. #指定字段插入多条数据
  7. INSERT INTO student(id, name, age) VALUES (2,'熊二',2),(3,'熊三',2);
  8. # 不指定字段(默认所有字段)插入数据
  9. INSERT INTO student VALUES (4,'李四',23),(5,'王五',32);
复制代码
查看此表:
<img alt="image-20230506200138442" loading="lazy">

  1. # 2.演示数据记录的删除操作
  2. # 空判断 : is null 为空 is not null:不为空
  3. # 根据条件删除部分数据
  4. delete from student where name = '王五';
  5. delete from student where id is null;
复制代码
删除之后的表:
<img alt="image-20230506200337727" loading="lazy">

注意!如果不加where后面的条件,即delete from 表名;就默认是删除整个表,一般会出现警告!不建议这样删除表,可以使用truncate 表名;来清空整个表。
  1. truncate student;
复制代码
使用truncate命令后的表:
<img alt="image-20230506200719892" loading="lazy">

  1. # 3.演示数据记录的更新操作
  2. # 根据条件修改部分数据
  3. # 需求: 把'熊三'改成'张三'
  4. update student set name = '张三' where name = '熊三';
复制代码
改名后的表:
<img alt="image-20230506201413708" loading="lazy">

注意,update没有加where条件就是改所有数据,慎用!
数据约束

主键约束

  1. 主键约束关键字: primary key
  2. 特点: 修饰的字段,值不能为空且不能重复,一般主键名为xxid
  3. 注意: 主键约束建议建表的时候添加
  4. 个数: 主键约束一个表有且只有一个
复制代码
  1. # 主键约束: primary key 特点: 修饰的字段xid,不能为空,不能重复
  2. # 创建表
  3. create table stu1(id int primary key,name varchar(10),age int);
复制代码
查看表结构:
<img alt="image-20230506202113517" loading="lazy">

  1. # 添加主键方式除了创建表的时候能添加,建表后依然可以添加,但是必须保证需要添加主键约束的每个字段都满足非空不重复,否则添加失败。
  2. # 需求: 给上述student表添加
  3. alter table student add primary key (id);
复制代码
主键自增

  1. 主键自增: primary key auto_increment 特点: 主键需要是int类型,不指定具体值,从1开始每次自动加1
  2. 注意1: 主键自增建议建表的时候添加
  3. 注意2: 给主键添加了自增后,在插入数据的时候,不指定id默认自增,也可以使用null和0占位默认代表使用自增
复制代码
  1. # 创建表
  2. create table stu2(id int primary key auto_increment,name varchar(10),age int);
复制代码
查看表结构:
<img alt="image-20230506203025717" loading="lazy">

  1. # 添加自增方式除了创建表的时候能添加,建表后依然可以添加,如果要添加主键自增,那么表必须没有主键,如果仅添加自增,则需要此表有主键,在这个主键上进而添加自增
  2. #首先删除student表的主键
  3. alter table student drop PRIMARY KEY ;
  4. #之后在student表中添加主键自增
  5. alter table student change id id int PRIMARY KEY AUTO_INCREMENT;
  6. #在stu1表中添加自增
  7. alter table stu1 CHANGE id id int AUTO_INCREMENT;
复制代码
非空约束

  1. 非空约束关键字: not null
  2. 特点: 修饰的字段,值不能为空
  3. 注意: 建议建表的时候添加
  4. 个数: 非空约束一个表有且可以只有多个
复制代码
  1. # 特点: 修饰的字段,值不能为空
  2. # 个数: 非空约束一个表有且可以只有多个
  3. # 创建表
  4. create table stu3(
  5. id int PRIMARY KEY AUTO_INCREMENT,
  6. name varchar(100) not null,
  7. age int
  8. );
  9. # 查看表结构
  10. desc stu3;
  11. # 演示非空约束特点: 不能为空
  12. insert into stu3 (name,age) values (null,18); # 插入失败,因为name值不能为空
  13. insert into stu3 (name,age) values ('张三',18);# 插入成功
  14. # 当然建表后也可以添加非空约束的
  15. alter table stu3 CHANGE age age int not null;
  16. # 也可以手动删除非空约束
  17. alter table stu3 CHANGE age age int;
复制代码
唯一约束

  1. 唯一约束关键字: unique
  2. 特点: 修饰的字段,值不能重复
  3. 注意: 建议建表的时候添加
  4. 个数: 唯一约束一个表有且可以只有多个
复制代码
  1. # 创建表
  2. create table stu4(
  3. id int PRIMARY KEY AUTO_INCREMENT,
  4. name varchar(100) UNIQUE ,
  5. age int
  6. );
  7. # 查看表结构
  8. desc stu4;
  9. insert into stu4 (name,age) values (null,18); # 可以插入空值
  10. insert into stu4 (name,age) values (null,28); # 可以插入空值(注意:空值没有重复之说)
  11. # 演示唯一约束特点: 不能重复
  12. insert into stu4 (name,age) values ('张三',18);# 插入成功
  13. insert into stu4 (name,age) values ('张三',28);# 插入失败,唯一约束特点: 不能重复
  14. # 当然建表后也可以添加唯一约束的
  15. alter table stu4 CHANGE age age int UNIQUE ;
  16. # 也可以手动删除唯一约束
  17. alter table stu4 drop INDEX age;
复制代码
默认约束

  1. 默认约束关键字: default
  2. 特点: 修饰的字段,值可以设置默认值
  3. 注意: 建议建表的时候添加 字段名 字段类型 default 默认值
  4. 个数: 默认约束一个表有且可以只有多个
复制代码
  1. # 创建表
  2. create table stu5(
  3. id int PRIMARY KEY AUTO_INCREMENT,
  4. name varchar(100) DEFAULT 'admin',
  5. age int
  6. );
  7. # 查看表结构
  8. desc stu5;
  9. # 注意: 如果你指定姓名,以你指定的为主
  10. insert into stu5 (name,age) values ('张三',18);# 插入成功,但是没有使用默认值
  11. # 演示默认约束特点: 不指定对应字段插数据,自动使用默认值
  12. insert into stu5 (age) values (28);# 使用默认值,默认约束特点:你不指定就使用默认
  13. # 当然建表后也可以添加唯一约束的
  14. alter table stu5 CHANGE age age int DEFAULT 18 ;
  15. # 也可以手动删除唯一约束
  16. alter table stu5 CHANGE age age int;
复制代码
数据查询操作

1.准备数据

  1. # 创建商品表:
  2. CREATE TABLE product
  3. (
  4. pid INT PRIMARY KEY,
  5. pname VARCHAR(20),
  6. price DOUBLE,
  7. category_id VARCHAR(32)
  8. );
  9. # 插入数据
  10. INSERT INTO product(pid,pname,price,category_id) VALUES(1,'联想',5000,'c001');
  11. INSERT INTO product(pid,pname,price,category_id) VALUES(2,'海尔',3000,'c001');
  12. INSERT INTO product(pid,pname,price,category_id) VALUES(3,'雷神',5000,'c001');
  13. INSERT INTO product(pid,pname,price,category_id) VALUES(4,'杰克琼斯',800,'c002');
  14. INSERT INTO product(pid,pname,price,category_id) VALUES(5,'真维斯',200,'c002');
  15. INSERT INTO product(pid,pname,price,category_id) VALUES(6,'花花公子',440,'c002');
  16. INSERT INTO product(pid,pname,price,category_id) VALUES(7,'劲霸',2000,'c002');
  17. INSERT INTO product(pid,pname,price,category_id) VALUES(8,'香奈儿',800,'c003');
  18. INSERT INTO product(pid,pname,price,category_id) VALUES(9,'相宜本草',200,'c003');
  19. INSERT INTO product(pid,pname,price,category_id) VALUES(10,'面霸',5,'c003');
  20. INSERT INTO product(pid,pname,price,category_id) VALUES(11,'好想你枣',56,'c004');
  21. INSERT INTO product(pid,pname,price,category_id) VALUES(12,'香飘飘奶茶',1,'c005');
  22. INSERT INTO product(pid,pname,price,category_id) VALUES(13,'海澜之家',1,'c002');
复制代码
2.简单查询

知识点

  1. 基础查询关键字: select from
  2. 基础格式: select [distinct] 列名,列名 | * from 表名;
  3. distinct关键字: 根据指定字段去除重复值
  4. as关键字: 可以给表或者字段起别名
  5. []: 代表可以省略
  6. | : 代表或者的意思
  7. * : 代表所有字段
复制代码
示例

  1. # 1.简单查询
  2. # 需求: 查询所有商品信息
  3. select * from product;
  4. # 需求: 查询商品名称和商品价格
  5. select pname,price from product;
  6. # 需求: 查询分类编号要求去重
  7. select DISTINCT category_id from product;
  8. # 需求: 给商品名称,商品价格字段起别名
  9. select pname as '商品名称' ,price as '商品价格' from product; # 实际不建议用中文别名
  10. # 给表起别名: 双击左上角库名查看数据底层执行的代码就使用了别名
  11. SELECT t.* FROM mysql02.product t; # 默认省略了as
复制代码
3.条件查询

知识点

  1. 条件查询关键字: where
  2. 基础格式: select 列名 from 表名 where 条件;
  3. 比较查询: > < >= <= != 和 <>
  4. 逻辑查询: and(并且) or(或者) not(取反)
  5. 范围查询: between x and y: 连续范围x到y in(x,y): 非连续范围x或者y
  6. 模糊查询: 关键字like % : 0个或者多个字符 _ : 1个字符
  7. 空判断 : is null:判断为空 is not null: 判断不为空
复制代码
4.排序查询

知识点

  1. # 基础格式: select 列名 from 表名 where 条件;
  2. # 需求: 查询价格大于2000的商品信息
  3. SELECT *
  4. FROM
  5.     product
  6. WHERE
  7.     price > 2000;
  8. # 需求: 查询价格大于等于3000的商品信息
  9. SELECT *
  10. FROM
  11.     product
  12. WHERE
  13.     price >= 3000;
  14. # 需求: 查询价格在200(含)到3000(含)区间范围内的商品信息
  15. SELECT *
  16. FROM
  17.     product
  18. WHERE
  19.     price BETWEEN 200 AND 3000;
  20. # 需求: 查询价格不是200的商品信息
  21. SELECT *
  22. FROM
  23.     product
  24. WHERE
  25.     price != 200;
  26. # 需求: 查询价格是3000或者5000的商品信息
  27. SELECT *
  28. FROM
  29.     product
  30. WHERE
  31.     price IN (3000, 5000);
  32. # 需求: 查询价格 不在 200(含)到3000(含)区间范围内的商品信息
  33. SELECT *
  34. FROM
  35.     product
  36. WHERE
  37.     price NOT BETWEEN 200 AND 3000;
  38. # 需求: 查询商品名称以'香'开头的商品信息
  39. SELECT *
  40. FROM
  41.     product
  42. WHERE
  43.     pname LIKE '香%';
  44. # 需求: 查询商品名称以'斯'结尾的商品信息
  45. SELECT *
  46. FROM
  47.     product
  48. WHERE
  49.     pname LIKE '%斯';
  50. # 需求: 查询商品名称是3个字,并且以'斯'结尾的商品信息
  51. SELECT *
  52. FROM
  53.     product
  54. WHERE
  55.     pname LIKE '__斯';
  56. # 需求: 查询第二个字是'想'的商品信息
  57. SELECT *
  58. FROM
  59.     product
  60. WHERE
  61.     pname LIKE '_想%';
  62. # 注意: mysql中的null不等于空字符串,或者字符串'null'
  63. # 需求: 查询商品分类不为空的商品信息
  64. SELECT *
  65. FROM
  66.     product
  67. WHERE
  68.     category_id IS NOT NULL;
  69. # 需求: 查询商品分类为空的商品信息
  70. SELECT *
  71. FROM
  72.     product
  73. WHERE
  74.     category_id IS NULL;
复制代码
示例

  1. 排序查询关键字: order by
  2. 基础格式: select 列名 from 表名 order by 排序列名 asc|desc;
  3. | : 代表或者的意思
  4. asc : 升序(默认)
  5. desc: 降序
  6. 特殊格式: select 列名 from 表名 order by 排序列名1 asc|desc , 排序列名2 asc|desc;
  7. 特殊格式注意: 先按照第一个字段排序,如果第一个字段值相同,再按照第二个字段排序
复制代码
5.聚合查询

知识点

  1. # 基础格式: select 列名 from 表名 order by 排序列名 asc|desc;
  2. # 需求: 查询商品所有信息,要求价格升序排序
  3. select * from product ORDER BY price asc; # 报黄,提示多余写asc,因为默认就是升序
  4. select * from product ORDER BY price; # 以后如果是升序,就不用写asc了
  5. # 需求: 查询商品所有信息,要求价格降序排序
  6. select * from product ORDER BY price desc;
  7. # 特殊格式: select 列名 from 表名 order by 排序列名1 asc|desc , 排序列名2 asc|desc;
  8. # 需求: 查询商品所有信息,要求先按照价格降序排序,如果价格相同再按照分类id降序排序
  9. select * from product ORDER BY price desc,category_id desc;
复制代码
示例

  1. 聚合函数:sum() avg() count() max() min()
  2. 基础格式:select 聚合函数(列名) from 表名;
  3. 注意1: 聚合函数又叫分组函数或者统计函数
  4. 注意2: 聚合函数(列名)这种方式会自动忽略null值
复制代码
6.分组查询

知识点

  1. # 需求: 查询所有商品价格总和
  2. SELECT sum(price) from product;
  3. # 需求: 查询所有商品总个数
  4. SELECT count(*) FROM product;
  5. # 需求: 查询所有商品平均价格
  6. SELECT avg(price) FROM product;
  7. # 需求: 查询所有商品最大价格是多少
  8. SELECT max(price) FROM product;
  9. # 需求: 查询所有商品最小价格是多少
  10. SELECT min(price) FROM product;
  11. # 需求: 查询分类id为c001的所有商品价格的总和
  12. SELECT sum(price) FROM product WHERE category_id = 'c001';
复制代码
示例

  1. 分组关键字: group by
  2. 基础格式: select 列名 from 表名 group by 分组列名;
  3. 特殊格式: select 列名 from 表名 where 非聚合条件 group by 分组列名 having 聚合条件;
  4. having与where的区别:
  5. 1).where是在分组前对数据进行过滤, having是在分组后对数据进行过滤
  6. 2).where后面不可以使用分组函数(聚合函数),having后面可以使用分组函数(聚合函数),
复制代码
7.分页查询

知识点

  1. # 需求: 查询各个分类的单独的商品价格总和
  2. SELECT sum(price) FROM product GROUP BY category_id;
  3. # 特殊需求: 查询各个分类的单独的商品价格总和,并且筛选总和小于5000的分类
  4. SELECT category_id FROM product GROUP BY category_id HAVING sum(price) < 5000;
  5. # 特殊需求: 查询所有商品价格小于3000的,并且分组统计每个分类的总和,最后只显示总和小于5000
  6. SELECT category_id FROM product WHERE price < 3000 GROUP BY category_id HAVING sum(price) < 5000;
复制代码
示例

  1. 分页查询关键字: limit
  2. 基础格式: select 列名 from 表名 limit x,y;
  3. x: 整数 起始索引(从0开始数) 如果从0开始那么0可以省略
  4. y: 整数 本次查询多少条数据
复制代码
来源:https://www.cnblogs.com/lionet-kk/p/mysql.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具