MySQL 笔记一 20160809
MySQL基础操作
1 登录:Mysql -u userName -p
password ******
2 建库:create database databaseName character set 'utf8'; --建表时指定字符编码方式为utf8
create database SMS character set 'utf8';
3 建表:create table tableName (字段名称,数据结构)
-- 学生信息表
create table StudentInfo (
stuId int,-- 主键
stuName varchar(20),-- 姓名
stuNumber char(20),-- 学号
stuSex bit,-- 性别
stuBirthday datetime,-- 生日
majorId int,-- 专业(外键)
phone char(12),-- 电话
address varchar(200),-- 地址
primary key (stuId),
foreign key (majorId) references MajorInfo(majorId)
);
4 删表 drop table tableName;
drop table StudentInfo;
5 删库 drop database databeseName;
drop database SMS;
6 修改表
alter table Score
add constraint fk_stuId
foreign key (stuId)
references StudentInfo(stuId)
;
7 主键 外键
附上一道例题:
-- 需要完成一个学生信息管理系统的数据库设计
-- 主要要求如下:
-- 需要保存学生的姓名,学号,性别,年龄,专业,电话,地址,各科成绩
-- 请设计数据库。
drop database SMS;
create database SMS character set 'utf8';
use SMS;
drop table Score;
drop table StudentInfo;
drop table SubjectInfo;
drop table MajorInfo;
-- 专业信息表
create table MajorInfo (
majorId int primary key,
majorName varchar(20)
);
-- insert into MajorInfo values (主键,专业名);
insert into MajorInfo values (1,'软件工程');
insert into MajorInfo values (2,'计算机科学技术');
insert into MajorInfo values (3,'通讯工程');
insert into MajorInfo values (4,'网络安全');
select * from MajorInfo;
-- 学生信息表
create table StudentInfo (
stuId int,-- 主键
stuName varchar(20),-- 姓名
stuNumber char(20),-- 学号
stuSex bit,-- 性别
stuBirthday datetime,-- 生日
majorId int,-- 专业(外键)
phone char(12),-- 电话
address varchar(200),-- 地址
primary key (stuId),
foreign key (majorId) references MajorInfo(majorId)
);
-- insert into StudentInfo values(主键,姓名,学号,性别,生日,专业id,电话,地址);
insert into StudentInfo values(1,'明明','S20160801001',1,'1992-05-04',1,'15846895412','湖南省长沙市雨花区芙蓉南路189号');
insert into StudentInfo values(2,'静静','S20160801002',0,'1993/09/12',1,'13843800544','广西壮族自治区南宁市西乡');
insert into StudentInfo values(3,'小王','S20150727001',1,'1991-07-05',2,'13843844944','广东省深圳市南山区深南大道附1路1893号');
insert into StudentInfo values(4,'老王','S20150727002',1,'1990-03-15',2,'18965485478','海南省三沙市西沙群岛黄岩岛中国海军南海舰队');
select * from StudentInfo;
-- 科目信息表
create table SubjectInfo (
subjectId int primary key,
subjectName varchar(20)
);
-- insert into SubjectInfo values (主键,科目名称);
insert into SubjectInfo values (1,'Java基础');
insert into SubjectInfo values (2,'MySQL应用');
insert into SubjectInfo values (3,'HTML语言');
insert into SubjectInfo values (4,'汇编语言');
select * from SubjectInfo;
-- 成绩表
create table Score (
pkId int primary key,
stuId int,
subjectId int,
score double
);
alter table Score
add constraint fk_stuId
foreign key (stuId)
references StudentInfo(stuId)
;
alter table Score
add constraint fk_subjectId
foreign key (subjectId)
references SubjectInfo(subjectId)
;
-- delete from Score;
-- insert into Score values (主键,学生id,科目id,成绩);
insert into Score values (1,3,2,89);
insert into Score values (2,2,1,88.5);
insert into Score values (3,3,3,59.5);
insert into Score values (4,1,3,93);
insert into Score values (5,1,1,91);
insert into Score values (6,2,2,89);
select * from Score;
/*
delete from StudentInfo
where stuId=3;
*/
select * from StudentInfo;
-- 查询所有学生的年龄
select stuName as 名字,
YEAR(NOW())-YEAR(stuBirthday) as 年龄
from StudentInfo
;
-- 根据学生名字查询学生所有参加的考试成绩
select SubjectInfo.subjectName as 课程,
Score.score as 成绩,
StudentInfo.stuName as 姓名
-- select *
from Score
inner join StudentInfo
on Score.stuId = StudentInfo.stuId
inner join SubjectInfo
on Score.subjectId = SubjectInfo.subjectId
where StudentInfo.stuName='静静'
;
-- 查询某一门功课,有哪些学生参加了考试,未参加考试,需要查询出学生的联系电话,用于联系学生本人或其家长
-- 查询开设的课程