9月23日我的学习心得与个人理解
mysqld --initialize 重新初始化数据库
电脑重启可以解决95%以上的问题
表关系判断之一对一
表中有很多字段只用了一部分数据,还有一部分不经常使用,针对这种情况可以将表拆分成两张表
以QQ用户表为例将用户信息表分为用户表和用户详情表
站在用户表考虑
一个用户可不可以有多个用户详情 不可以
站在用户详情表考虑
一个用户详情表可不可以有有多个用户 不可以
一对一表外键字段通常建在查询频率较高的表里
创建表author,authorDetail,代码如下
create table author2(
id int primary key auto_increment,
name varchar(32),
age int,
author2_detail_id int unique,
foreign key(author2_detail_id) references author2Detail(id)
on update cascade
on delete cascade
);
create table author2Detail(
id int primary key auto_increment,
phone bigint,
addr varchar(255)
);
对于表操作的sql语句的补充
alter table t1 rename t2; 修改表名t1为表名t2
alter table t2 add password int; 给表t2增加名为password类型int的列
alter table t2 add info varchar(32) first; 给表t2在第一列增加名为info类型varchar的列
alter table t2 add hobby varchar(32) after info; 给表t2在info列后增加名为hobby类型varchar的列
alter table t2 drop info; 删除表t2的info列
alter table t2 change password pwd int; 修改表t2password列的字符类型为int
表主键的特点
主键会自动增加,不会自动回排序,即使用delete删除表也不会影响自增
truncate t2删除所有数据并且重置id
create table t3 select * from t2; 拷贝t2的数据给t3,不包括key
create table t5 like t2; 拷贝t2的表结构给t5
单表操作
在sql语句后面加入\G可以使数据表单列纵向展示
查询关键字
select * form user where id = 3;
执行顺序依次为form,where,select
关键字where
多用于对表固定位置查询,如select * from t1 where id = 1;查询表t1id=1行的所有数据