MySQL的学习笔记

Mysql的学习:

一.mysql入门及开启关闭:

1.mysql简介:最普遍的,开源的,关系型,跨平台的数据库,对各种开发语言有着良好的支持,对容量没有限制。mysql大致分为服务器端(mysql)和客户端(mysqld)。

2.mysql的打开:执行安装目录下的bin文件夹中的mysql.exe可以直接打开mysql。         同样的通过cmd命令进入相同的安装路径,然后执行mysql -uroot也可以打开。

在用cmd执行mysql-uroot时,我遇到了一个问题:在此处错误的原因:我通过匿名用户登录Mysql服务器,没有创建数据库的权限。应该使用代码 mysql –h localhost –u  root –p(从前到后依次为主机地址,用户名,密码)

(实际上 密码输入错误也是返回这个信息)


如果配置环境变量,可以将地址复制进入path变量中。

         3.关闭mysql 1.可以通过控制面板中-管理-服务中找到mysql来关闭。

                               2.可以通过cmd中输入net stopmysql 来关闭,net start mysql来关闭。


              3.通过quit和exit在mysql中退出。

 

 

 

 

二 MySQL的基本命令行

输入密码进入MySQL之后,出现“mysql>”的提示,说明我们可以开始输入命令。

(对数据库的操作)

1.      show databases;(记得加分号) 作用:显示所有的数据库 如果输入showdatabases\g 有同样的效果。

2.      use xxxx;作用:使用名称为xxxx的数据库。成功之后会显示Databasechanged。

3.      create database if not existsxxx default character set utf8 作用:创建一个新的数据库 xxx为新数据库的名字。XXX之后的可以省略,其作用是指定字符集。

4.      drop xxx 作用:删除一个数据库。

(对数据表的操作)

5.      show tables;作用:在使用某个数据库之后,显示数据表

6.      select * from xxx 作用:可以显示某张数据表的全部内容。

7.      select * from xxx where key(key在此为数据表的一项内容)=“xxx” 作用:在指定的表中查询指定内容。

 (创建账号)

8.      grant all on batabase_name.* to“newusername”@”the_serve_name” identified by “password”

(查看所有用户)

9.      select host,user,password frommysql.user

(创建一个数据表)

10.  create table student (idint(10) primary key auto_increment,name var char(30),age tinyint(2));

创建了一个ID自增为int,name为字符串,age为tinyint的表。

         或者:

Create tablestu(id int(10)  primary keyauto_increment,name char(30) not null,sex tinyint(1) default 0)defaultcharacter set UTF8 engine myisam; id为自增,name不能为null,sex默认为0 指定了字符集和处理引擎

         (描述一张表)

11.  desc tables_name

(像表中加入内容)

12.  insert into student(name,age)values(“xxx”,xx);(插入的是10的表)

(将一个数据库导出作为文件保存)

13.  mysql –hlocalhost –uroot –p xxxdatabases_name >d:/filename.sql;

(将一个外部的文件导入作为数据库)

14.  mysql –urootdatabases_name<d:/filename.sql;

 

由于外部的文件可以导入,所以其内部语句也会被执行,例如一个sql文件里只有一句select * from table‘s name 那么执行这个文件相当于执行了一遍该命令。

         (修改表) 

15.  alter table stu add xxxdint(10);

像表中加入一个标签为xxx

 

 

 

三 MySQL的数据类型定义与选择

1.                 字符集:在创建数据库的时候可以指定字符集,创建表示也可以指定字符集,当指定了数据库的字符集而不指定表的字符集时,会就近采用数据库的字符集,所以为了避免以后再与服务器端的交互产生乱码,所以需要指定表的字符集。

2.                 Mysql的数据类型:整型(十进制 十六进制 八进制) 浮点数 字符串 null

整型的类别 tinyint  smallint    mediumint        int    bigint        左->右 范围变大

浮点数类型 float     double      decimal    左->右 进度变大

 

 

 

 

 

         四.SELECT查询 like模糊查询 as 别名定义规则 逻辑运算符

                   1.select语句

Select * from 显示一张表的全部信息,返回的字段信息是默认的。

Select version();       显示mysql的版本信息

Set @s=2                  设定s的值为2

