数据库题目小练习
新建student表
新建sc表
新建course表
A 查询姓 “王” 的学生的个数
查询–>新建查询
select count(*) from student where name like ‘王%’;
B 查询“数学”比“语文”成绩高的所有学生的学号
方法1:使用条件语句:case when…then…
select student.id,
max(case when course.id=1 then sc.score END) chinese,
max(case when course.id=2 then sc.score end) math,
max(case when course.id=3 then sc.score END) English
from student join sc on student.id=sc.sid join course on sc.cid=course.id
GROUP BY student.id
having math > chinese;
方法2:使用嵌套查询(子查询)
C 查询平均成绩大于90分的同学的学号和平均成绩
查询–>新建查询
SELECT
student.id,
avg(sc.score)
FROM
student
JOIN sc ON student.id = sc.sid
JOIN course ON sc.cid = course.id
GROUP BY
student.id
HAVING
avg(sc.score) > 90;
数据库小知识:
空:在数据库中显示为Null(啥的没有)
空字符串:" "(有字符串,只是这个字符串没内容而已)
数据库的类型:
(1)关系型数据库:mysql、Oracle、SQL server
(2)非关系型数据库:redis、mongodb
mysql的安装
1、解压,配置环境变量
2、安装数据库 mysqld -install
3、初始化数据库 mysqld --initialize-insecure
4、启动数据库 net start mysql
5、mysql -u root -p 打开数据
exit
注意:需要⽤管理员身份操作
MySQL卸载
1、停⽌数据库net stop mysql
2、删除数据库服务 mysqld -remove
3、删除数据库的初始化数据
4、删除环境变量
注意:需要⽤管理员身份操作
数据库的连接
host -h : ip
Port -P 端口号,默认为3306
user u 账号
password -p 密码
在cmd中登录:(登录自己的,括号内可以省略)
mysql (-h localhost -P 3306) -u root -p
创建数据库
(1)数据库的名字
(2)字符集
utf8、utf8mb4
(3)字符集排序
设计表(前3个必须设置)
(1)字段名
(2)字段类型
int/整型、varchar/字符串、datetime/时间
(3)字段长度
(4)是否为空 (null /not null)
(5)默认值 (default)
(6)注释(comment 注释的内容)
(7)主键 /primary
⼀般每个表起码⼀个主键、主键可以限制这个字段不能重复、设置了主键的字段不能为空
(8)索引 /index
导出数据:可以把数据库里的所有表和数据导出为sql文件,并给其他人用
数据库管理
show databases; 查看数据库
use 数据库的名字;选择数据库
创建数据库:
create database 数据库的名字 default charset utf8mb4;
修改数据库:
alter database 数据库的名字 default charset utf8mb4;
删除数据库:
drop database 数据库的名字;
查看表:show tables;
创建表:
create table 表名 (字段1信息,字段2信息,字段3的信息);
修改表
alter table 表名 …
增加字段:alter table 表名 add 字段信息;
修改字段:
1)修改字段名:alter table 表名 change 老的字段名 新的字段信息
2)修改字段属性:alter table 表名 modify 字段信息;
删除字段:alter table 表名 drop 字段名;
修改表名:alter table 表名 rename 新表名;
删除表:drop table 表名;
查看表结构:desc 表名;
数据的操作:
增:insert into 表名(字段1,字段2) values (值1,值2);
删: delete from 表名 where 条件;
改:update 表名 set 字段1=值1,字段2=值2 where 条件;
查:select * from 表名;
select * from 表名 where 条件1 and 条件2 or 条件3;
select 字段1,字段2,字段3 from 表名;
多表联查:
select * from 表1 join 表2 on 表1.字段1= 表2.字段2 where 表1.字段1 = 值;
自己要找出多个表之间的关系,不然很乱