数据库之mysql建表的片段发令,第十二课

作者: 网络编程  发布:2019-09-06

Thinkphp5视频教程

cmd操作mysql方式:

  • 表的方法
  • 列的方法
  • 自定义主键名
  • 自定义时间戳字段名
  • 增加软删除 softDelete 字段

cmd登录数据库方法:(方法一二实用于在电脑里配置过数据库相关的环境变量,否则必须在cmd里进入到数据库的bin目录):

上一篇文章中,作者给大家简单的介绍了 Migration 的使用,但是较为浅薄不够深入,很多小伙伴看完肯定意犹未尽,这篇文章就给小伙伴们深入的介绍 Migration 的使用咯。

  1).mysql -u root -p

看过上一篇文章中我们都知道,在 Migration 文件中,我们通过:

  显示Enter password输入你登录数据库时的密码。

$userTable = $this->table;

修改数据库密码

获取了表 users 的实例,获取这个实例之后我们就可以做很多关于表的操作咯,比如说下面这样:

  旧密码:A 新密码 B:

$table->addColumn('nickname', 'string', ['limit' => 16, 'null' => false]) ->addColumn('email', 'string', ['limit' => 32, 'null' => false]) ->addColumn('password', 'string', ['limit' => 64, 'null' => false]) ->setEngine ->comment; ->create();

  mysqladmin -uroot -pA password 'B'

给表 users 增加三个字段,并指定使用 InnoDB 存储引擎,且给表打上 用户表 的注释。这是一个简单的实例,关于表的操作方法主要有下面这些方法:

刷新权限:

方法 说明
setId(string $id) 设置主键字段名
setPrimaryKey(string $key) 设置主键
setEngine(string $engine) 设置存储引擎,有:InnoDB,MyISAM
setComment(string $comment) 设置表注释
addTimestamps(string $createAtName, string $updateAtName) 给表加上创建时间编辑时间两个字段,默认字段名是:create_time,update_time
addColumn($columnName, $type, $options) 给表增加一个字段
changeColumn($columnName, $newType, $options) 改变表的某一个字段的属性
create() 创建表
save() 保存表
rename($newTableName) 重命名表名
hasTable($tableName) | exists() 判断表是否存在
drop() 删除当前表
setIndexes(array $indexs) 批量设置索引
setForeignKeys(array $foreignKeys) 设置外键
removeColumn($columnName) 删除字段
renameColumn($oldName, $newName) 字段重命名
insert(array $data) 插入数据

  flush priviliges;

列我们主要从 addColumn($columnName, $type, $options) 这个方法的参数讲起,第一个参数:

查看数据库(表)的字符集编码:

参数一:列名

其实这里叫列名并不准确,但是我们姑且叫做列名,本着入门的原则,这里不过多的深入。

它的结构非常简单,字符串类型,符合Mysql的列名规范就可以啦,其它没有要说的。

  show create(表) database 数据库名;

参数二:列类型

到目前为止,可以支持下面这些类型:

类型
biginteger
binary
boolean
date
datetime
decimal
float
integer
string
text
time
timestamp
uuid

当MysqlVersion >= 5.7的时候,还有下面的类型:

类型
enum
set
blob
json

好咯,类型就说到这里了,自己对号入座。

临时修改数据库的字符集:

参数三:可选参数

下面是所有字段类型均支持的可选参数:

参数 说明
limit 长度限制,整数
length limit,整数
default 默认值,mixed
null 是否可空,bool
after 在哪个字段后
comment 注释

下面是针对 decimal 类型:

参数 说明
precision 长度,整数
scale 小数位长度,整数
signed 是否无符号,bool

下面是针对 enumset 类型:

参数 说明
values 默认值

下面是针对 integerbiginteger 类型:

参数 说明
identity 自动递增,bool,默认false
signed 无符号,bool

下面是针对 timestamp 类型:

参数 说明
default 默认值,如:CURRENT_TIMESTAMP
update 字段更新时的动作,如:CURRENT_TIMESTAMP

好咯,列就说到这里啦。

看过上一篇的小伙伴们都知道,默认情况系统会给我们自动加上 id 字段的主键,但是如果我们想使用 uid 怎么办呢?可以这样:

$table = $this->table;$table->setId;

