[MySQL]数据库原理5——喵喵期末不挂科

希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

目录

前言

删除表

表数据操作

1.使用INSERT INTO| REPLACE语句

2.用LOAD DATA语句将数据装入数据库表中

3.图片数据的插入

修改数据

删除数据

同步练习

总结


前言

冲冲冲!!!


删除表

如果表不合适或不需要了,可以用命令删除已存在的表。
语法格式:

    mysql> DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

删除表STUDENTS1

mysql> DROP  TABLE  STUDENTS1;


表数据操作

插入数据
INSERT  INTO ,将以主键判断数据是否重复,如果重复,则整行插入不成功。
REPLACE  INTO ,同样以主键判断数据是否重复,如果重复,将替换原数据行。
LOAD DATA INFILE ,可以将外部文件的数据导入指定表。
一次可以插入一行或插入多行数据。

1.使用INSERT INTO| REPLACE语句

语法格式:
		  INSERT|REPLACE   [INTO] tbl_name [(col_name,...)]
		  VALUES ({expr | DEFAULT},...),(...),...
		  | SET col_name ={expr | DEFAULT}, ...

举个例子:

同时向表 STUDENTS 中插入两行数据

   ('132001' '李平',‘男’, ‘1992-02-01' ,‘D001' ,‘上海市南京路1234' '021-345478' NULL)

  ('132002' '张三峰' '' '1992-04-01' 'D001' '广州市沿江路58' '020-345498', NULL)

 mysql> INSERT INTO STUDENTS VALUES

    ('132001', '李平', '', '1992-02-01', 'D001', '上海市南京路1234', '021-345478', NULL),

    (‘132002’, ‘张三峰’, ‘’, ‘1992-04-01’, ‘D001’, ‘广州市沿江路58’, ‘020-345498’, NULL)

再次用 INSERT  INTO 语句向 STUDENTS 表中插入数据。

    mysql> INSERT INTO students (s_no, s_name, sex)VALUES('132001', '李小平', '');

改用 REPLACE  INTO 语句。

    mysql> REPLACE  INTO STUDENTS(s_no, s_name, sex) VALUES('132001', '李小平', '');

假设有一课程表与 COURSE 的结构相同,现将 COURSE 的数据插入到课程表中。

  mysql> INSERT INTO  课程表 SELECT * FROM COURSE;

 注:

  1VALUES子句:包含各列需要插入的数据清单,数据的顺序要与列的顺序相对应。若表名后不给出列名,则在VALUES子句中要给出每一列(IDENTITYtimestamp类型的列)的值,如果列值为空,则值必须置为NULL,否则会出错。

(2)使用INSERT语句可以向表中插入一行数据,也可以插入多行数据,最好一次插入多行数据,各行数据之间用“,”分隔。

(3)可使用SET子句插入数据,用SET子句直接赋值时可以不按列顺序插入数据,对允许空值的列可以不插入。

  4 REPLACE  INTO向表中插入数据时,首先尝试插入数据到表中, 如果发现表中已经有此行数据(根据主键或者唯一索引判断),则先删除此行数据,然后插入新的数据,否则,直接插入新数据。

    (5)还可以向表中插入其他表的数据,但要求两个表要有相同的结构。 


2.用LOAD DATA语句将数据装入数据库表中

LOAD DATA INFILE 语句 是SELECT ... INTO OUTFILE的逆操作 ,用来导入、导出数据。

举个例子:

course表的数据导出到course.txt中。

SELECT * from jxgl.course into OUTFILE 'd:/course2.txt';

  创建一个名为“课程表”的表,将course.txt的数据插入到课程表中。

LOAD DATA LOCAL INFILE ‘D:\course2.txt’ INTO TABLE 课程表 character set utf8;????

注:

  (1)MySQL Server默认的字符集是UTF8,在插入数据时,为避免中文字符乱码,要加上character set utf8。

  (2)course.txt各行文本之间要用制表符<Tab>分隔。


3.图片数据的插入

MySQL 还支持图片的存储,图片一般可以以路径的形式来存储,即插入图片采用直接插入图片的存储路径。
当然,也可以直接插入图片本身,只要用 LOAD_FILE( ) 函数即可。

122110,程明,男, 1991-02-01D001,北京路123号,02066635425picture.jpg

    其中,照片路径为“D: \IMAGE\ picture.jpg”。

mysql> INSERT INTO STUDENTS

             VALUES('122111', '程明3', '', '1991-02-01', 'D001', '北京路123','02066635425', 'D:\IMAGE\picture.jpg');

下面语句是直接存储图片本身。

 mysql> INSERT INTO XS

 VALUES('122110', '程明', '', '1991-02-01', 'D001', '北京路123',  '02066635425', LOAD_FILE('D:\IMAGE\picture.jpg');

注:

1)存放图片的字段要使用BLOB类型。BLOB是专门存储二进制文件的类型,有大小之分,例如mediumbloblongblob等,以存储大小不同的二进制文件,一般的图形文件使用mediumblob就足够了。

2)插入图片文件路径的办法要比插入图片本身好。图片如果很小的话,可以存入数据库,但是如果图片大的话,保存或读取操作会很慢,倒不如将图片存入指定的文件夹,然后把文件路径和文件名存入数据库。


