mysql的去重添加ing_MySQL的学习笔记

这篇博客介绍了MySQL的入门知识,包括如何开启和关闭MySQL服务,以及在命令行中进行数据库的基本操作,如创建、查看和删除数据库,以及数据表的管理。还涉及到SQL查询语句的使用,如SELECT、LIKE、AS别名、LOGICAL运算符等。此外,讨论了字符集的选择和乱码问题的解决方案,并提到了SQL注入的概念。
摘要由CSDN通过智能技术生成

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(从前到后依次为主机地址,用户名,密码)

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

20a6165112fb07fb10f781310a8d4ace.png

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

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

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

4d01eac8f199199d769c8036c52bbf77.png

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

由于外部的文件可以导入,所以其内部语句也会被执行,例如一个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;查询语句查询以下信息,从该表中,且键值为。

71da410492de79269d1f24867b5a1173.png

cef836590e29a629a0f43c5e59ba2970.png

2.模糊查询

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

03c45f4b1fe1506f07a9a2b7ee25ccda.png

还可以添加if语句来输出

e8bf4a8fba03f76d6564f2b63975e87a.png

3. as别名:

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

751e8588264aa47f4d1d3a9f668eda05.png

4.逻辑条件 “与”

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

e83e159490ed6a6911e22bf3ec88f760.png

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

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

d4ebf53f30ab989fb79e2230399d93b1.png

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

1.limlt语句

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

6bd9ac4ef41f03538c69e402072f7972.png

2.orderby语句

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

Select *from stu order by id desc 是降序

91cf0613f88d05cd7d2405cc7b5b9ece.png

8a302e31c526f0dab524d6797f0ef0c3.png

3.limit 和 order by的混合使用

f0fbfe0a3f261d76ec08a1ff6586d003.png

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

4查找id第二大的学生

d1e82b5f4571e70b64a4712676ccce5c.png

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

e5f77504f557e95d6efe1dd0c386f186.png

Select * from stu where birthday >=xxx;

6.查询子句

94c09e9ba10396a116a3c14dca3bce35.png

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

7.去重操作

9a92a2915144c3062533eadef4bbf590.png

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

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

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

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

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

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

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

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

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

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

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

e3489e52af86cf10ac6d04eafd1acf2a.png

校对规则(collation):是在字符集内用于比较字符的一套规则,主要作用是比较与排序,比如定义'A'

每个字符集有一个或多个校对规则,并且每个校对规则只能属于一个字符集,有的字符集不需要校对规则。

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

38988b408f16722380e65eb5151750ef.png

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

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

如果我们要从客户端发送一条命令到服务器端查询命令,而二者的字符集又不同,那么查询便可能无效,所以: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值