数据库基本理解

数据库

基本操作

数据库操作

show databases ; create database 库名 ;

#查看一个数据库的编码格式 show create database py ;

#设置数据库的编码格式 alter database py default character set utf8mb4 ;

#删库 drop database py ;

表的操作

show databases ; use 数据库 ;

create table 表名 { 字段1 类型(), 字段2 类型(), …… }

#修改表名 将book表重命名为books alter table book rename books

#添加字段 alter table books add press varchar(20);

#查看表的字段信息 desc books;

#删除字段 删除books表中的press字段。 alter table books drop press

#删除表 删除books表 drop table books

记录的增删改查

(如果不添加条件判断默认的就是对所有的记录进行修改)

insert into table ( x , x , x , x) values ( v , v , v , v ) ; delete from table ; update table set 字段 = 字段值 ,字段2 = 字段值2 ; select * from table where 条件 ;

where字句

where子句就是进行判断过滤的条件限定;

单条件

select * from table where 条件 ;

判断条件
控制判断字段 is null
模糊匹配字段 like "%瀚%" (%表示任意个数任意字符)

多条件

and & or 可能会产生冲突,可以用()包裹一个整体

in 操作符:用来过滤出符合范围内的记录

select * from table where 字段 in ("值1","值2",…)


聚合函数

聚合函数
count(字段)计数,用来计算相应记录的个数
sum(字段)求和
max(字段)最大值
mix(字段)最小值
avg(字段)平均值(默认六位小数)

排序 、分页

order by(字段)[ desc ] desc降序

select * from table order by (字段) desc ;

【注意】order by + where : where 要放在order by 前边

limit 可以限制查询的数量, 有两个参数 n,m

select * from table limit n , m ;

【参数】n:前边的记录条数 m:页面显示的记录条数

多表关联

数据库表有三种关联关系,分别为:一对多,一对一,多对多。

 以学生表,老师表,班级表为例,学生与班级的关系就是多对一。 学生请了家教,一个学生对应一个老师,就是一对一。老师与班级之间是多对多的关系,一个班级有多个任课老师,每个任课老师带多个班级。
 ​
 新建两张表
 DROP TABLE IF EXISTS `classroom`;
 CREATE TABLE `classroom` (
   `id` int NOT NULL AUTO_INCREMENT COMMENT 'id',
   `name` varchar(255) DEFAULT NULL COMMENT '教室名',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
 ​
 -- ----------------------------
 -- Records of classroom
 -- ----------------------------
 INSERT INTO `classroom` VALUES ('1', '鄱阳湖');
 INSERT INTO `classroom` VALUES ('2', '淀山湖');
 INSERT INTO `classroom` VALUES ('3', '老君山');
 INSERT INTO `classroom` VALUES ('4', '桐柏山');
 ​
 -- ----------------------------
 -- Table structure for student
 -- ----------------------------
 DROP TABLE IF EXISTS `student`;
 CREATE TABLE `student` (
   `id` int NOT NULL AUTO_INCREMENT COMMENT '学生id',
   `name` varchar(255) DEFAULT NULL COMMENT '学生姓名',
   `gender` varchar(255) DEFAULT NULL COMMENT '性别',
   `age` int DEFAULT NULL COMMENT '年龄',
   `score` int DEFAULT NULL COMMENT '成绩',
   `c_id` int DEFAULT NULL COMMENT '教室id',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
 ​
 -- ----------------------------
 -- Records of student
 -- ----------------------------
 INSERT INTO `student` VALUES ('1', '吴用', '男', '20', '4', '1');
 INSERT INTO `student` VALUES ('2', '李逵', '男', '23', '22', '1');
 INSERT INTO `student` VALUES ('3', '孙二娘', '女', '26', '103', '1');
 INSERT INTO `student` VALUES ('4', '扈三娘', '女', '18', '59', '2');

在多的那一端添加一个字段,存储 一 那一端的id。 在上面的例子中,学生是多的一端,在student表添加一个字段,c_id 存储 教室 classroom表的id。

内连接

 #===格式1===
 SELECT xxxx                                  # 建议自定义字段 as
 FROM tableA as A
     INNER JOIN tableB as B ON 关联字段       # 关联字段  on A.xx = B.xx
 WHERE
     条件
 #===格式2===
 SELECT xxxx                                  # 建议自定义字段 as
 FROM tableA ,tableB      
 WHERE
     关联字段 and 条件                         # 关联字段   A.xx = B.xx
 例子:
 #查询鄱阳湖的同学的信息。
 SELECT
     s.id 学生编号,
     s. NAME 学生姓名,
     c. NAME AS 教室
 FROM
 #我们可以为表添加别名。
     student s
 INNER JOIN classroom c ON c_id = c.id
 WHERE
     c. NAME = '鄱阳湖';
     
 #内连接 另外一种写法。
 SELECT
     s.id,
     s. NAME,
     c.`name` AS classname
 FROM
     student s,
     classroom c
 WHERE
     s.c_id = c.id

外连接

外连接就是定义一种方式;规定了左边或者右边为基准,就算关联字段是null也会获取到

左外连接
 #查询所有同学的信息,包括所属的班级名。
 SELECT
     s.id,
     s. NAME,
     c.name AS classname
 FROM
     student s LEFT JOIN classroom c
     ON  s.c_id = c.id   #on后面跟两种表关联的条件     
右外连接
 #查询所有教室的信息,包含它的学生信息。
 SELECT
     s.id,
     s. NAME,
     c.`name` AS classname
 FROM
     student s RIGHT JOIN classroom c
     ON  s.c_id = c.id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值