未加星标

MySQL基础

字体大小 | |
[数据库(mysql) 所属分类 数据库(mysql) | 发布者 店小二05 | 时间 2016 | 作者 红领巾 ] 0人收藏点击收藏

一、mysql简单介绍

MySQL是一个开源的关系型数据库,具有非常优良的性能,获得许多企业的应用。针对不同的操作系统它有对应的版本,在windowslinux上都可以运行,可以直接到官网上下载安装包直接安装,安装的一般都包括服务器和客户端。若是服务器在另一个电脑上,则本机可以只选择安装客户端进行登录即可,在网上有很多相关的资料。这里学习参数书籍: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 :分组查询,略。

本文数据库(mysql)相关术语:navicat for mysql mysql workbench mysql数据库 mysql 存储过程 mysql安装图解 mysql教程 mysql 管理工具

分页:12
转载请注明
本文标题:MySQL基础
本站链接:http://www.codesec.net/view/479866.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(mysql) | 评论(0) | 阅读(63)