MySQL 基础

一、MySQL简单介绍

  MySQL是一个开源的关系型数据库,具有非常优良的性能,获得许多企业的应用。针对不同的操作系统它有对应的版本,在windows和linux上都可以运行,可以直接到官网上下载安装包直接安装,安装的一般都包括服务器和客户端。若是服务器在另一个电脑上,则本机可以只选择安装客户端进行登录即可,在网上有很多相关的资料。这里学习参数书籍:MySQL5.5从零开始学(刘增杰等)。参考网络教程:21分钟 MySQL 入门教程

  安装好了MySQL,需要启动服务器才能进行登录操作。启动MySQL服务器3个主要方式:
  1、通过MySQL workbench 启动;
  2、利用系统服务窗口启动;
  3、打开cmd,路径定位到MySQL安装路径的bin下,输入net start mysql57(这里安装的是5.7版本,服务器安装时默认名称为mysql57);关闭的命令为net stop mysql57(在commind line client 中无效),可以将MySQL的bin目录添加到系统路径,则不再需要每次重新定位路径。

  一般数据库命令(命令不分大小写,basename为数据库名称):

  • show databases;查看所有存在数据库
  • show create database basename;显示数据库创建信息
  • create database basename; 创建数据库
  • drop database basename;删除数据库
  • connect;重新连接数据库
  • show engines;显示支持的引擎

MySQL一般是默认大小写不敏感的,因此这里大小写都是一样的,MySQL语句要以分号结尾。

二、数据表的基本操作

  一个数据库可以包含多个数据表,数据都是存储在数据表中的,下面介绍数据表的一些基本操作命令。
  首先进行数据表操作要先选定数据库,因为在一个服务器中是可以创建多个数据库的(上面有相关命令)。通过命令:use basename; 可以使当前操作进入到basename所在的数据库中,从而对其中的表等进行操作。
  
  1、创建表
  
  create table tablename;
  上面的形式创建一个名称为tablename的空表。若是要创建时添加部分内容,可以写为下面的形式:

   create table test2
   ( id    int(11)primary key,
     name  varchar(25),
     deptid int(11),
     salary float
   );

  其中primary key表明此该列为主键,也可以在定义完所有列之后进行主键的指定,通过constraint name primary key orname;其中name为定义的说明主键的名称,可以不要,orname为想要定义的字段名。一般都是简写为primary key(orname),其中orname可以通过逗号添加多个,形成多字段联合主键。
  对于比较复杂的表创建,若是这里觉得在cmd中不好编辑,可以在本地文件中进行编辑,新建一个txt文件,在里面把内容写好,然后后缀更改为.sql,在命令行中执行命令:source filepath 其中filepath为.sql文件的绝对路径,这里不需要分号结束。
  
  2、查看表信息
  
  利用下面的命令可以获取表的各项信息。
  
   show tables; 显示数据库中所有的表
   show create table tb1\G; 显示表tb1的创建信息,\G可以使输出格式化
   desc tb1;显示表tb1的结构信息,表格形式输出,完整形式为describe tb1;

  3、限制性语句

  表的创建可以添加很多的限制性条件,例如上面的主键设置就是一种限制性语句,下面介绍几种常见的语句:
  外键约束:
  constraint name1 foreign key name2 references tbname name3;意义为为当前表名称为name2的列字段添加名称为name1的外键约束,此外键约束为来自表tbname的名称为name3的列字段。示例:constraint sss foreign key(tid) references test2(id)。
  注意:外键必须关联到表的主键,且关联的字段数据类型必须相同,不能使用已经存在的外键名称。
  非空约束:
  not null ;在字段定义后面添加not null可以为字段设置一个非空约束,即当添加数据时,改字段不能为空,否则会报错。
  唯一性约束:
  unique;唯一性约束表示受约束的字段的数据必须具有唯一性,不能重复,可以有一个空值null。添加方式有两种,一种是直接在定义列字段后添加unique即可,另一种则在定义完所有字段后,添加constraint name unique(name1),即为字段name1添加名称为name的唯一性约束。
  默认约束:
  default value;默认约束指在该字段没有给定数据时,默认添加默认的值value;添加方式为在字段定义后面添加 default value;其中value为设置的默认值。
  属性值自动添加:
  auto_increment;每次添加纪录时,系统会自动生成字段的主键值,一个表中只能有一个字段设置改属性,而且是主键的一部分。直接在字段定义后添加auto_increment。

  4、修改数据表

   表在创建之初可以定义很多内容,但是在后面的操作中,经常会遇到一些修改,这里主要介绍数据表各属性的修改命令。
   修改表名:
   alter table tbname rename newname; 将表tbname的名称更改为newname。
   更改字段数据类型:
   alter table tbname modify field newtype; 将表tbname的字段field的类型更改为新类型newtype。
   修改字段名:
   alter table tbname change name1 newname type; 将表tbname的字段name1名称更改为newname,类型为type,即使数据类型不变,也需要加上类型,不能缺少。
   添加字段:
   alter table tbname add name type first; 在表tbname的第一列添加名称为name,数据类型为type的一个字段,type后面还可以根据需要添加限制性语句。
   alter table tbname add name type after name1; 在表tbname字段name1的后面添加字段name。
   删除字段:
   alter table tbname drop name; 删除表tbname中name字段。
   修改字段排列顺序:
   alter table tbname modify name type first; 把表tbname的name字段排在第一列。
   alter table tbname modify name type after name1; 把表tbname的name字段排在字段name1后面,此应用类似于添加字段。
   更改表的存储引擎:
   alter table tbname engine = enname;将表tbname的存储引擎更改为enname表示的引擎,可以通过show engine获取数据支持的引擎名称。
   删除表的外键约束:
   alter table tbname drop foreign key name; 把表tbname的名称为name的外键约束删除。
  
   5、删除数据表

  删除数据库中的表将会删除表中所有的数据,一旦删除不可恢复。因此删除表操作要谨慎执行。
  删除没有关联的表:
  drop table if exist tbname; 将表tbname删除,如果存在的话。if exist 可以省略但是若表不存在时删除将报错,tbname后面可以用逗号添加其他表名以同时删除多个表。
  删除被关联的表:
  有些表通过外键联系在了一起,因此无法直接删除,这样会破会表的完整性,在删除这样的表之前,需要先将表之间的外键删除,在执行上面的表删除命令就可以删除,删除表的外键约束在4中有介绍。
  
  6、数据记录操作(部分)
  
  insert int tbname(name1,name2,name3) values(v1,v2,v3);对表tbname插入一条记录,name1…等为字段名称,v1…为对应的赋值,当所有字段都插入数据时可以省略字段名。
  select * from tbname;显示表tbname的数据。
  update tbname set name=v where name1=v1; 更新表tbname 字段name的数据,name1表示该记录的任意字段,用来定位是修改哪一条记录,可以同时更新多个字段,字段间用逗号连接。
  delete from tbname where n1=1;删除满足where条件的表中记录。

 
