MySQL数据表添加和修改

数据表添加和修改

修改表结构

重命名数据表名称

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 主表(主表字段名);

为了能够方便我们进行数据表操作 ,在实际项目中一般不设置物理外键,而设置逻辑外键

<面试题>DELETE TRUNCATE的区别

相同点: 都可以进行数据删除(全表删除);

不同点:DEKETE 可以进行条件删除 TRUNCATE只能进行全表删除

DELETE 会保留自增序列,TRUNCATE除了表结构,其他数据全部清空,不会保留自增序列

不同点(先了解):TRUNCATE 会结束事务 而DELETE不会影响到事务。

<面试题>DELETE TRUNCATE的区别

相同点:都可以进行数据删除(全表删除)

不同点:DELETE可以进行条件删除 TRUNCATE只能进行全表删除

不同点:DELETE会保留自增序列 TRUNCATE除了表结构 其他数据全部清空 不会保留自增序列

不同点(先了解):TRUNCATE会结束事务 而DELETE不会影响到事务

主键、外键和索引的区别?

主键 外键 索引
定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复, 可以是空值 唯一,可以有一个空值
作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度
个数: 主键只能有一个 一个表可以有多个外键 一个表可以有多个索引

你可能感兴趣的:(数据库)