SQL基础知识

简介: SQL基础知识

编程语言:SQL-结构化查询语言


  1. DDL - 数据定义语言:create / drop / alter
  2. DML - 数据操作语言:insert / delete / update / select
  3. DCL - 数据控制语言:grant / revoke


创建学生表(tb_student)

#如果存在名为school的数据为就删除它
drop database if exists school;
#创建名为school的数据库并指定默认的字符集为utf-8
create database school default charset utf8;
#切换到school数据为上下文环境
use school;
#创建学生表
create table tb_student
(
stuid int not null comment '学号',
stuname varchar(20) not null comment '姓名',
stusex bit default 1 comment '性别',
stubirth date comment '生日',
primary key(stuid)
#外键
foreign key (collid) references tb_college (collid)
);
#修改学生表
alter table tb_student add column stuaddr varchar(255);
alter table tb_student change column stuaddr stuaddr varchar(511);
alter table tb_student drop column stuaddr;
#向学生表插入数据
insert into tb_student values(1001,'张三',1,'1982-1-2','广东广州');
insert into tb_student(stuid,stuname) values(1002,'李四');
insert into tb_student(stuid,stuname,stusex) 
values(1003,'张博',default),(1004,'丁瑶瑶',1),(1005,'徐秋月',0);
#删除学生
delete from tb_student where stuid=1001;
delete from tb_student where stusex=0;
#更新操作
update tb_student set stuaddr='广东广州' where stuid in (1002,1003);
update tb_student set stuaddr='广东广州' where stuid between 1002 and 1003;
update tb_student set stubirth='1991-10-2',stuaddr='北京' where stuname='张博';
#查询所有学生
select * from tb_student
#查询学生性别
select stuname as 姓名, 
case stusex when 1 then '男' else '女' end as 性别 from tb_student
#查询女生姓名出生日期
select stuname,stubirth from tb_student where stusex=0
#查询限定日期
select * from tb_student where stubirth>='2020-1-1' and stubirth<='2022-3-1'
select * from tb_student where stubirth between '2020-1-1' and '2022-3-1'
#模糊查询(姓李)
select stuname,stusex from tb_student where stuname like '李%'
#模糊查询(姓李,两个字)
select stuname,stusex from tb_student where stuname like '李_'
#模糊查询(姓李,三个字)
select stuname,stusex from tb_student where stuname like '李__'
#模糊查询(姓名有李的/张的)
select stuname,stusex from tb_student where stuname like '%李%' or stuname like '%张%'
#查询没有录入地址的学生信息
select * from tb_student where stuaddr is null;
#查询已经录入地址的学生信息
select * from tb_student where stuaddr is not null;
#查询学生的家庭住址(去重)
select distinct stuaddr from tb_student where stuaddr is not null
#查询男学生姓名和生日(从大到小排序)
select stuname,stubirth from tb_student where stusex=1 order by stubirth 
#查询男学生姓名和生日(从小到大排序)
select stuname,stubirth from tb_student where stusex=1 order by stubirth desc
#查询年龄(从小到大排序)
select stuname,year(now()-year(stubirth)) as 年龄 from tb_student where stusex=1 order by stubirth desc
#查询年龄最大/最小的学生出生日期
select min(stubirth) from tb_student
select max(stubirth) from tb_student
#查询人数
select count(stuid) from tb_student
#查询男女生的人数
select stusex,count(stusex) from tb_student group by stusex
#查询男女生年龄最大的日期
select stusex,min(stubirth) from tb_student group by stusex

创建学院表(tb_college)


#创建学院表
create table tb_college
(
colid int auto_increment comment '编号',
colname varchar(31) not null comment '名称',
website varchar(1023) comment '网址',
primary key(colid)
);
#插入学院数据
insert into tb_college (colname) values ('计算机学院'),('外国语言学院'),('经济管理学院');
#添加学生表学院列
alter table tb_student add column colid int;
#修改学生表添加外键约束
alter table tb_student add constraint fk_student_colid foreign key(colid) references tb_college(colid);
#添加学生表学院列数据
update tb_student set colid=1 where stuid between 1001 and 1002;
update tb_student set colid=2 where stuid in(1003,1004);
update tb_student set colid=3 where stuid=1005;