三、数据类型

  MySQL支持多种数据类型,主要包括下面几大类:数值数据类型,日期时间类型,字符串类型。

  1、数值数据类型
  
  数值数据类型包括了整数类型,浮点小数类型和定点小数类型。
  整数类型有:tinyint,smallint,mediumint,int,bigint 分别需要1,2,3,4,8个存储字节。在定义时经常有int(4),这里4表示指定的数据显示宽度。
  浮点类型有:float 和 double 两种定点类型有一种decimal。可以通过在类型后添加(M,N)来表示精度和小数位数,M表示精度,N表示小数位数,例:float(5,2)表示精度为5,小数位数为2。
  
  2、日期与时间类型
  
  日期与时间类型有下面几种:year, date, time, datetime, timestamp分别表示年,日期,时间,日期时间。年用4位数字或字符串表示(2016);date格式:YYYY : MM : DD 表示年、月、日,其中YYYY可以用YY表示,系统根据值自动转换为4位格式。time用下面的格式表示:HH : MM : SS,即时:分秒的格式。datetime为date和time的组合形式,timestamp与datetime类似,但是它在保存数据时与时区有关。当前系统的日期和时间可以通过current_date,current_time,now()等来获取,now()获取的为完整的日期时间。
  
  3、字符串类型
  
  字符串类型:char(M),varchar(M),tinytext,text,mediumtext,longtext,enum,set。char(M)和varchar(M)为指定列长字符串,M为列长度,长度不够是以空格填充。text根据不同的类型有不同的大小长度。
  enum类型为枚举类型,是一个字符串对象,定义时需要将枚举的列表给出,存储的值为枚举值的索引(1,2,3…)。
  set与enum类似,但是enum只能在其中选一个值,而set可选多个。
  
  4、二进制类型
  
  上面介绍的类似都为非二进制类型,下面介绍二进制类型:bit(M), binary(M), varbinary(M), tinyblob(M), blob(M), mediumblob(M), longblob(M)。M表示每一个值的位数。
  
