数据库基础知识点

 

本次的数据库参考于此链接

https://blog.csdn.net/BiandanLoveyou/article/details/80590926

 

(一)增删改查

1.建表

drop table if exists t_user;
create table t_user(
  id int(11) not null auto_increment primary key comment '主键,自动增长',
  stuId int(11) not null comment '学生学号',
  stuName varchar(20) not null comment '学生名字',
  age int(3) default null comment '年龄',
  joinTime date default null comment '入学时间',
  introduce text default null comment '自我介绍'
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='学生信息表';

说明:

id:主键自动增长,让数据库自己维护数值,一般不去做操作(即增删改)。新增数据时,假如加入id值,一般都要写成null

举例1:

insert into t_user
(stuId,stuName,age,grade,joinTime,introduce)
values
(201801,'张三',9,'三年级','2018-09-01','大家好,我叫张三')

举例2:

insert into t_user
(id,stuId,stuName,age,grade,joinTime,introduce)
values
(null,201801,'张三',9,'三年级','2018-09-01','大家好,我叫张三'),
(null,201802,'李四',10,'三年级','2018-09-01','大家好,我叫李四'),
(null,201803,'王五',8,'三年级','2018-09-01','大家好,我叫王五')

default:默认,缺省

not null 与Default null:都是表的约束,default null 不需要维护,非必填值

2.删

delect from 表名 where 条件

3.改

update 表名 set 改动的东西 where 条件

4.查

select * from 表名

select 查询的字段from 表名

举例:

查询姓李的同学

select stuName from 表名 where stuName like '李%'

(二)运行发生错误

Duplicate entry 主键重复错误

 Table 'www123.t_ser' doesn't exist 表名错误

(三)知识点

1.索引:加快查询

2.字段:数据库的列

3.as:起别名。别名可为所有字符串。精简结果集方便管理查询的字段,as可省略

4.   . :引用

5.多表查询:一般要有相同的字段作为条件,子查询的结果可为一个结果集或表

6.group by:分组。同类的东西放在一起,获得相同组的数量

7.having子句可以让我们筛选分组后的各组数据

8.举例:

select * from t_user limit 0,2

说明:0,2表示从0开始拿两条

select * from t_user limit 1

说明:1表示拿1条

9.时间戳:时间戳是指在一连串的资料中加入辨识文字,如时间或日期,用以保障本地端资料更新顺序与远端一致

10.举例:查询课程超过2门的学生,输出学生id,学生姓名以及课程数量

select t1.stuId,t1.stuName,t2.courseCount from
(select stuId,stuName from t_user) as t1,
(select stuId,courseId,count(*)as courseCount from t_stu_cour group by stuId having count(*) > 2 )as t2
where t1.stuId=t2.stuId;

解题思路:

(1)先看字段存在的表

(2)如果字段存在不同的表需做各表的子查询

(3)group by:涉及到相同字段的数量查询,后接分组条件,分组条件只会出现一条记录

(4)having count(*)可删选分组后的各组数据

(5)子查询结果集可当作一个表或者集合

(6)子查询需要用括号括起来

(7)主查询:把各个子查询的字段拿出来

(8)两个子查询之间要出结果集必须要有相同的条件

11.学生重复的数量

select stuName,count(*)as repeatCount from t_user
group by stuName
having repeatCount > 1

解题思路:

(1)查询学生信息

(2)如何判断学生名字重复?group by

group by效果:相同分组条件下只会出现一条数量

order by:排序。任何字段都可排序。排序规则:先排哪个哪个在前面

asc:升序。

数字从小到大

时间从早到晚

中文无序

desc:降序

(3)用结果集作为判断条件

12.left join:查询类型,即连接查询,它的全称是左外连接

主表+left join+关联的表on 条件

left join:查询结果即便为空也会显示结果

where:结果为空时不显示

left join 与where 的区别

(1)在主表有的,次表没有也会显示结果

(2)where条件对等才可显示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值