2020-09-28

                                     Msql数据管理2

 insert 插入单条数据:

语法:

方式1: 注意列名和值的顺序要一 一对应

INSERT INTO ‹表名› (‹列名1› ,‹列名2›, … ‹列名n›)
VALUES (值1,值2,… , 值n);

方式二: 要插入的数据的列名在 SET 子句中指定,等号前面 为指定的列名,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。

INSERT INTO ‹表名›
SET ‹列名1› = ‹值1›,
    ‹列名2› = ‹值2›,
     ...;

方式三:
INSERT 语句中没有指定插入列名,只有一个值列表。在这种情况下,值列表为每一个字段列指定插入的值,并且这些值的顺序必须和 表中字段定义的顺序相同。

INSERT INTO ‹表名› values (值1,值2,....)

插入多条数据

语法:

只需要在增加多个值列表即可,值列表之间用,分隔开

INSERT INTO ‹表名› (‹列名1› ,‹列名2›, … ‹列名n›)
VALUES 
(值1,值2,… , 值n),
(值1,值2,… , 值n),
...
(值1,值2,… , 值n);

实战

插入一条数据到学生表

  1. 插入一条学生数据(‘赵雷’ , ‘1990-01-01’ , ‘男’)

insert into student ( sname, birthday, sex) values ('赵雷' , '1990-01-01' , '男');
  1. 插入一条学生数据 (2 , ‘钱电’ , ‘1990-12-21’ , ‘男’),这次包含id

insert into student values (2 , '钱电' , '1990-12-21' , '男');
  1. 插入一条学生数据: ‘孙风’ , ‘1990-12-20’ , ‘男’

insert into student set sname='孙风',birthday='1990-12-21',sex='男';

插入多条数据

批量插入如下数据

('04' , '李云' , '1990-12-06' , '男')
('05' , '周梅' , '1991-12-01' , '女')
('06' , '吴兰' , '1992-01-01' , '女')
('07' , '郑竹' , '1989-01-01' , '女')
('09' , '张三' , '2017-12-20' , '女')
('10' , '李四' , '2017-12-25' , '女')
('11' , '李四' , '2012-06-06' , '女')
('12' , '赵六' , '2013-06-13' , '女')
('13' , '孙七' , '2014-06-01' , '女')

sql语句:

insert into student values
('04' , '李云' , '1990-12-06' , '男'),
('05' , '周梅' , '1991-12-01' , '女'),
('06' , '吴兰' , '1992-01-01' , '女'),
('07' , '郑竹' , '1989-01-01' , '女'),
('09' , '张三' , '2017-12-20' , '女'),
('10' , '李四' , '2017-12-25' , '女'),
('11' , '李四' , '2012-06-06' , '女'),
('12' , '赵六' , '2013-06-13' , '女'),
('13' , '孙七' , '2014-06-01' , '女');

 select 查询数据

查询学生表中名字为钱电的所有信息

select * from student where sname='钱电';

查询学生表中生日 小于 ‘1991-12-01’ 的学生信息

select * from student where birthday‹'1991-12-01';

查询学生表中 生日小于’2013-06-13’的女生 和 所有男生 的学生信息

解析:
生日大于’2013-06-13’的女生 : birthday ‹ 2013-06-13 and sex = ‘女’
所有男生 : sex = ‘男’

select * from student where (birthday ‹ '2013-06-13' and sex = '女') or sex='男';

 

LIKE 关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:

[NOT] LIKE  '字符串'

其中:

  • NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。

  • 字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。

LIKE 关键字支持百分号“%”和下划线“_”通配符。

通配符是一种特殊语句,主要用来模糊查询。当不知道真正字符或者懒得输入完整名称时,可以使用通配符来代替一个或多个真正的字符。

% 通配符

% 代表任何长度的字符串,包括长度0;
例如:
以 王 开头的字符 : 王%
包含 王 的字符 : %王%
以 王 结尾的字符: %王

_ 通配符

“_”只能代表单个字符

例如:

第二个字符为王 : _王%  
倒数第二个字符为王 : %王_  
第三个字符为王 : __王%

LIKE BINARY

BINARY 关键字用于区分大小写,默认like 不区分大小写
例如:
like ‘t%’ 可以查询 T 和 t 开头的字符
LIKE BINARY ‘t%’ 只可以查询 t 开头的字符
LIKE BINARY ‘T%’ 只可以查询 T 开头的字符

实战:

查找学生表中姓 赵 的学生

select *
from student
where sname like '赵%';

查找学生表中 不姓赵 的学生

select *
from student
where sname not like '赵%';

查找学生表中姓名包含兰的学生

select *
from student
where sname like '%兰%';

插入几个外国学生,查询大写J开头的学生信息

insert into student ( sname, birthday, sex) values 
('Jim Green' , '1990-01-01' , '男'),
('Dave Brice' , '1990-01-01' , '男'),
('Ann King' , '1990-01-01' , '男'),
('Rose Rice' , '1990-01-01' , '男'),
('jack Washton' , '1990-01-01' , '男');

查找学生表中姓名第三字为七的学生

select *
from student
where sname like '__七%';

查找学生表中姓孙的男生

select *
from student
where sname like '孙%'
  and sex = '男';

update

修改表中的数据

语法:

UPDATE ‹表名› SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]

不加 where 子句也可以,那样会修改整张表的数据,在工作中一定要加where子句,减少对其他同事的测试数据造成影响。

实战

修改赵雷的生日为1990-01-02

update student set birthday = '1990-01-02' where sname='赵雷';

修改sid=14的学生姓名为David,生日为 1997-02-02

update student set sname='David',birthday = '1997-02-02' where sid=14;

修改孙九九的性别为女

update student set sex = '女' where sname = '孙九九';

 

 

DELETE (删除表中数据)

语法:

DELETE FROM ‹表名› [WHERE 子句]

WHERE 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。

实战

删除 姓名为D开头的学生

delete from student where sname like 'D%';

删除 姓孙的 男生

delete from student where sname like '孙%' and sex = '男';

TRUNCATE (清空表数据)

语法:

TRUNCATE 表名

TRUNCATE 用于完全清空一个表

与DELETE 的区别

DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的表,再重新创建一个一模一样的新表,而不是逐行删除表中的数据,执行数据比 DELETE 快。因此需要删除表中全部的数据行时,尽量使用 TRUNCATE 语句, 可以缩短执行时间。
DELETE 删除数据后,系统不会重新设置自增字段的计数器;TRUNCATE 清空表记录后,系统会重新设置自增字段的计数器。

总结
当不需要该表时,用 DROP;当仍要保留该表,但要删除所有记录时,用 TRUNCATE;当要删除部分记录时,用 DELETE。

实战

清除 teacher 表

truncate teacher;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值