这样就可以啦。

执行 addTimestamps() 方法系统会为我们自动加上 create_timeupdate_time 两个字段,但是如果是从 laravel 转过来的用户,肯定不习惯这个命名咯,想使用 created_atupdated_at 是最好不过啦,于是可以这样:

$table = $this->table;$table->addTimestamps('created_at', 'updated_at');

注意,虽然这里修改了,但是你还需要修改下模型的文件,因为系统默认是 create_timeupdate_time ,比如说我们有个 User 模型,可以这样:

<?phpnamespace appcommonmodel;use thinkModel;class User extends Model{ // 创建时间字段 protected $createTime = 'created_at'; // 更新时间字段 protected $updateTime = 'updated_at';}

项目中有一些表的数据是不能直接删除的,只是修改成了不显示的状态,而 softDelete 的方案就很好的解决这个问题不仅可以标记记录的删除状态还记住了记录删除的时候,所以如果想要添加 softDelete 可以这样:

$table = $this->table;$table->addSoftDelete();

系统为我们提供的方法并不是很友好,因为它的字段名默认就是 delete_time 而且无法修改,所以这种方法并不推荐,可以手动的添加:

$table = $this->table;$table->addColumn('delete_time', 'timestamp', ['null' => true]);

好了今天的教程就到这里啦。此篇是小滕的《Thinkphp5入门系列课程》第十二课:Migration。喜欢的给个订阅呗!由于作者水平有限,如有错误请欢迎指正。

  SET GLOBAL character_set_server=utf8;

下面是一些创建数据库和表重要的指令。

  (1).创建数据库:creat database 数据库名;

     使用数据库:use 数据库名;

  (2).显示你创建的数据库(已供你选择你要使用的数据库):show databases;

  (3).删除数据库(谨慎使用此指令):drop database 数据库名;

  (4).展示表的内容:show tables;

  (5). 重命表名:alter table 原表名 rename to 新表名;

  (6).添加字段:alter table 表名 add 字段名 字段类型 字段属性;

  (7).修改字段名:alter table 字段名 change 新字段名;

  (8).删除字段: alter table 表名 drop 字段名;

  (9).删除表:drop table 表名;

在navicat下对表的一些操作:

  show create table 表名(可以以代码格式查看你的表);

  在设置time 的时候 想让它默认当前时间,和每个表必须有一个主键,如果你没有什么能设置主键的字段,就用auto_increment自增列为主键。该字段属性也要添加primary key

建表:

  create table 表名(

  字段名 数据类型 约束,

  .............

);

建表重要约束:

 主键: primary key,外键: foreign key,自增字段(适用于主键不确定的情况下):auto_increment,设置唯一(和主键类似):unique,非空:not null,默认值:default.

 一些数据库不支持列级外键,所以建议建表使用行级外键.

 行级外键创建方法:

 foreign key 该表外键字段名 references 表名(主键字段名);

对表添加字段:

    alter table 表名 add column 列名 约束条件;

对表已有字段添加外键约束:

    alter table 表名 add foreign key (字段名) references 外表表名(外表主键名)

向表插入数据:

  insert into 表名(字段名1,字段名2.......) values(数据1,数据2........);

删除表数据:

  delete from 表名

  where 条件;

查询表数据:

  select 字段1,字段2..... from 表名

  where 条件;

修改表数据:

  update 表名

  set 字段名=值

  where 条件;

------创建视图--------------------

  create view 视图名 as

  slelect 列名1,列名2 ...from 表名


--------创建函数-----------------

create function 函数名(形参1,形参2......)

returns 返回值类型

begin

  函数体

  retrun 返回值

end

执行:select 函数名(实参1,实参2...........)


-----------函数if语句-------------

if(条件块) then 执行体

else if(条件块) then 执行体

......................

else 执行体

end if


-------------函数case语句------

case

  when 条件块 then 执行体

  when 条件块 then 执行体

....

end case


-----------存储过程---------------
create procedure 存储名(形参1,形参2....)
begin
  程序体
end
参数类型:
in out inout

执行:call 存储名(实参1,实参2..................)


本文由王中王开奖结果发布于网络编程,转载请注明出处:数据库之mysql建表的片段发令,第十二课

关键词: