MySql表的基础命令及数据操作命令
Posted 守夜人爱吃兔子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql表的基础命令及数据操作命令相关的知识,希望对你有一定的参考价值。
一、mysql关于表基础命令
1.1 表的创建
语法: create table if not exists 表名 ( 字段名 数据类型(null | not null,default | auto_increment,primary key,comment,varchar,), 字段名 数据类型 ... ) engine=存储引擎 charset=字符编码
数据类型 | 含义 |
---|---|
null,not null | 是否为空 |
default | 默认值 |
auto_increment | 自动增长,默认1开始,每次递增1 |
primary key | 主键 |
comment | 备注 |
varchar | 字符串 |
engine | 引擎,有myisam、innodb |
如果表名和字段名用了关键字,特殊符号,要用反引号括起来。 例:
小结:
- 如果不指定引擎,默认是myisam
- 如果不知道字符编码,默认和数据库的编码一致
1.2 表的文件
一个数据库对应一个文件夹,一个表对应两个个或多个文件,主要取决与引擎,引擎是innodb,生成一个文件。引擎是myisam生成3个文件:
innodb和myisam的区别:
- myisam查询速度快,容易产生碎片,不能约束数据
- innodb以前没有myisam查询速度快,现在已经提速了,不产生碎片
1.3 显示创建表的语句
语法: show create table stu2;
还可以 show create table stu2\\G
查询:
1.4 查看表结构
语法: describle 表名;
可以简写为: desc 表名;
1.5 删除表
语法: drop table if exists 表1,表2,...;
1.6 复制表
语法一: create table 新表 select 字段 | * from 旧表;
特点:不能复制父表的键,能够复制父表的数据。不写字段,写*号代表复制所有字段。
但是注意主键没有复制。
语法二: create table 新表 like 旧表;
特点: 只能复制表结构,不能复制表数据。
主键复制过来了,如果表里有数据,数据的话复制不了。
1.7 修改表
语法: alter table 表名;
我们以stu1为例,进行修改:
- 添加字段,语法:
alter table 表名 add [column] 字段名 数据类型 [位置];
就两个位置关键字,after ,first。
- 删除字段:
alter table 表 drop [column] 字段名;
- 修改字段(改名):
alter table 表 change [column] 原字段名 新字段名 数据类型...;
- 修改字段(不改字段名只能改属性),语法:
alter table 表 modify 字段名 字段属性...
- 修改引擎,语法:
alter table 表名 engine=引擎名;
现在stu5的引擎为myisam,现在给他修改为innodb。
- 修改表名,语法:
alter table 表名 rename to 新表名;
- 将表移动到其他数据库
二、MySQL关于数据操作命令
2.1 插入数据
语法: insert into 表名(字段名,字段名,...) values(值1,值2,...);
字段名可以省略,代表全有字段有需要插入,不过在values值那里,必须要与字段关系一一对应:
当字段为空值时,写null,为默认值时写default:
插入多个数据:
2.2 查询数据
语法:select 列命 | * from 表名;
2.3 更新数据
语法: update 表名 set 字段=值 [where 条件]
更新多个:
2.4 删除数据
语法:delete from 表名 [where 条件];
删除表中所有数据:delete from 表名 ;
或者 truncate table 表名;
两者区别:delete from 表:遍历表记录,一条一条的删除,truncate table:将原表销毁,在创建一个同结构的新表,就情空表而言,这种方法效率高。
我们再插入几条数据:
2.5 数据传输使用字符集
在插入数据的时候,如果插入中文,如果报错了,或者中文无法插入。 查看客户端发送的编码:
当前默认是gbk。
查看服务器接收返回的编码: show variables like 'character_set_%';
更改接收客户端指令编码: set character_set_client=编码格式;
:
接着我们去存入中文:
会发现已经乱码了,因为客户端发送的编码和服务端接收的编码不一致。如果将来有发现这个问题的话,就要注意编码要一致。
可以使用命令 set names gbk;
将服务端,所有编码全部都以gbk的编码形式。
最后
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的程序员,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。
现在竞争这么激烈,只有通过不断学习,提高自己,才能保持竞争力。
对于一些不知道学习什么,没有一个系统路线的程序员,这里给大家提供一些学习资料
需要的小伙伴,可以一键三连,点击这里获取免费领取方式!
《Java核心知识点合集(283页)》
内容涵盖:Java基础、JVM、高并发、多线程、分布式、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、数据库、云计算等
《Java中高级核心知识点合集(524页)》
《Java高级架构知识点整理》
《Docker从入门到实践》
《spring could 学习笔记》
《JVM与性能调优知识点整理》
《MySQL性能调优与架构设计解析文档》305页
《nginx入门到实战》319页
《Java并发编程》385页
《1000道 互联网Java工程师面试题 (485页)》
需要的小伙伴,可以一键三连,点击这里获取免费领取方式!
以上是关于MySql表的基础命令及数据操作命令的主要内容,如果未能解决你的问题,请参考以下文章