Select @s*200;        可以进行运算将s*200,注意在此只是运算,不会改变s原本的值的大小。例如s=2,

Select @s*10的结果是20,此时Select @s+10的结果不是30,而是12。

Select xxx,xxx,xxx  from tablename wherekey=xxx;查询语句查询以下信息,从该表中,且键值为。

 

 

 

2.模糊查询

当查询的键值为字符串时,可以使用“%xxx%”来查询,但必须包含like关键字。


还可以添加if语句来输出


3. as别名:

Select if(sex,”girl”,”boy”) as Sex,qq,id,sname from stu;来改变输出时的结果。


       4.逻辑条件 “与”

    Select * from stu where qq like “2014%” and sex=0;来改变输出时的结果。


类似的“或”命令为or 也可以执行查询。

       5.conncat连接 可以输出为一张表

 五.LIMIT语句查询部分内容 distinct去除重复ORDER BY排序方式及子表操作

1.limlt语句

Limit语句可以限制数据每次的存取量。例如 select * from stu limit 3 就代表取出所有记录中的前三条。


           2.orderby语句

           Order by语句可以实现按照某一关键字的升序或降序排列

           Select *from stu order by id desc 是降序

 

    

   3.limit 和 order by的混合使用


此时表示按照生日升序排列,并显示最小的两个。

 

4查找id第二大的学生


5.还可以指定查询大于某个值,或小于某个值的记录:


Select * from stu where birthday >=xxx;

 

                   6.查询子句


通过子句查找到指定的元素,然后生日比其大的值被查询到。

         7.去重操作

 

 

六.字符集utf8 gbk big5 utf8 与character set与校对规collaction则二进制与非二进制字符串类型使用

        

在数据库中,存储方式一般分为二进制的存储方式和非二进制的存储方式。

         二进制的存储方式一般用于声音图像等二进制数据,这种数据的存储方式是与字符集无关的,在实际存储中,我们也不是直接把图像等存入数据库,而往往保存的是它们的地址,在调用的时候读取它们的地址。

         非二进制的存储方式一般用于charvchar text等的文本信息。这个时候我们需要用到utf8 big5 gb2312等字符集,为什么存储图像的时候用二进制而非字符集呢?因为如果在调用时不加说明,例如网页中,就会把这种二进制数据默认是文本信息读取,读取的结果往往就是乱码。

         不同的字符集中所编码的字符不同,同一语言中所包含的字符的数量也不同,存储的方式也不同。

         例如:gb2312 包含6700个汉字 每个占两个字节。

                     Big5      繁体字符 13000个汉字 每个占两个字节。

                     Gbk  21000个汉字每个占两个字节。1-3字节

              UTF8 基于unicode(万国码),国际化的标准组织制定的一套涵盖世界上所有语种所有符号的方案。

显示支持的字符集命令:showcharacter set

通过这个命令可以查看数据的长度

 

校对规则(collation):是在字符集内用于比较字符的一套规则,主要作用是比较与排序,比如定义'A'<'B'这样的关系的规则。不同collation可以实现不同的比较规则,如'A'='a'在有的规则中成立,而有的不成立;进而说,就是有的规则区分大小写,而有的无视。 
每个字符集有一个或多个校对规则,并且每个校对规则只能属于一个字符集,有的字符集不需要校对规则。 

 

 

 

七.字符集操作原理与乱码解决方案character_set_client_character_set_connection_character_set_results


第一个是客户端字符集,第二个是连接字符集,第三个是结果字符集。

 

字符操作中的乱码现象要从服务器与客户端的交互说起

如果我们要从客户端发送一条命令到服务器端查询命令,而二者的字符集又不同,那么查询便可能无效,所以:1.我们首先把客户端的字符集转换为关系字符集

2.转换为关系.字符集后再转换为服务器的需要查询的字段的字符集,得出结果(不能可将服务器端的结果进行转化,会做大量的无用功)。

3.得出的结果不能直接传回客户端,否则会乱码,所以我们需要一个结果字符集,转化之后传给客户端。

4.客户端在显示时,如在html中时,如果操作不当,也会乱码。

以上四个步骤中任一有误,皆可能造成乱码。

 

八 SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。

在此提供一篇博文地址,作为详细讲解:http://blog.csdn.net/stilling2006/article/details/8526458

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值