数据库的增删改查sql语句,SQL数据库常用方法增删改查?

1、插入数据

数据库的增删改查sql语句,SQL数据库常用方法增删改查?

向表中插入一条数据的 SQL 语法如下:

INSERT INTO [TABLE_NAME] (column1, column2, column3,...columnN) VALUES (value1, value2, value3,...valueN);

那好,我们具体来看一个例子吧。

先创建这么一张 person 表,使用如下 SQL:

create table person( id int primary key, name varchar(16) not null, age int, phone varchar(11), address varchar(256) );

接着,我们插入一条数据:

insert into person(id,name,age,phone,address) values (1,'yang',22,'123232323','中国上海');

于是你查询 person 表,会看到

+----+------+------+-----------+--------------+ | id | name | age | phone | address | +----+------+------+-----------+--------------+ | 1 | yang | 22 | 123232323 | 中国上海 | +----+------+------+-----------+--------------+

当然,如果你在插入数据时有些字段的值暂时不想传入,或是该字段有默认值,insert 语句是允许你部分数据插入的,前提是不能违反一些非空、唯一、类型不匹配约束。

例如我只想插入一条数据,而我只知道这个人的名字,于是我也可以插入一条记录,但只赋值 name 字段。

insert into person(id,name) values (2,'cao');

再次查询 person 表:

+----+------+------+-----------+--------------+ | id | name | age | phone | address | +----+------+------+-----------+--------------+ | 1 | yang | 22 | 123232323 | 中国上海 | | 2 | cao | NULL | NULL | NULL | +----+------+------+-----------+--------------+

关系型数据库中,所有未赋值的字段都默认为 NULL,当然这个默认值是可以修改的,你可以修改为空字符串或空格等等。

再说一个细节,当你想要插入一条数据时,并且希望为该表的每一个字段都赋值,那么你可以不用在表名后列举所有字段名,例如以下两条 insert 语句是等效的。

insert into person(id,name,age,phone,address) values (1,'yang',22,'123232323','中国上海');

insert into person values (1,'yang',22,'123232323','中国上海');

关于 insert,我们暂时先说到这,后面介绍子查询的时候还会提到它,接着我们来看修改数据 update。

2、修改数据

数据库的增删改查sql语句,SQL数据库常用方法增删改查?

SQL UPDATE 语句用于修改表中现有的记录。基本格式如下:

UPDATE [table_name] SET column1 = value1, column2 = value2...., columnN = valueN

举个例子,这是 person 表现在的数据情况:

+----+------+------+-----------+--------------+ | id | name | age | phone | address | +----+------+------+-----------+--------------+ | 1 | yang | 22 | 123232323 | 中国上海 | | 2 | cao | NULL | NULL | NULL | +----+------+------+-----------+--------------+

我们执行:

update person set address='浙江杭州';

再来看 person 表:

+----+------+------+-----------+--------------+ | id | name | age | phone | address | +----+------+------+-----------+--------------+ | 1 | yang | 22 | 123232323 | 浙江杭州 | | 2 | cao | NULL | NULL | 浙江杭州 | +----+------+------+-----------+--------------+

你会发现 person 表的所有记录的 address 字段全都修改为「浙江杭州」。

所以,一般来说,我们的 update 语句都会结合 where 子句做一个数据筛选,只修改符合条件的记录的 address 字段值。

例如:

update person set address='浙江杭州' where id = 1;

3、删除数据

数据库的增删改查sql语句,SQL数据库常用方法增删改查?

我们使用 DELETE 语句对标数据进行删除,基本格式语法如下:

DELETE FROM [table_name] WHERE [condition];

同样,不追加 where 子句做条件筛选会导致整张表的数据丢失。例如我们删除 id 为 1 的那条数据记录。

delete from person where id = 1;

如何通过优化sql语句提高数据库查询效率?

通过SQL调优提高查询性能最重要的就是对索引的使用,下面是对索引使用的一些总结,希望对你有所帮助。

MySQL索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源。

索引是用于快速查找记录的一种数据结构。索引就像是数据库中数据的目录,数据库在查询时,首先在索引中找到匹配的值,然后根据这个匹配值找到对应的数据行。

聚簇索引的顺序就是数据的物理存储顺序,索引中数据域存储的就是实际的数据,一个表最多只能有一个聚簇索引,适用于查询多行数据,不适用于频繁修改的列,一般在主键上创建。

非聚簇索引顺序与数据物理排列顺序无关,索引中存储的内容为实际数据的地址,适应于查询单行数据。

普通索引,即平时创建的普通索引。