修改数据

UPDATE...SET... 命令对表中的数据进行修改。可以修改一个表的数据,也可以修改多个表( 关联表 )的数据。
修改单个表,语法格式为:
		  UPDATE tbl_name
		  SET col_name 1= [,col_name 2=expr2 ...] 
		  [WHERE子句]
		  [ORDER BY子句]
		  [LIMIT子句]
举个例子:
将学号为122001学生的A001成绩修改为80分。

mysql> UPDATE SCORE SET REPORT=80 WHERE S_NO='122001';

将课程A202的类型修改为专业基础课程。

mysql> UPDATE COURSE SET  TYPE='专业基础课'  WHERE C_NO='A202';

将A001课程成绩*1.2转为120分制计。

mysql> UPDATE SCORE SET REPORT=REPORT*1.2 WHERE C_NO='A001‘;

注:
SET子句:根据WHERE子句中指定的条件,对符合条件的数据行进行修改。若语句中不设定WHERE子句,则更新所有行。
expr1、expr2……可以是常量、变量或表达式。可以同时修改所在数据行的多个列值,中间用逗号隔开。

删除数据

从单个表中删除,语法格式:
		  DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
		 [WHERE子句]
		  [ORDER BY子句]
		  [LIMIT row_count]

举个例子:

删除女生记录。

mysql> DELETE FROM STUDENTS WHERE SEX='';

删除 B001 课程不及格的成绩记录。

mysql> DELETE FROM SCORE WHERE C_NO='B001' AND REPORT <60;

删除 SCORE 表的所有成绩记录。

mysql> DELETE FROM SCORE;

删除 SCORE 表中分数最低的 3 行记录。

mysql> DELETE FROM SCORE ORDER BY REPORT  LIMIT 3;

注:

1QUICK修饰符:可加快部分种类的删除操作的速度。

2FROM子句:用于指定从何处删除数据。

3WHERE子句指定的删除条件。如果省略WHERE子句则删除该表的所有行。

4ORDER BY子句:各行按照子句中指定的顺序进行删除,此子句只在与LIMIT联用时才起作用。ORDER BY子句和LIMIT子句的具体定义将在任务10中介绍。

5LIMIT子句:用于告知服务器在控制命令被返回到客户端前被删除的行的最大值。

6)数据删除后将不能恢复,因此,在执行删除之前一定要对数据做好备份。

7)关键词LOW_PRIORITY,低优先级,DELETE的执行被推迟到没有其他客户读取表后。


同步练习

