您的位置:首页 > 数据库 > MySQL

MySQL(4)常见使用命令:表内数据的增删改C(R)UD 查询select属于单独一类功能

2017-09-10 21:48 417 查看
在java代码中对数据库操作最频繁的就是对表中数据的CRUD操作:

增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)



其中:

查询mysql中使用select命令,它不会改变表的数据,会单独生成一个临时只读的表,单独另外整理

增删改:会改变表的数据!

数据记录存储位置:表。

【1 insert 语句】--数据记录的增加
方式一:全写

insert into 表名(列名1,列名2,列名3。。。。)  values(值1,值2,值3…..);

注意事项:

1、值与列一一对应。有多少个列,就需要写多少个值。如果某一个列没有值。可以使用null。表示插入空。

2、值的数据类型,与列被定义的数据类型要相匹配。并且值得长度。不能够超多定义的列的长度。

3、字符串:插入字符类型的数据,必须写单引号。在mysql中,使用单引号表示字符串。

4、date 时间类型的数据也可以直接使用单引号表示: ‘yyyyMMdd’ ,’yyyy-MM-dd’,’yyyy/MM/dd’ 

--如果主键是自动增长,可以直接书写null。

【注意】

当dos窗口插入含有中文的数据的时候,在dos窗口会出现错误。

原因:dos窗口的字符集是gbk,而数据库是utf8,在数据进行保存的时候出现了编码错误。

mysql有六处使用了字符集,分别为:

client:客户端
是客户端使用的字符集。Dos命令窗口就属于客户端

connection:客户端
是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置。   

results:客户端
是数据库给客户端返回数据时使用的字符集设定,如果没有指明,使用服务器默认的字符集。

database:服务器
是数据库服务器中某个库使用的字符集设定,如果建库时没有指明,将使用服务器安装时指定的字符集设置。     

server:服务器
是服务器安装时指定的默认字符集设定。       

system:服务器
是数据库系统使用的字符集设定。

【错误的产生原因】

客户端的数据是gbk,而服务器中设置的客户端字符集是utf8的,编码格式不一致。

查看mysql服务的所有客户端和服务端使用的字符集:show variables like 'character%';

方式二:省略部分列

insert into 表名(列名,列名,列名。。。。) values(值,值,值。。。。)

注意:

可以省略部分列名。某一列 有默认值,或者允许为空,才可以省略。

主键是自增长的认为是有默认值的。也可以省略

方式三:省略所有的列(最常用,记住一种就行了)

insert into 表名 values(值,值,值,值);

1、表中有多少列,就有多个值。

2、按照数据库表的结构,列和值去对应。 desc 表名 得到列的顺序。 从上倒下,对应的值,从左到右

整理:

如果主键:是自增长。不需要人工赋值(可以给值null)。数据库会按照自己的算法,为主键填充值。

通常遇到主键自增长,人工赋值的时候,赋值null。mysql会自己把null替换成新的值

insert into 表名(列名1,列名2) values(值1,值2);

【2 update 语句】--修改表记录

写法:update 表名 set 列名=值,列名=值 。。。。。  where  条件;

条件:将满足指定条件的某一行进行修改。

= 表示等于

> 大于

< 小于

>= 大于等于

<= 小于等于

<> 表示不等

多个列使用逗号(英文状态下半角)隔开。

注意:
如果没有where,会把表中的所有行的对应的列全部修改。
如果有条件。满足条件的数据才会被修改。

【3 delete语句】--删除表中数据的语句

delete from 表名 where 条件。

条件格式:如上

删除满足条件的行的数据。

delete是删除行的数据。

注意:

如果没有where,删除表中的所有的记录。

delete删除的是行(只保留列名)。

【4 Truncate 语句】--删除数据(先删除表,再创建表)

truncate table 表名: 

先删除表,再创建表,就等于将数据全部删除了。

性能问题: truncate table的性能更好

面试题:


如果使用delete删除表中所有记录和使用truncate table删除表中所有记录 有何不同 ?

删除过程不同
truncate 删除数据,过程先将整个表删除,再重新创建 
delete 删除数据,逐行删除记录 
truncate效率要好于delete 

语言定义不同
truncate 属于DDL,数据库定义语言DDL(Data Definition Language)(CREATE、ALTER、DROP)
delete 属于DML,数据操作语言(data manipulation language) (SELECT、UPDATE、INSERT、DELETE)
DCL数据控制语言(Data Control Language) (grant,deny,revoke等)



事务管理只能对DML(数据库操作语句)有效!

被事务管理的SQL语句可以回滚到SQL执行前状态。

delete 和 truncate的区别是delete删除的数据在事务管理的情况下还能恢复,而truncate则不能恢复。

事务:逻辑上的一组(一条或者多条sql语句)操作。称之为事务。这组sql语句,要么都成功,要么都失败。

start transaction 开启事务

失败:rollback  事务的回滚 ---- 事务的结束, 把修改的内容恢复到之前的状态。

成功:commit 提交 -----------事务的结束。把修改的内容进行永久保存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: