mysql中的105异常_mysql基础实验过程+遇到的问题的解决方法(error105处理)

跳过登录更改密码:

跳过密码登录:首先确保打开mysql服务,mysql路径加入了path中,然后使用管理员方式打开dos,输入命令:mysqld –skip-grant-tables 不要关闭窗口,再打开另一个dos窗口输入命令:mysql 登录成功。

更改密码:打开mysql数据库更改里面的user表,输入命令:

mysql>update user set authentication_string=password(‘123456’) where user=’root’;

(将root用户密码更改为123456)

..image20181222172543322.png

创建数据库(模式):create schema text_schema;

show databases;

在模式里面创建表 :use text_chema;

create table text_table(text_col int,text_col1 smallint);

show tables;

删除数据库(模式):drop schema text_chema;

show tables;(报错)

show databases;

创建表:create database school_database;

create table student(sno char(9),primary key,sname char(20) unique,ssex char(2),sage smallint,sdept char(20));

show tables;

create table course(cno char(4) primary key,cname char(40) not null,cpno char(4),ccredit smallint,foreign key(cpno) references course(cno));//外键

create table sc(sno char(9),cno char(4),grade smallint,primary key(sno,cno),foreign key(sno) references student(sno),foreign key(cno) references course(cno));

数据类型

数据类型含义

char(n),character(n)长度为n的定长字符串

varchar(n),charactervarying(n)最大长度为n的变长字符串

clob字符串大对象

blob二进制大对象

int,interger长整数(4字节)

smallint短整型(2字节)

bigint大整数(8字节)

numeric(p,d), decimal(p,d),dec(p,d)顶点数,整数部分p位,小数部分d位

real取决于机器精度的单精度浮点数

double precision取决于机器精度的双精度浮点数

float(n)可选精度的浮点数,进度至少n位数字

boolean逻辑布尔量

date日期,YYYY-MM-DD

time时间,HH:MM:SS

timestamp时间戳类型

interval时间间隔类型

修改表:alter table student add s_entrance date;

alter table student modify sage int;

alter table course add unique(cname);

删除表:create table text_table(text_col int);

drop table text_table;

索引:顺序文件上的索引、B+树索引、散列索引、位图索引。

索引分为:unique(表明此索引的每一个索引值只对应唯一的数据记录)、cluster(聚簇索引)。

索引的建立与删除:create unique index stusno on student(sno);

create unique index coucno on course(cno);

create unique index scno on sc(sno asc,cno desc);

修改索引名:alter table sc drop index scno;

create unique index scsno on sc(sno asc,cno desc);

修改编码:

1)修改mysql表的字符编码方式:alter table t_name convert to character set utf8 collate utf8_bin;

2)修改数据库的字符集:alter database mydb character set utf8;

3)创建数据库指定数据库的字符集:create database mydb character set utf8;

(注意:修改编码是由于外键约束,导致报错,所以只有先撤销外键约束,修改后再建立)

..image20181222172946180.png

撤销外键:

查看外键名:show create table course;

..image20181222172946195.png

解除外键:alter table course drop foreign key course_ibfk_1;

重新创建外键的时候出现105错误,存在这种报错主要是创建约束时,有属性不一致的情况:ERROR 1005 (HY000): Can’t create table ‘school_database.#sql-1cd8_10’ (errno: 150)

1)类型不一致:外键的引用类型不一样,如主键是int外键是char

2)引用不存在:找不到主表中引用的列

3)编码不一致:引用的字段和外键的字符编码不一致,也可能存储引擎不一样

4)约束不一致:引用的字段和外键的约束不同

..image20181222172946203.png

..image20181222172946208.png

..image20181222172946220.png

插曲:student修改位utf8之后,还是105报错,其实是collate(排序规则)存在差异区别。

..image20181222172946262.png

..image20181222172946239.png

数据更新:

插入数据: insert into student(sno,sname,ssex,sdept,sage) values(‘201215121’,’李晨’,’男’,’sc’,21);

修改数据:

修改一个元组:update student set sage=22 where sno=’201215121’;

修改多个元组:update student set sage=sage+1;

删除数据:

删除一个元组:delete from student where sno=’201215121’;

删除多个元组:delete from sc;

查看数据:select from student;

向表中增加数据

..image20181222172946246.png

..image20181222172946280.png

..image20181222172946253.png

单表查询:

select sno,sname from student; select from student;

select sno,2014-sage form student; select sno,’bir:’,2014-sage from student;

select sno,’Year of Birth:’,2014-sage birthday,upper(sdept) Dept from student;

select distinct sno from sc;//去掉表中的重复行

查询条件谓词

比较=,>,=,<=,!=,<>,!>,!

确定范围betweed and,not between and

确定集合in,not in

字符匹配like,not like

空值is null,is not null

多重条件(逻辑运算)and,or,not

select sname,sdept,sage from student where sage between 20 and 23;

select sname,ssex from student where sdept in(‘cs’,’ma’,’is’);

select sname,sno,ssex from student where sname like ‘刘%’;

select sname from student where sname like ‘欧阳_’;

select cno,ccredit from course where cname like ‘db_Design’ ESCAPE’’;

//%表示任意长度字符串,’_’表示任意单个字符。ESCAPE‘’表示“”为换码字符。

select sname,grade from sc where cno=’3’ order by grade desc;

//desc降序、asc升序

聚集函数功能

count()统计元组个数

count([distinct|all] )统计一列中值的个数

sum([distinct|all] )计算一列值得总和(此列是数值型)

avg([distinct|all] )计算一列值得平均值

max([distinct|all] )求一列值中的最大值

min([distinct|all] )求一列值中的最大值

group by子句将查询结果按某一列或多列的值分组,值相等的为一组。分组后聚集函数讲座用于每一个组,即每一组都有一个函数值。

select cno,count(sno) from sc group by cno;

select sno from sc from sc group by sno having count(*)>3;//查询了选修了三门以上课的学生。

where子句和having短语的区别:where作用于基本表或视图,从中选出满足条件的元组。having作用于组,从中选出满足条件的组。

where子句不能用于聚集函数作为条件表达式。

错误:select sno,avg(grade) from sc where avg(grade)>=90 group by sno;

正确:select sno,avg(grade) from sc group by sno having avg(grade)>=90;

连接查询:

select student.sno,sname from student,sc where student.sno=sc.sno and sc.cno=’2’ and sc.grade>90;

自身连接:

select first.cno,second.cpno from course first,course second where first.cpno=second.cno and second.cpno is not null;

外连接 :

select student.sno,sname,ssex,sage,sdept,cno,grade from student left outer joinsc on(student.sno=sc.sno);//左外连接

select student.sno,sname,ssex,sage,sdept,cno,grade from student right outer join sc on(student.sno=sc.sno);//右外连接

嵌套查询:select sname from student where sno in(select sno from sc where cno=’2’);

查询块:select-from-where语句成为一个查询块。

嵌套查询:将一个查询块嵌套到另一个查询块的where子句或having短语的条件中成为嵌套查询。

带in嵌套查询:

不相关子查询:子查询的查询条件不依赖于父查询。两个查询可以独立实现。

select sno,sname,sdept from student when sdept in(select sdept from student where sname=’刘晨‘);

带比较运算符嵌套查询

相关子查询:子查询的查询条件依赖于父查询。

select sno,cno from sc x where grade>=(select avg(grade) from sc y where y.sno=x.sno);

//x是sc的别名,又称为元组变量。参数x.sno的值与父查询相关。

带有any(some)或all谓词嵌套查询

select sname,sage,sdept from student where sage

建立视图:create view is_student as select sno,sname,sage from student where sdept=’is’;

//create view只是把视图定义存入数据字典,并不执行其中的select语句。

create view is_student as select sno,sname,sage from student where sdept=’is’with check option;//对数据进行操作都需要满足sdept=‘is’条件。

行列子集视图:从单个基本表导出的,并且只是去掉基本表的某些行或某些列,但保留了主码,则称这类视图为行列子集视图。

删除视图:drop view is_student;

查询视图:

视图消解:从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,然后再执行修正了的查询。

目前多数关系数据库系统对行列自己视图的查询均能进行正确转换。但对非行列子集视图的查询就不一定能够转换。

更新视图:最总作用是表的更新。

视图的作用:1)视图能供简化用户的操作、2)视图使用户能以多角度看待同一数据、3)视图对重构数据库提供了一定程度的逻辑独立性、4)视图能够对机密数据提供安全保护、5)适当利用视图可以更清晰地表达查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值