--use jxgl;
--1.复制表的结构
--create table if not exists  new_ta_name like old_tab_name;
--复制students表的结构,新表名为students_1
--create table if not exists students_1 like students;
--2.复制表的结构和数据
--select * from students;
--复制students表的结构和数据,新表名为students_2
--create table if not exists students_2 as select * from students;
--创建一个表course的附表course1
--create table if not exists  course1 as select * from course;
--用命令查看course1的基本结构详细结构
--desc course1;
/*
show create table course1;
CREATE TABLE `course1` (
  `c_no` char(4) NOT NULL,
  `c_name` char(10) DEFAULT NULL,
  `hours` int(11) DEFAULT NULL,
  `credit` int(11) DEFAULT NULL,
  `type` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
*/
--复制表course的结构和数据,名为course_copy。
--create table if not exists  course_copy as select * from course;
--3.删除表
--drop table ta_name
--删除表students_1
--drop table students_1;
--总结:创建表 查看表  修改表 复制表  删除表
--数据表的操作:增删改查
--1.插入数据
--1.1插入所有字段对应的值
--insert into 表名 VALUES();
--向course表插入一条记录(D001,数据库原理A,48,3,专业基础课)
--insert into course  values('D001','数据库原理A',48,3,'专业基础课');
--向course表插入多条记录(D001,数据库原理A,48,3,专业基础课),
--                      (D002,数据库原理B,48,3,专业基础课),
--                      (D003,数据库原理C,48,3,专业基础课)
/*
insert into course values('D002','数据库原理A',48,3,'专业基础课'),
                         ('D003','数据库原理B',48,3,'专业基础课'),
                         ('D004','数据库原理C',48,3,'专业基础课');
*/
/*
同时向表STUDENTS中插入两行数据
     ('132001' ,'李平',‘男’, ‘1992-02-01' ,‘D001' ,‘上海市南京路1234号' ,'021-345478' ,NULL) ,
     ('132002' ,'张三峰' ,'男' ,'1992-04-01' ,'D001' ,'广州市沿江路58号' ,'020-345498', NULL)。
*/
/*
insert into students 
      values('132001' ,'李平','男','1992-02-01','D001' ,'上海市南京路1234号','021-345478',NULL),
            ('132002' ,'张三峰' ,'男' ,'1992-04-01' ,'D001','广州市沿江路58号' ,'020-345498', NULL);
*/
--1.2插入部分字段的值
-- 向表STUDENTS中插入('132001' ,'李平', ‘1992-02-01' ,‘D001' )数据
--insert into 表名(字段名)   values()
--insert into students(s_no,s_name,birthday,d_no)  values('132003' ,'李xiao平', '1992-02-01' ,'D001' );
--向表STUDENTS中插入('132004' ,'李平1', ‘D001' ,'沙坪坝区')
--                  ('132005' ,'李平2', ‘D001' '巴南区')
--                  ('132006' ,'李平3', ‘D001' ,'九龙坡区')数据
--1.3把一个表的数据复制到另一个表:两个表的结构要一样
--create table if not exists student_3 like students;
--把数据复制过来
--insert into student_3 select * from students;
--1.4把数据表的数据导出到外部文件
--select * from students;
--select * from students into outfile 'c:\student.doc';
--1.5把外部文件的数据导入到数据表
--create table if not exists student_4 like students;
--LOAD data local infile 'c:\student.doc' into table student_4 character set utf8;
--1.6图片数据的插入
--(1)直接图片的路径
--insert into students(s_no,s_name,photo) values('132004','ln','D:\Jellyfish.jpg');
--(2)直接存放图片
--insert into students(s_no,s_name,photo) values('132005','lm',load_file('D:\Jellyfish.jpg'));


总结

数据库,get!!!


希望你开心,希望你健康,希望你幸福,希望你点赞!

最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!!

喵喵喵,你对我真的很重要!

  • 98
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 79
    评论
评论 79
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫佛佛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值