发表于: 2017-08-17 22:53:08

2 1168


第五天
今天完成的任务
任务1的7-9
遇见的问题
1.创建自增类型属性失败
2.mysql和navicat不同步,即使刷新也还是不能同步。mysql上修改成功后,navicat上依旧是修改前的结果
3.无法通过mysql导出数据,显示err:1290.mysql的导入导出仍有问题。
4.txt文件无法导入navicat。一切正常但就是没有数据更新
明天的计划:
完成任务一的数据库内容,开始java环境配置                                                                        -------------------- 分割线 --------------------
1.尝试练习之前的语句时,尝试师兄推荐的语句出错。可能是版本问题,我的是5.7.1版。
很难受,发现错误原因是最后一行没有逗号。
(1)第一步,尝试去除not null 成功创建,确认可省
(2)第二步,尝试变更为bigint 成功
(3)第三步,尝试去除unsigned,成功
(4)第四步,尝试变更primary key和auto_increment位置,成功。
结论创建表的最后一个属性不要加逗号!
设置为primary key(主键)的列的数据不允许为null,或者重复。所以该行属性定义是不需要加not null。是否无符号可以选择。primary key和auto——increment的顺序可换。
步骤7:分别用Navciat和Sql语句去将本条数据记录的报名宣言改成老大最帅
mysql和navicat不同步,即使刷新也还是不能同步。mysql上修改成功后,navicat上依旧是修改前的结果
解决方法:navicat左下角的刷新按钮,使用后即可更新。
navicat修改方法:直接点开修改。之后点击左下角的确认键

                                                                                 

           -------------------- 分割线 --------------------

步骤8.将表导出成sql文件,并用Navicat和sql分别尝试删除词条数据,并用之前备份的sql恢复
①导出sql文件
a.通过mysql导出

通过select * into outfile '文件地址' from xxx;导出,显示

网上黑科技,解决办法(mysql集群中创建用户时、出现如下错误!):
在命令行输入:mysql> flush privileges;
但是还是没有东西导出来
改变方法,使用师兄的方法
还是没有文件导出
尝试添加密码
依旧失败,选择性放弃。
b.通过navicat导出
或者点击表,右键选择导出。
②.删除记录
方式mysql:delete from test2 ;
③.导入:
sql文件可以通过师兄的方式导入。但txt格式的上次没问题,这次出问题了,最后显示成功,但没有数据更新
解决方案:
第一个数据行改为1,因为导出的没有栏目名称,第一行也是唯一一行是数据。
                            ------------------分割线---------------------
步骤9.给姓名建索引,思考一下还应该给那些数据建索引?
①.创建索引的两种语句:1.添加:alter table tablename add index index_name(columnname);
2.创建:create index index_name on table_name(columnname);
删除索引的语句
DROP INDEX index_name ON table_name;
②.我认为所有有唯一性的属性都可以建索引,但可以从中选出一个最具代表性,变动最少的属性建索引。
非唯一性的属性按使用频率来建索引。
其余各种索引在下方的连接中,以备需要时使用
今天的收获
1.学习使用select语句查看数据库内容。
执行语句: SELECT * FROM tablename ;    会显示属性名及数据内容。
注意!tablename后要空格再写分号,否则报错
2.练习了insert插入语句。
插入语句有两种格式,1种为所有属性按顺序全部定义,表名后直接接vaules。
insert into tablename values(2,'****',3,...... );
另一种为只写入部分属性,在表名后加一个包含写入属性名的括号,values中插入属性的类型,顺序和前面一一对应(注:定义的顺序可以和表的自然顺序不一致)
 INSERT INTO tablename (id ,name, age , info) VALUES (1,'Green', 21, 'Lawyer');
3.小技巧:
describe tablename;查看表结构可以简写为desc tablename;
4.清除表数据的两种方法与区别:
delete from tablename;逐条删除表中的全部数据,有mysql记录日志,可以恢复数据。
delete from tablename where 表达式;条件删除。
truncate table 表名;清空mysql表中所有内容,保留结构(属性),没有记录日志,不可恢复。效率更高。
5.删除表:
drop table tablename;
6.MySQL 中NULL和空值的区别
在代码里"零长度字符串"用一对没有间隔的英文引号''表示,它的数据类型是明确的即属于字符型,存储"零长度字符串"是要占用物理磁盘空间的;
而null值其数据类型是未知的,它不会占用物理磁盘空间。
在不存在约束限制的情况我们可以将Null值插入任何数据类型的字段里,而零长度字符串''只能插入到字符型数据类型字段中,插入其它类型字段会报错。
7.关于default
SQL 中 Not null :不允许为空
DEFAULT 是默认值(不允许为空,没有输入就用默认值)
getdate() 是获取系统当前日期
  SQL 如下:
  create table A(id int not null,
                     name varchar(10) default 'test)
NULL 和 NOT NULL 修饰符
可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL),
还是说必须填上数据 (NOT NULL)。MySQL 默认情况下指定字段为 NULL 修饰符,如果一个字段指定为NOT NULL,
MySQL 则不允许向该字段插入空值null(这里面说的空值都为 NULL,''不算null),因为这是 “规定”。
INSERT INTO friends 
VALUES
NULL , 'simaopig', 'simaopig' 
);
但是在自增列和 TIMESTAMP 字段中,这个规则并不适用。
向这些字段中插入 NULL 值将会导致插入下一个自动增加的值或者当前的时间戳。
 
DEFAULT 修饰符
可以使用 DEFAULT 修饰符为字段设定一个默认值。
当插入记录时,您老人家忘记传该字段的值时,MySQL 会自动为您设置上该字段的默认值。
如果一个字段中没有指定 DEFAULT 修饰符,MySQL 会依据这个字段是 NULL 还是 NOT NULL 自动设置默认值。
如果指定字段可以为 NULL,则 MySQL 为其设置默认值为 NULL。
如果是 NOT NULL 字段,MySQL 对于数值类型插入 0,字符串类型插入空字符串,
时间戳类型插入当前日期和时间,ENUM 类型插入枚举组的第一条。
 
AUTO_INCREMENT 修饰符
AUTO_INCREMENT 修饰符只适用于 INT 字段,表明 MySQL 应该自动为该字段生成一个数
(每次在上一次生成的数值上面加 1)。对于主键(稍候介绍),这是非常有用的。
因为其允许开发者使用 MySQL 为每条记录创建唯一的标识符。
MySQL 表中只能有一个 AUTO_INCREMENT 字段,而且这个字段必须被定义为键。
除了字段的约束,MySQL 也允许表级的约束,比如主键和外键、索引和惟一约束。
指导文章:
MySQL:插入、更新与删除数据 - 熊诗言的博客 - CSDN博客
MySQL字段约束null, not null, default, auto_increment - mysql数据库栏目 - 红黑联盟
MySQL索引类型总结和使用技巧以及注意事项_Mysql_脚本之家



返回列表 返回列表
评论

    分享到