mysql中实现年月日标准化_数据库概论_3标准化的SQL语言_ 数据定义

本文介绍了在MySQL中如何进行数据库和表的操作,包括创建、修改和删除数据库与表。详细讲解了如何添加列、更改数据类型以及重命名表。同时,文章还涵盖了数据查询的基础,如选择查询、计算查询、分组查询、连接查询以及嵌套和集合查询,是学习MySQL数据库操作的好资料。
摘要由CSDN通过智能技术生成

Student:

0f3582918c96622ca6974b6cabf47139.png

Course:

8aa19f0f8a43e6e006799b096322bc4b.png

SC:

2b69176a15d37471d53d8edeb81a0414.png

1.数据库的定义、删除

1.1数据库的定义(创建)

1 CREATE DATABASE student;

1.2数据库的删除

1 DROP DATABASE student;

2.表的定义、修改与删除

2.1表的定义

6270a1c299a59929f5ee854526aa21d9.png

建表语句:

4ccab309a0a83bf2188612cc4fccac16445.jpg

a68abd47ebedf48e2cedd1f8dbbd8f12ae2.jpg

1 CREATE TABLEstudent(2 Sno VARCHAR(255) PRIMARY KEY,3 Sname VARCHAR(255),4 Ssex CHAR(4),5 Sage SMALLINT,6 Sdept CHAR(4)7 );

create table

添加数据:

f015c2fdf82cdd14e969f7e73c21df25d43.jpg

784ab24e1b41f1881732b0e6fbc2e696526.jpg

1 INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707001","张一","男",20,"CS");2 INSERT INTO student VALUES ("20170707002","张二","男",21,"CS");3 INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707003","张三","女",22,"MA");4 INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707004","张四","女",18,"IS");

insert

2.2表的修改

2.2.1向student表中添加“入学时间”列,数据类型为日期型

SQL语句:

1 ALTER TABLE student ADD s_entrance DATE;

结果:

f1bdf76c1f2c5cfce46b58afbc850772.png

2.2.2将年龄的数据类型由字符型改为整型

mysql>>

ALTER TABLE student MODIFY COLUMN Sage INT;

2.2.3修改表名

ALTER TABLE studentt RENAME TO course;

2.3表的删除

DROP TABLE course;

3.数据查询

3.1单表查询

3.1.1查所有

1 --方式一

2 SELECT * fromstudent;3 --方式二

4 SELECT Sno,Sname,Ssex,Sage,Sdept,S_entrance from student;

c75040e4e2fdbd3aa881ba8aef09e2e3.png

3.1.2选择查询表中某些列

SELECT Sno,Sname,Sdept FROM student;

5af61444db6a78c2edb20677a5c9cd27.png

3.1.3查询经过计算的值并起个别名birthday

SELECT Sname,2014-Sage as birthday FROM student;

6c30231933157e16fa59d96ac8642640.png

3.1.4 查询所在系(用小写字母表示系名)

1 SELECT Sname,LOWER(Sdept) FROM student;

ac72678901a71f0672be758699d5c407.png

3.1.5去除结果中重复的行

SELECT DISTINCT s_entrance FROM student;

a09a72c76336fab34420a91c49cc2df8.png

3.1.6查询满足条件的元组

1)年龄小于25岁的

SELECT * FROM student WHERE Sage<25;

2)Sno等于20170707001的

--Sno值可以加"",也可以不加""

SELECT * FROM student WHERE Sno="20170707001";

3)年龄在20到30之间的

SELECT * FROM student WHERE Sage BETWEEN 20 AND 30;--等价于

SELECT * FROM student WHERE Sage >= 20 AND Sage <=30;

4)名字中含有“一”的

SELECT * FROM student WHERE Sname LIKE "_一";

5)名字中不含“一”的

SELECT * FROM student WHERE Sname NOT LIKE "_一";

6)按学号降序排列

--默认升序(ASC)

SELECT * FROM student ORDER BY Sno DESC;

7)聚集函数

077b47a710307f8e9f04a03f6e4b396cabb.jpg

2a8f263f189fdfecdc25ebc3e8e8bf35d99.jpg

1 --统计元组个数

2 SELECT COUNT(*) FROMstudent;3 --统计一列中的个数(空值不算)

4 SELECT COUNT(DISTINCT s_entrance) FROMstudent;5 --计算一列值的总合(必须为int)

6 SELECT SUM(Sage) FROMstudent;7 --计算一列值的平均值

8 SELECT AVG(DISTINCT Sage) FROMstudent;9 --找一个值的最大值

10 SELECT MAX(Sage) FROMstudent;11 --找一列值的最小值

12 SELECT MIN(Sage) FROM student;

View Code

8)GROUP BY:分组语句

SELECT Sname,SUM(Sage) FROM student GROUP BYSname;--GROUP BY 与WHERE语句不能共用

SELECT Sname,SUM(Sage) FROM student GROUP BY Sname HAVING SUM(Sage)>=50;

3.2连接查询

3.2.1等值与非等值连接查询

等值连接与非等值连接:当连接运算符为“=”时,称为等值连接。使用其它运算符称为非等值连接。

例:查询每个学生及其选修课程的情况

SELECT Student.*,SC.*

FROMStudent,SCWHERE Student.Sno=SC.Sno;

把目标列中重复的属性列去掉则为自然连接。

3.2.2自身连接

例:查询每一门课的间接先修课

SELECTf.Cno,s.CpnoFROMCourse f,Course sWHERE f.Cpno=s.Cno;

3.2.3外连接

分为:左外连接,右外连接,内连接

left join,right join,inner join

如:

SELECT * FROM Course f LEFT JOIN Course s ON f.Cpno=s.Cno;SELECT * FROM Course f RIGHT JOIN Course s ON f.Cpno=s.Cno;SELECT * FROM Course f INNER JOIN Course s ON f.Cpno=s.Cno;

3.2.4多表连接

两个表以上的操作称为多表连接

例:查询每个学生的学号,姓名,选修的课程名及成绩

SELECTStudent.Sno,Sname,Cname,GradeFROMStudent,SC,CourseWHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;

3.3嵌套查询

3.4集合查询

3.5基于派生表的查询

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值