数据库概论_3标准化的SQL语言_ 数据定义
程序员文章站
2023-10-12 11:21:56
Student: Course: SC: 1.数据库的定义、删除 1.1数据库的定义(创建) 1 CREATE DATABASE student; 1.2数据库的删除 1 DROP DATABASE student; 2.表的定义、修改与删除 2.1表的定义 建表语句: 1 CREATE TABLE ......
student:
course:
sc:
1.数据库的定义、删除
1.1数据库的定义(创建)
1 create database student;
1.2数据库的删除
1 drop database student;
2.表的定义、修改与删除
2.1表的定义
建表语句:
1 create table student( 2 sno varchar(255) primary key, 3 sname varchar(255), 4 ssex char(4), 5 sage smallint, 6 sdept char(4) 7 );
添加数据:
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");
2.2表的修改
2.2.1向student表中添加“入学时间”列,数据类型为日期型
sql语句:
1 alter table student add s_entrance date;
结果:
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 * from student; 3 -- 方式二 4 select sno,sname,ssex,sage,sdept,s_entrance from student;
3.1.2选择查询表中某些列
select sno,sname,sdept from student;
3.1.3查询经过计算的值并起个别名birthday
select sname,2014-sage as birthday from student;
3.1.4 查询所在系(用小写字母表示系名)
1 select sname,lower(sdept) from student;
3.1.5去除结果中重复的行
select distinct s_entrance from student;
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)聚集函数
1 -- 统计元组个数 2 select count(*) from student; 3 -- 统计一列中的个数(空值不算) 4 select count(distinct s_entrance) from student; 5 -- 计算一列值的总合(必须为int) 6 select sum(sage) from student; 7 -- 计算一列值的平均值 8 select avg(distinct sage) from student; 9 -- 找一个值的最大值 10 select max(sage) from student; 11 -- 找一列值的最小值 12 select min(sage) from student;
8)group by:分组语句
select sname,sum(sage) from student group by sname; -- group by 与where语句不能共用 select sname,sum(sage) from student group by sname having sum(sage)>=50;
3.2连接查询
3.2.1等值与非等值连接查询
等值连接与非等值连接:当连接运算符为“=”时,称为等值连接。使用其它运算符称为非等值连接。
例:查询每个学生及其选修课程的情况
select student.*,sc.* from student,sc where student.sno=sc.sno;
把目标列中重复的属性列去掉则为自然连接。
3.2.2自身连接
例:查询每一门课的间接先修课
select f.cno,s.cpno from course f,course s where 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多表连接
两个表以上的操作称为多表连接
例:查询每个学生的学号,姓名,选修的课程名及成绩
select student.sno,sname,cname,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno;
3.3嵌套查询
3.4集合查询
3.5基于派生表的查询
推荐阅读
-
数据库概论_3标准化的SQL语言_ 数据定义
-
基于SQLServer数据库的SQL语言使用--插入数据
-
go语言通过odbc访问Sql Server数据库的方法
-
关系数据库标准语言SQL的在线测试题及答案
-
数据库SQL---数据库、基本表、视图、索引的定义、修改、删除
-
SQL语句的数据操作语言 (DML) 和 数据定义语言 (DDL)使用介绍
-
数据库笔记6--基本SQL语言的增删改查与DDL(哈工大)
-
Centos6.5中如何用sqlite3命令打开’.db’后缀的数据库执行sql
-
Oracle数据库学习之查询的嵌套、事务控制语言、集合操作符和SQL函数讲解
-
FineReport9.0定义数据连接(创建与SQL Server 2016数据库的连接)