使用MySQL数据库
连接数据库
mysql -u root -p
Enter Password: root
创建数据库sql_study
create database sql_study;
查看数据库,注意databases加s表示复数
show databases;
选择数据库
use sql_study;
创建学生信息表Students
create table Students
(Student_ID char(11),
Sname varchar(8),
Ssex varchar(2),
Sbirth date,
Nationality varchar(40),
Dept_ID char(3),
Class_ID char(5));
创建课程表Courses
create table Courses
(Course_ID varchar(4),
Cname varchar(20),
Credits tinyint(1) unsigned);
创建选课表SC
create table SC
(Student_ID varchar(7),
Course_ID varchar(4),
Grade tinyint(2) unsigned);
为学生表添加
主键约束
alter table students add constraint primary key(Student_ID);
为课程表的课程名称设置唯一值约束
alter table Courses add constraint unique(Cname);
为学生表的学生姓名设置非空约束(*:不能使用add constraint的方式,使用modify)
alter table students modify Sname varchar(8) not null;
学科表的成绩取值设置检查约束0-100
alter table SC add constraint grade_chk check(Grade >= 0 and Grade <= 100);
“所有的存储引擎均对CHECK子句进行分析,
但是忽略CHECK子句。”
外键约束可以保证使用外键约束的数据库列与所引用的主键约束的数据列一致 ,外键约束在一个表中可以有多个。
语法格式:
alter table table_name
add constraint constraint_name foreign key(column_name)
reference table_name(column_name) on delete cascade
reference:要引用的表名
on delete cascade:级联删除,当被参照表的主键字段被删除时,参照表中的外键所对应的字段也同时被删除。
选修表中的学生要参考学生表的信息,课程号需要参考课程表的信息
alter table SC add constraint sid_fk foreign key(Student_ID) references Students(Student_ID) on delete cascade;
alter table SC add constraint cid_fk foreign key(Course_ID) references Courses(Course_ID) on delete cascade;
删除约束
alter table table_name drop constraint constraint_name;
修改表
alter table table_name
add column_name | modify column_name | drop column column_name | rename old_column_name to new_column_name
重命名表
alter table table_name rename to new_table_name;
删除表
drop table table_name;
*:drop 后面总跟着 column 或者 table 关键字,重命名表要加 column
-------------------------------------------------------------------------------------------------------------------------------------
插入数据
insert into courses
values('0001','大学语文','4');
insert into courses(Courses_ID,Cname,Credits)
values('0002','高等数学','4');
insert into courses
values('0003','计算机基础','4'),('0004','数据库概论','4');
insert into courses_copy
select * from courses;
update courses set Credits=3 where Cname='大学语文';
如果不带where,则表中所有的行被更新
delete from courses where Credits=3;
如果不带where,则表中所有数据被删除