四、MySQL函数

  MySQL中提供了许多功能强大的函数,应用非常简单,很多函数都是类似于Matlab和C++中提供的函数,下面简单介绍。

  1、数学函数
  
  abs(x) : 返回x的绝对值
  pi() : 返回圆周率值PI
  sqrt(x) : x 开平方
  mod(y, x) : 求余函数,y除以x余数
  ceil(x) : 不小于x的最小整数
  floor(x) : 不大于x的最大整数
  rand() : 生成随机数
  round(x)/round(x,y)/truncate(x,y) : 四舍五入相关
  sign : 符号函数
  …
  pow(x,y) ; exp(x) ; log() ; log10(); redians() ; degrees() ; sin() ; asin() ; cos() ; acos() 等等大多可以通过函数名称知道其功能。

  2、字符串函数

  char_length(str) : 字符串字符个数
  length(str) : 字符串字节个数
  concat(str1, str2) : 连接字符串
  concat_ws(‘*’,str1,str2,…) : 连接字符串,字符串之间添加第一个符号
  insert() : 字符串替换
  lower()/lcase() ; upper/ucase: 字符串大小写转换
  left(str, n)/right(str, n) : 获取字符串左/右n个字符
  …
  trim(from) , repeat() , space() , replace(), strcmp() , substring() , locate() , position() , instr() , reverse() , field()等

  3、日期时间函数

  now();
  current_date();
  month();
  week();
  …
  这里的函数主要针对MySQL中日期和时间的数据类型进行的一系列操作,应结合数据类型来看。

  4、其他函数

  if(expr , v1 , v2) : 如果expr满足条件,返回v1,否则返回v2
  ifnull(v1 , v2) : 假如v1不为null,返回v1,否则返回v2
  case expr when v1 then r1 when v2 then r2… : 条件选择语句
  version() : MySQL 版本
  connection_id() : 连接ID
  user()/current_user()/system_user() : 显示用户相关信息
  password()/mad5()/encode()/decode() : 加密解密
   …

五、MySQL数据查询

  在MySQL中查询数据是十分常见的,这里需要用到关键词select,通过select配上相应的关键字可以实现多功能的查询操作。
  from:用于指定在哪一个表中进行查询,前面可以添加字段名用于规定查询的字段。
  select * from tbname; 查询表tbname中所有数据,*为通配符
  select n1,n2 from tbname; 类似于上面,这里查询的为字段n1,n2的数据
  
  where:用于在查询时添加某些查询刷选条件,从而更加精确定位查询的数据具有类似作用的还有in,between and,都是用来限定值的取值范围,where可以指定多个条件,可以用and 和 or 来进行连接。
  select n1 from tbname where n2 = 2 : 在tbname中查询n2=2的n1字段数据。
  select n1 from tbname where n2 in(1,3) : 在tbname中查询n2在1到3之间n1的数据,in前面可以添加not查询不再1,3区间内的数据。
  select n1 from tbname where n2 between 1 and 3 : 同上。

  % , _ : 匹配符,%用于匹配任意长度的字符,包括0字符,_ 匹配任意一个字符,类似于正则表达式中的匹配,MySQL中正则表达式使用关键字为regexp,使用这两个符号前面要有like关键字。
  select n1 from tbname where n2 like ‘%f’; n2为前面有任意个字符加上一个f字符结尾的字符串。
  select n1 from tbname where n2 like ‘_f’; n2为前面有一个任意字符加上f结尾的一个字符串。
  distinct:结果不重复,即不会显示重复的数据
  select distinct n1 from tnname:查询n1,结果不重复。
  order by,desc, asc : 用于结果排序,desc为降序,asc为升序(默认)。
  select n1 from tbname order by n2;查询n1结果根据n2排序显示。
  select n1 from tbname order by n2 desc ; 同上,降序。
  group by :分组查询,略。
  …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值