标签:结构 update ... date 基础上 info 基础 记录 table
十一.增加数据
现有一张student表,表设计如下:
sno为主键并自增,saddress 表示地址,设定了默认值:‘广东省广州市‘
1.完整的增加一条 insert into tables values(val1,val2,...,valn)
insert into student values(NULL,‘李冰‘,‘男‘,‘libing@qq.com‘)
注意:
a.必需要保证values() 中的值 与 表中列的按顺序顺序一一对应 ,个数一致
b.sno主键设置自增后,可以交由mysql 自动处理, 可以传入NULL值,此时该记录的 sno 会由自动生成
缺点:当表结构发生变化时,此时insert 会报错
2.按照指定列增加 insert into table_name(column1,column2,...,columnn) values(val1,val2,...,valn)
insert into student(sname,ssex) values(‘王明‘,‘男‘)
注意:
a.同样需要保证values中的值的个数 与前面指定的 列的个数顺序 对应
优点:
a.列的顺序可以自己指定, 同样value值也要与列名对应 ,以后表中新增列时,insert 语句 不会受影响
b.相比插入完整的一行 , 插入指定列,一些不必要的值,可以不用传, 只需要传一些必传的值,sql语句变的更简洁了
3.增加多行记录 Insert into table_name valuesvalues(val1,val2,...,valn),values(val1,val2,...,valn),values(val1,val2,...,valn)
insert into student values(NULL,‘李玲‘,‘女‘,‘liling163.com‘),(NULL,‘大才‘,‘男‘,NULL),(NULL,‘逍遥‘,‘男‘,‘xiaoyao@qq.com‘)
在 1 ,2 的基础上 只需要在values 后 跟上多组数据即可,插入多行
优点: 插入多行有两种形式, 单行插入执行多次 , 多行插入执行1次 , 相比前者而言 ,多行插入执行1次, 性能耗时会大大减少
4.插入 select语句查询出的数据
insert into student(sname,ssex,semail,saddress)
select sname,ssex,semail,saddress from student
这种方式 不会要求select查出的列名与 需要插入数据的表的列名 一致, 只需保证顺序一致, 数据兼容即可
insert 提高数据库性能:
1.生产中, 可能会出现并发访问数据库,进行增删改查的情况, 一般情况查的优先级更高一些. 同时insert 时,需要建立索引 耗时较久,同时还可能造成后续select语句性能的降低
此时可以通过降低 insert 语句的优先级, 来提高性能 ;语法格式: insert low_priority into ... . 同样也适用于delete update语句
2.多行插入执行1次 性能要高于 一行插入执行多次
安全: 可以禁用用户的insert权限,限制部分用户的不可以进行insert 保证数据的安全
十二.更新,删除 数据
update 语句一定要搭配where子句使用,否则更新就是更新整张表中的所有数据,这种误操作,会造成难以想象的结果....
更新单列 update tablename set column = newValue where condition
update student set semail = ‘wangming@qq.com‘ where sname = ‘王明‘
更新多列update tablename set column1 = newValue1 ,column2 = newValue2,...column_n = newValuen where condition
update student set semail = ‘wangming@qq.com‘,saddress = ‘广东省东莞市‘ where sname = ‘王明‘
标签:结构 update ... date 基础上 info 基础 记录 table
原文地址:https://www.cnblogs.com/lzzRye/p/9370964.html