1 创建数据库
create database + 数据库名 + 字符集设定
e.g. create database test charset gbk;
2 修改表
- 修改表名,基本语法:
rename table 旧表名 to 新表名;
- 修改表选项,基本语法:
alter table + 表名 + 表选项[=] + 值;
表中新添字段 alter table 表名 操作 字段名 字段位置
表中修改字段 alter table 表名
更新表数据update table 表名 set 字段名= where 条件
删除整张表drop table 表名(表结构不存在)
删除整张表数据 delete from 表名(表结构还在 表数据没了)
删除表中数据delete from 表名 where 条件(数据可以恢复)
truncate from table(效率高,保留数据表结构,数据不能恢复)
表建好后添加主键:alter table 表名 add primary key(字段名)
删除主键:alter table 表名 drop primary key
修改自增长:alter table 表名 auto_increment = 值
删除自增长:alter table 表名 modify 字段名 字段类型
已有字段添加自增长:alter table 表名 modify 字段名 字段类型 auto_increment
删除唯一键:alter table 表名 drop index 索引名称
唯一键和主键本质相同,区别是唯一键可以为空,并且允许多个空值存在,主键不能为空
索引:提高查询的效率 约束数据的有效性
主键冲突:
方法一:
insert into 表名 values() on duplicate key update 冲突的字段名=值
方法二:替换
replace into 表名 values ();
蠕虫复制(表复制):
create table 表名 like 数据库.复制的表名
表内数据复制:
insert into 表名 select * from 复制的表名
group by和having好搭档
cross join 和多表查询一样 应该避免该查询方式
inner join 内查询
left join
right join
去重:distinct
外键:不在自己表中的键,如果一张表中有一个非主键的字段是另外一张表的主键,那么该字段就是外键,一个表中可以有多个外键。
创建表时创建外键:
create table 表名(.....
foreign key(字段名) reference 表名(字段名)
);
在创建表之后增加外键:
alter taable 表名 add constraint 外键名称 foreign key (外键字段) reference 外表名(主键字段);
删除外键:
alter table 表名 drop foreign key 外键字段;
父表:外键指向的表
子表:拥有外键的表
union 联合查询 使用order by要配合limit使用
视图:
create view 视图名 as select ....
视图本身不能修改 只能修改视图的来源
修改视图:alter view 视图名 as select ...
删除视图:
drop view + 视图名
视图意义:
- 视图可以节省 SQL 语句,将一条复杂的查询语句用视图来进行封装,以后可以直接对视图进行操作;
- 数据安全,视图操作主要是针对查询的,如果对视图结构进行处理,例如删除,并不会影响基表的数据;
- 视图往往在大型项目中使用,而且是多系统使用,可以对外提供有用的数据,但是隐藏关键(或无用)的数据;
- 视图是对外提供友好型的,不同的视图提供不同的数据,就如专门对外设计的一样;
- 视图可以更好(或者说,容易)的进行权限控制。
视图算法:undefined默认的
temptable临时的 合并
在MySQL中,修改字段排列位置的基本语法格式如下:
ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST | AFTER 字段名2;
修改自增字段
alter table table_name modify column col_name int auto_increment;