天天看点

sql数据表操作

使用MySQL数据库

连接数据库

mysql -u root -p
Enter Password: root
           

创建数据库sql_study

create database sql_study;
           

查看数据库,注意databases加s表示复数

show databases;
           

选择数据库

use sql_study;
           

创建学生信息表Students

sql数据表操作
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

sql数据表操作
create table Courses
(Course_ID varchar(4),
Cname varchar(20),
Credits tinyint(1) unsigned);
           

创建选课表SC

sql数据表操作
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子句。”

The CHECK clause is parsed  but ignored by all storage engines.

外键约束可以保证使用外键约束的数据库列与所引用的主键约束的数据列一致 ,外键约束在一个表中可以有多个。

语法格式:

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

-------------------------------------------------------------------------------------------------------------------------------------

插入数据

  1. 哪些列必须有值
  2. 哪些列有数据完整性约束
  3. 哪些列要通过函数管理
  4. 哪些列有默认值或允许空值
  5. 目标列的数据类型是什么
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,则表中所有数据被删除