以下内容来源于《漫画SQL》系列课程的学习笔记
这门课的链接:
漫画SQL—网易云课堂
数据库对象的操作,有插入数据、修改数据和删除数据。
1.插入数据
插入数据方式有两种:插入元组和插入子查询结果
(1)插入元组
用于向表中插入新纪录(元组)
INSER INTO 表名(列名1,列名2,...)
VALUES(列值1,列值2,...)
INSERT INTO customers(姓名,城市,省份)
VALUES ('张五','宁波','浙江省')
以上SQL代码中属性列的顺序可与表中的顺序不一致。此外,在插入新纪录(元组)时,如果某字段是非空的则必须插入数值。
(2)插入子查询结果
INSERT INTO table2
SELECT * FROM table1
#将学生表中的信息插入到同学录中
INSERT INTO tongxuelu('姓名','联系方式')
SELECT name,tel FROM student
注意:
- INTO不可以省略
- 查询得到的数据个数、顺序、数据类型等,必须与插入的项保持一致。
2.修改数据
对表中的一行或多行纪录的某些列值进行修改
UPDATE 表名 SET 列名1=表达式1, 列名2=表达式2... [WHERE 条件表达式]
若没有where子句则表示修改表中的所有元组。
image.png(1)修改某一元组的值
#将学号001的学生成绩改为86分
UPDATE student SET grade=86 WHERE no='001'
(2)修改多个元组的值
#将所有学生成绩增加5分
UPDATE student SET age=age+1
(3)带子查询的修改语句
#查询student和sc,将计算机系学生成绩归零
UPDATE sc SET grade=0 WHERE 'cs'=(SELECT dept FROM student,sc WHERE student.no=sc.no)
3.删除数据
删除表中的整行数据
DELETE FROM 表名 [WHERE 条件表达式]
若没有where子句则表示要删除表中的所有行。在使用delete语句时要小心,因为数据是从数据库中永远删除。
image.png(1)删除某一元组
#删除学号为001的学生记录
DELETE FROM student WHERE no='001'
(2)删除多个元组
#删除student表学生编号为001的学生信息,和sc表中对应的成绩信息
DELETE FROM student,sc WHERE student.no=sc.student and student.no='001'
(3)带子查询的删除语句
#删除选修了计算机系的学生的选课记录
DELETE FROM sc WHERE 'CS'=(SELECT dept FROM student WHERE student.no=sc.no)
4.创建数据库
CREATE database 数据库名;
注意使用分号结尾,否则sql会认为语句没有输入完。
5.创建表
CREATE table 表名(列名1 列类型[列的完整性约束], ...)
MySQL中列的数据类型
image.png
(1)数值型
image.png
image.png
整数型
CREATE table student (id INT(3) zerofill);
小数型
image.png
(2)字符串型
image.png
image.png
char(n)
CREATE table student (ID char(10), Name char(20));
varchar(n)
CREATE table customer(name char(10), address varchar(50));
text(n)
(3)日期与时间型
image.png
image.png
CREATE table user(name char(10), birthdate date);
(4)数据完整性约束
image.png image.png
主键约束
image.png
#a.设置单个字段的主键
CREATE table student (sid int not null, name varchar(20) not null, primary key(sid));
#b.设置多个字段的主键
CREATE table sc (name varchar(20), classid int(10), grade numeric(4,1), primary key(name, classid))
image.png
外键约束
image.png
image.png
CREATE table score(cid nit not null auto_increment primary key, score int, sid int, foreign key(sid) references student(sid));
image.png
image.png image.png
非空值约束
CREATE table test(id int primary key, name varchar(50) not null);
唯一性约束
#建立部门表,要求部门名称列取值唯一,部门编号列为主键
CREATE table dept(deptno int(10), name cher(20) unique, primary key(deptno));
image.png
创建标识字段
image.png
一个表中最多有一个设置auto_increment的列,对于想使用此属性的列应该定义为NOT NULL,并定义为PRINARY KEY
默认值约束
CREATE table student(编号 int auto_incremnet primary key, 姓名 char(8) not null, 性别 char(4) default'男')
6.修改表
image.png(1)添加新列
ALTER table 表名 ADD 列名 列类型 [完整性约束];
ALTER table people ADD address varchar(100);
(2)添加主键
image.png
image.png
ALTER table product ADD id int(5) not null, ADD primary key(id);
(3)添加外键
ALTER table 表名 ADD foreign key(列名) reference 表名(列名);
ALTER table user ADD foreign key(id) reference province(PID);
(4)删除列
ALTER table 表名 DROP 列名;
ALTER table test DROP name;
(5)删除主键
image.png
image.png
(6)修改列名称或列类型
ALTER table student MODIFY sage smallint;
注意:修改原有的列定义可能会破坏已有数据。
(7)更改指定列的默认值
ALTER table 表名 ALTER 列名 set default 默认值;
ALTER table people ALTER name set default 100;
7.删除表
可以删除一张或多张表
#删除单张表
DROP table customer;
#删除多张表
DROP table customer,sc;
关于删除语句的比较
image.pngimage.png
image.png
image.png 公众号.png
网友评论