美文网首页SQL小小白
SQL入门系列(八):数据库对象操作

SQL入门系列(八):数据库对象操作

作者: 凡有言说 | 来源:发表于2020-01-17 11:28 被阅读0次

    以下内容来源于《漫画SQL》系列课程的学习笔记

    这门课的链接:
    漫画SQL—网易云课堂

    数据库对象的操作,有插入数据、修改数据和删除数据。

    1.插入数据
    插入数据方式有两种:插入元组和插入子查询结果

    image.png
    (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

    整数型

    image.png
    CREATE table student (id INT(3) zerofill);
    

    小数型

    image.png
    image.png

    (2)字符串型


    image.png
    image.png

    char(n)

    image.png
    CREATE table student (ID char(10), Name char(20));
    

    varchar(n)

    image.png
    CREATE table customer(name char(10), address varchar(50));
    

    text(n)

    image.png

    (3)日期与时间型


    image.png
    image.png
    CREATE table user(name char(10), birthdate date);
    

    (4)数据完整性约束


    image.png 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
    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

    非空值约束

    image.png
    CREATE table test(id int primary key, name varchar(50) not null);
    

    唯一性约束

    image.png
    #建立部门表,要求部门名称列取值唯一,部门编号列为主键
    CREATE table dept(deptno int(10), name cher(20) unique, primary key(deptno));
    
    image.png

    创建标识字段

    image.png
    image.png

    一个表中最多有一个设置auto_increment的列,对于想使用此属性的列应该定义为NOT NULL,并定义为PRINARY KEY

    默认值约束

    image.png
    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.png
    image.png
    image.png
    image.png 公众号.png

    相关文章

      网友评论

        本文标题:SQL入门系列(八):数据库对象操作

        本文链接:https://www.haomeiwen.com/subject/qisbactx.html