创建老师表(tb_teacher)


#创建教师表
create table tb_teacher
(
teaid int not null comment '工号',
teaname varchar(20) not null comment '姓名',
teatitle varchar(10) default '助教' comment '职称',
collid int not null comment '所属学院',
primary key(teaid),
foreign key(collid) references tb_college(collid)
);


创建课程表(tb_course)


#创建课程表
create table tb_course
(
couid int not null comment '编号',
couname varchar(50) not null comment '名称',
coucredit int not null comment '学分',
teaid int not null comment '授课老师',
primary key (couid),
foreign key (teaid) references tb_teacher(teaid)
);
#插入课程表数据
insert into tb_course values
(1,'数据库',2,1),
(2,'数学',4,2),
(3,'信号与信息处理',3,3),
(4,'操作系统',2,4),
(5,'数据结构',1,5),
(6,'通信与信息系统',1,6);
#查询所有课程名称及学分(投影和别名)
select couname,coucredit from tb_course
select couname as 课程名称,coucredit as 学分 from tb_course


创建选课记录表(tb_score)


#创建选课记录表
create table tb_score
(
scid int auto_increment comment '选课记录编号',
stuid int not null comment '选课学生',
couid int not null comment '所选课程',
scdate datetime comment '选课时间日期',
scmark decimal(4,1) comment '考试成绩',
primary key(scid),
foreign key(stuid) references tb_student(stuid),
foreign key(couid) references tb_course(couid)
);
#插入选课数据信息
insert into tb_score values
(101,1001,1,now(),54),
(102,1002,2,now(),93),
(103,1003,3,now(),21),
(104,1004,4,now(),43),
(105,1005,5,now(),54);
#添加唯一性约束(一个学生选课程只能选一次)
alter table tb_score add constraint uni_score_stuid_couid unique(stuid,couid);
#查询学生选课的所有日期(去重)
select distinct scdate from tb_score


相关文章
|
SQL 关系型数据库 MySQL
MySQL实战基础知识入门(2):统计一天24小时数据默认补0的sql语句
MySQL实战基础知识入门(2):统计一天24小时数据默认补0的sql语句
743 0
|
6月前
|
SQL Oracle 关系型数据库
Oracle PL/SQL基础知识及应用案例
Oracle PL/SQL基础知识及应用案例
119 0
|
SQL 关系型数据库 MySQL
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
425 0
MySQL实战基础知识入门(8):当天和昨天24小时数据统计的sql语句解决方案
|
SQL 关系型数据库 MySQL
[MySQL] SQL 基础知识
[MySQL] SQL 基础知识
|
SQL NoSQL 数据库
数据库SQL Server 基础知识思维导图
数据库SQL Server 基础知识思维导图
237 0
|
SQL 数据库
SQL注入基础知识(自己的笔记)
这是0xThrL的GD师傅在学习SQL注入时候写的笔记 ,也是希望可以帮助到大家,有什么问题希望各位师傅可以指出。
112 0
|
SQL Oracle 关系型数据库
SQL语言基础知识(二)
向员工表中插入一条记录,要求符合以下条件
156 0
|
SQL Oracle NoSQL
SQL语言基础知识(一)
这是从零开始系统学习SQL语言的课程,课程中的所有SQL语句同时兼容MySQL、Oracle、SQL Server和PostgreSQL等4种最流行的数据库。
169 0
|
SQL 自然语言处理 druid
SQL结构化系列一、基础知识
一、术语关键词(Lexis)关键词是一组预定义的单词,为系统内置,区别于变量(Variable)。语法(Syntax)关键词、变量的摆放顺序语义(Semantics)由关键词和语法共同表达出的含义,即语言的含义。在编程语言中,通常不考虑修辞等语用信息。词法分析给定一段文本,建立文本中的单词和关键词/变量之间的映射的过程。产生符号表(Token List)图 1.1 词法分析示意图语法分析将词法分析
322 0
SQL结构化系列一、基础知识
|
SQL 存储 关系型数据库
23篇大数据系列(三)sql基础知识(上)(史上最全,建议收藏)
23篇大数据系列(三)sql基础知识(上)(史上最全,建议收藏)
23篇大数据系列(三)sql基础知识(上)(史上最全,建议收藏)