zhaoyqiu的数据分析进阶之路2.0

D2-练习

2020-06-26  本文已影响0人  喝奶茶不加奶茶

(一)

0、关系型数据库核心元素有哪些?
数据库分为关系型数据库和非关系型数据库,我们学的是关系型数据库,关系型数据库的核心元素有字段(列)、记录(行)。

==数据行(记录)、数据列(字段)、数据表(数据行的集合)、数据库(数据表的集合)。

1、使用命令行连接数据库服务器的命令是什么?

mysql -uroot -p

==mysql -u用户名 -p密码
或者mysql -u用户名 -p
回车后输入密码
2、列出数据库的命令

​ * 查看所有数据库

show databases;

​ * 查看数据库
查看所有数据库和查看数据库的区别是?use?
==题目错误,应该是使用数据库:use 数据库名;
​ * 查看当前使用的数据库

select database();

​ * 创建数据库

create database classes;

==create database 数据库名 charset=utf8;

​ * 删除数据库

drop database classes;

==drop database 数据库名;
创建数据库python

create database python;

==注意:创建的时候可以注上编码:create database python=utf8;
3、列出表的命令

​ * 查看当前数据库的所有表

show tables;

​ * 查看指定表的结构

desc table_name;

设计班级表结构为id、name、isdelete,编写创建表的语句

create table class(
id int(20),
name varchar(20) not null,
isdelete bit);

注意:varchar 类型一定要记得指定 长度。

create table classes(
id int unsigned auto_increment primary key not null,
name varchar(10),
isdelete bit default 0
);
学习对ID的约束以及给isdelete设置默认值为0 。
4、列出数据操作语句的语法
curd(create-update-r-drop)

​ * 增加
insert into class values(1,'mary',0);
​ * 修改
== update class set gender='男' where id=1;
​ * 删除
==delete from class where id=2;
​ * 基本查询(select)
==select * from 表名;

向班级表中插入数据python1、python2、python3

insert into class values(2,'python1',0);
insert into class values(3,'python2',0);
insert into class values(3,'python3',0);

==
如果id 是自增的,可以写成:

insert into classes(name)  values('python1'),('python2'),('python2');

总结:

create-->insert
retrieve-->select
update-->update
delete-->delete

(二)

1、学生表结构设计为:姓名、生日、性别、家乡,并且学生表与班级表为多对一的关系,
写出创建学生表的语句

create table students(
id int auto_increment primary key,
name varchar(20),
birthday datetime,
sex varchar(20),
hometown varchar(20));

create table students(

id int unsigned auto_increment primary key not null,

name varchar(10) not null,

birthday date,

gender bit default 1,

hometown varchar(20),

clsid int unsigned,

isdelete bit default 0

);

对比:
多了class_id和isdelete两个字段。
日期的类型:
补充:mySql中日期类型

DATE()

日期。格式:YYYY-MM-DD

注释:支持的范围是从 '1000-01-01' 到 '9999-12-31

DATETIME()

*日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP()

时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS

注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

2、向学生表中插入数据:

​ * python1班有郭靖、黄蓉,要求:使用全列插入,一次一值

insert into students(name) values('郭靖');
insert into students(name) values('黄蓉');
insert into students values(0,'test',0,0,0);

%用全列插入输入了一个name为test的记录,
存在疑问:
(1)name之外的其余字段应该怎么输入值?
自增的字段可以自动填充,那非自增字段呢?
答案:自己随便写值上去。
(2)这里给的大条件是给学生表中插入记录,但为什么小条件要说明班级?
答案:确实是都插入到了students表里了。

​ * 未分班的学生有黄药师、洪七公、洪七婆,要求:使用指定列插入,一次多值
insert into students(name) values('黄药师'),('洪七公'),('洪七婆');



注意:给一个字段插入多条记录的写法。
3、查询学生的姓名、生日,如果没有生日则显示无
select name,ifnull(birthday,'无') from students;


注意:不同关系型数据库产品的语法对于null值的处理并不一直,简单罗列如下:

数据库产品名称 语法
SQL Server / MS Access 使用 ISNULL( 字段,指定的替换NULL的值 );
Oracle 使用 NVL()
MySQL 使用 IFNULL() 函数 或者 COALESCE() 函数

4、查询学生的姓名、年龄
%这里是查询年龄???是的,查询年龄
select name,year(birthday)-year(now()) as age from students;
5、逻辑删除洪七婆
%数据插入的要求需要确认下

update students set isdelete=1 where name='洪七婆';

6、修改洪七公的性别为男
update students set sex='男' where name='洪七公';


(三)

1、设计科目表subjects,包括科目名称

create table subjects(
name varchar(20));

==

create table subjects(
id int unsigned auto_increment primary key not null,
name varchar(20),
isdelete bit default 0);

2、向表中插入数据,科目名有:python、数据库、前端

insert into subjects(name) values('python'),('数据库'),('前端');

3、设计成绩表,字段包括:学生id、科目id、成绩

create table grades(
name_id int auto_increment primary key,
grade_id int,
grade int);

==

create table grades(
id int unsigned auto_increment primary key not null,
name_id int unsigned ,
grade_id int unsigned,
grade int);

4、向成绩表中添加一些示例数据

insert into grades values(1,22,123),(0,23,99),(0,24,88);

==

insert into grades(name_id,grade_id,grade int) values
(100,1,1),(98,1,2),(90,1,3),

(95,2,1),(100,2,2),(98,2,3);
      
上一篇 下一篇

猜你喜欢

热点阅读