唯一索引,索引所在的列或列组合的值是全表唯一的。

全文索引,MySQL从3.23.23版开始支持全文索引,它查找的是文中的关键词,而不是直接比较索引中的值。

单列索引,在单列上创建的索引。

组合索引,在多个列上创建的索引。

最左前缀查找:where子句中有a、b、c三个查询条件,创建一个组合索引abc(a,b,c),最左前缀的概念是说以组合索引最左边的列a组合成的查询条件,如(a,b,c)、(a,b)、(a,c),这三种情况的查询条件都会使用abc索引,和where子句中a、b、c出现的顺序没关系,可以是where c=? and b=? and a=?,但(b,c)组合不会使用索引,即where c=? and b=?。

哪些列适合创建索引:

1.经常作为查询条件的列;

2.经常作为排序条件的列;

3.经常作为join条件的列;

4.经常被查询的列。

哪些列不适合创建索引:

1.数据频繁被修改的列,数据被修改,索引需要做相应的修改,消耗资源; 2.区分度不是很高的列,如性别,列值重复性太大,索引效果不是很明显; 3.不是经常被作为查询条件、排序条件、连接条件的列。

经验总结:

1.列上进行函数计算将不会使用索引;

2.对于创建索引的列,避免存储NULL,NULL会使索引更加复杂、效率变低,可以使用NOT NULL进行约束;

3.对于模糊查询like '%abc%',将不会使用索引,而like 'abc%'将会使用索引;

4.对于not in、not exists、!=等负向查询将不会使用索引;

5.每次查询只使用一个索引,如果where条件使用了索引,order by将不再使用索引;

6.对于where子句中有多个查询条件的,单列索引的效率不如复合索引,因为查询每次只能使用一个索引;

7.MySQL只对以下操作符才使用索引:<、、>=、between、in,但是需要注意in的范围值不要太多;

8.union all可以使用索引,但本身效率不是很高,不建议使用;

9.列上进行类型转换的将不会使用索引;

10.老版本MySQL对OR条件不使用索引,新版本才支持,不建议使用OR。

关于索引的实战经验总结后续还会不断更新,可以关注我的号!

sql更新一条数据很慢,怎么办?

对于数据库而言,只要做好数据存储工作就行了,但对于SQL而言,执行效率是很重要的指标。目前主流的关系型数据库都自带了查询分析器和优化器,能自动对我们编写的SQL进行最优处理,即便如此,SQL执行慢的现象还是不可避免的。虽说SQL语句执行慢是大家经常遇到的,但背后原因并不简单。

数据库的增删改查sql语句,SQL数据库常用方法增删改查?

SQL执行是偶尔慢还是一直慢?

这一点很重要,SQL语句执行速度偶尔慢和一直慢的背后因素是不同的,自然要分场景来分析问题。

SQL执行偶尔慢的原因分析

如果一条SQL语句绝大多数情况下都是正常的,偶尔出现慢的情况,那一般来说此SQL语句问题不大,可能是其它因素影响了它的执行效率,比如:

1、服务器内存不足

若查询量大,而查询的数据页又不在内存中时,就需要申请内存,此时一旦内存不足就会淘汰一些内存数据,这些操作就会影响SQL执行速度。

2、日志文件过大

数据库在同步日志及数据到磁盘上时,也会影响SQL执行效率。

3、无法获取锁

当我们在操作数据时,若别人也在用这张表而且加锁了,我们无法获取到锁,只能等待他人释放锁,这个很影响SQL效率。

SQL执行一直慢的原因分析

如果数据量级不变,而某条SQL执行时一直都很慢,那就需要看看SQL语句写法是否存在问题了,另外数据库的一些配置是否存在问题,比如:

1、相关字段是否建有合适的索引?

比如更新操作,如果加了where条件,而条件列字段没有索引,那就意味着要全表扫描,这样一来SQL慢也就是正常现象了。

2、字段有索引,但SQL并没有用到此索引

并不是说我们对字段创建了索引,索引就一定会生效。在某些情况下,一些SQL写法会导致索引失效,比如在索引列上使用了函数。

3、系统采样统计失误导致系统没有使用索引而是全表扫描,此时需要强制使用索引

SQL执行时,数据库系统会进行一个预测:看是走索引扫描的行数少,还是全表扫描的行数少。索引基数是通过采样来统计的,存在一定误差,如果误差过大那可能会使系统错误的决定使用全表扫描,此时我们可以在SQL中声明强制走索引查询。

4、硬件限制

如果服务器CPU及磁盘读写速度低、内存小,那同样会影响整个数据库性能。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论