6、Mysql操作数据库以及数据表

发布时间 2023-07-31 21:35:43作者: Operater

学习sql规则,可以让mysql服务器帮咱们做其他操作

1、操作数据库(文件夹)

create database 数据库名 default charset utf8;

表示整个数据库是utf8的格式

 

use 数据库名;

使用这个数据库

 

查看数据库

show databases;

 

删除数据库

drop database 数据库名;

数据库没有修改这一说,如果你想修改,就删除数据库,再创建数据库

 

2、操作表(文件)

use 数据库名;

先进入数据库

 

show tables;

然后看这个数据库下有哪些表

 

创建表

create table 表名(列名1 数据类型,列名2 数据类型) engine=innodb default charset=utf8;

创建表的时候也需要给它设置编码,一般设置为utf8,我们还可以加上engine=innodb,表示引擎是innodb,innodb是支持出错后的回滚操作的,这叫事务,原子性操作,一旦中间任何位置出了差错,都要回滚到原来的状态。

mysql只有引擎是innodb的时候,才支持事务,咱们的程序一般情况下都是支持事务操作的,所以引擎就设置成innodb,如果我的网站不允许,不会出现这种事务性的操作,那你选什么引擎都可以,推荐选myisam,因为它相对于innodb来说,支持全局索引,相对来说存储的时候速度更快一点,但就是不支持事务。

引擎其实就是一段代码,如果是这个引擎,以这种方式,那个引擎以那种方式,相当于写了if else判断。

举个例子

create table t1(id int,name char(10)) default charset=utf8;

我们创建了一个表叫t1,用的utf8编码,这个表有2列

 int为数字类型,char是字符串类型,后面括号的10表示只能有10个字符,如果超过10个就只取前面10个,永远只占10个字符。
查看表
show tables;
 
create table t2(id int null,name char(10))engine=innodb default charset=utf8;
数据类型后面还可以加null,表示可以为空,这一列就不用插入数据,加not null表示不可以为空,不写默认不为空
 
insert into t2(id,name)values(1,"张三");
我们正经插入一条数据
 
insert into t2(name)values("zhangsan");
然后我们把id拿掉,只写name,是不是表示只给name这一列插数据呀,后面的值只写一个zhangsan,这样写也能插进去
 

我们查询一下表里的数据
 
咱们在后面还可以加default,default 1表示默认是1,就是咱们不填值的时候帮咱们填的值
还有唯一标识,表示每个人的东西不能重复,所以可以加上auto_increment primary key,如果你加上它之后,这一列就会自增,就是从1开始,它每次都是加1,这一列你还不用给它插数据。
在mysql里,还有一个约束,如果你是自增的,就必须是个key,这个key称为索引。
和auto_increment搭配的是primary key
primary key有2个作用:
1、表示约束,约束的条件是不能重复,且不能为空
如果有一列设置了primary key,就表示不能为空,也不能重复
2、加速查找
就是你查的时候会特别快,因为它会给你生成另外一个文件,另外一个文件会帮咱们去查找,在这只要知道它会查找就可以了,讲索引的时候会细说。
1个表里只能有一个自增列并且只能有1个主键,auto_increment和primary key还有绑定关系的,如果你设置了auto_increment,就必须得是primary key,不然就报错了
一般情况下,咱们只要是auto_increment都会给它设置成primary key的
create table t1(
  id int not null auto_increment primary key,
  name char(10)
)engine=innodb default charset=utf8;

上面这段sql表示创建1个表,表里有2列,一般我们让id自增的,它是个int类型,not null表示不允许为空,auto_increment表示它会自增,primary key表示它会约束,再加上一个加速查找,这个只对id这一列生效,跟其他列没有关系。

自增列按照上面这种写法,它作为这张表里每一行数据的唯一标识

 

清空表

delete from 表名;

表示清空这张表里的内容,下次再插入数据,它那个自增id是根据原来的继续往后走

 

truncate table 表名;(推荐)

这条命令清空表之后,再插入数据,我们查询看到是从1开始了

truncate比delete要快得多,数据量大的话会特别明显

 

删除表

drop table 表名;

 

3、操作表(文件)里的内容
查看表里的数据
select * from 表名;
*表示所有的列
 
插入数据
insert into 表名(列名1,列名2) values(数字,"字符串");
表示在表里往这2列插入数据