alter table 旧表名 rename 新表名;
示例:
mysql> ALTER TABLE student RENAME student0;
alter table 数据表名 change 旧字段名 新字段名 字段定义;
示例:
mysql> alter table student0 change stuNo studentNo int;
-- 类似于重命名字段
alter table 数据表名 change 旧字段名 旧字段名 字段定义;
示例:
mysql> alter table student0 change studentNo studentno varchar(20);
-- 类似于重命名字段
alter table 数据表名 add 旧字段名 字段定义;
示例:
mysql> alter table student0 add sss 字段定义;
-- 删除字段
alter table 数据表名 drop 字段名;
示例:
alter table student0 drop sss;
drop table 数据表名1,数据表名...;
drop table if exists 数据表名1,数据表名...;
示例:
drop table student1,student2;
show warnings;
-- 添加全部字段数据, 按照字段从左到右的顺序添加,不能为空。
insert into 表名 values(字段值);
示例:
mysql> insert into student values(
-> 1013,'李文才','男',3,13500000015,'上海卢湾区','[email protected]',45032319861
2311000);
-- 添加个别字段,也是按照顺序添加,可以跳过不设置的字段
insert into 表名(字段名1,字段名2...) values(字段值1,字段值2...);
示例:
mysql> insert into student(name,gender,identityCard) values('老王','女','4322241
97809052456');
-- 同时添加多条数据
insert into 表名(字段名) values(字段值1),(字段值2),(字段值...);
示例:
mysql> insert into student(stuNo,name) values(1200,'超人'),(1201,'蝙蝠侠'),(1202
,'灭霸');
-- 添加多条数据
insert into 表名(字段名)
select '海王' union
select '海王老婆' union
……;
示例:
mysql> insert into student(name)
-> select '海王' union
-> select '海王老婆';
-- 全部修改
update 表名 set 字段名 = 字段值;
示例:
mysql> update student set number = 2222;
-- 条件修改
update 表名 set 字段名1 = 字段值1,字段名2 = 字段值2,... where 条件字段名1 = 条件字段值1,条件字段名2 = 条件字段值2...;
示例:
mysql> update student set loginPwd = 10,sex = '女' where gradeID = 2 and phone = 2;
-- 数值类型运算
update 表名 set 字段名 = 字段名 + 1 where 条件字段名 = 条件字段值;
delete from 表名 where 条件字段名1 = 条件字段值1 and/or 条件字段名2 = 条件字段值2;
示例:
mysql> delete from student where gradeID = 2 or gradeID = 3;
Query OK, 2 rows affected (0.00 sec)
truncate table 表名;
示例:
mysql> truncate table student;
-- 将另一张表的对应字段内容添加到新表中
create table 新表名(
select 字段名1,字段名2 from 旧表名
);
示例:
mysql> create table student3(
-> select stuno,name from student);
-- 将旧表字段添加到新表中
create table 新表名 like 旧表名;
示例:
mysql> create table student5 like student;
-- 完全复制表
create table 新表名 select * from 旧表名;
示例:
mysql> create table student6 select * from student;
-- 将另一张表的对应字段内容添加到对应表中,前提是字段名要相同
insert into 要添加的表 select 另一张表的字段名1,另一张表的字段名2... from 另一张表;
示例:
mysql> insert into student4 select stuno,name from student;
-- 将另一张表的全部字段内容添加到对应表中,两个表字段必须一致
insert into 要添加的表 select * from 另一张表;
示例:
mysql> insert into student5 select * from student;
可以拷贝一个表中其中的一些字段:
CREATE TABLE newadmin AS
(
SELECT username, password FROM admin
)
可以将新建的表的字段改名:
CREATE TABLE newadmin AS
(
SELECT id, username AS uname, password AS pass FROM admin
)
可以拷贝一部分数据:
CREATE TABLE newadmin AS
(
SELECT * FROM admin WHERE LEFT(username,1) = 's'
)
可以在创建表的同时定义表中的字段信息:
CREATE TABLE newadmin
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
SELECT * FROM admin
)
主键:能够唯一标识信息表中的一条数据的字段/字段组
ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段名);
ALTER TABLE 表名
ADD CONSTRAINT 主键
PRIMARY KEY 表名(字段名);
外键<面试题>
外键:在一张表中的某个字段引用的数据来自另一张表的某个字段的信息。
主表:它的主键一般是需要被从表引用
从表:在其中拥有外键 可以引用主表的主键信息
实现物理外键 :通过SQL语句将外键绑定好 ,可以保证数据一致性。
ALTER TABLE 从表
ADD CONSTRAINT 键名
FOREIGN KEY (从表字段名)
REFERENCES 主表(主表字段名);
为了能够方便我们进行数据表操作 ,在实际项目中一般不设置物理外键,而设置逻辑外键
相同点: 都可以进行数据删除(全表删除);
不同点:DEKETE 可以进行条件删除 TRUNCATE只能进行全表删除
DELETE 会保留自增序列,TRUNCATE除了表结构,其他数据全部清空,不会保留自增序列
不同点(先了解):TRUNCATE 会结束事务 而DELETE不会影响到事务。
<面试题>DELETE TRUNCATE的区别
相同点:都可以进行数据删除(全表删除)
不同点:DELETE可以进行条件删除 TRUNCATE只能进行全表删除
不同点:DELETE会保留自增序列 TRUNCATE除了表结构 其他数据全部清空 不会保留自增序列
不同点(先了解):TRUNCATE会结束事务 而DELETE不会影响到事务
主键、外键和索引的区别?
主键 | 外键 | 索引 | |
---|---|---|---|
定义: | 唯一标识一条记录,不能有重复的,不允许为空 | 表的外键是另一表的主键, 外键可以有重复, 可以是空值 | 唯一,可以有一个空值 |
作用: | 用来保证数据完整性 | 用来和其他表建立联系用的 | 是提高查询排序的速度 |
个数: | 主键只能有一个 | 一个表可以有多个外键 | 一个表可以有多个索引 |