基本操作指南.docx

上传人:b****8 文档编号:10913008 上传时间:2023-02-23 格式:DOCX 页数:15 大小:22.46KB
下载 相关 举报
基本操作指南.docx_第1页
第1页 / 共15页
基本操作指南.docx_第2页
第2页 / 共15页
基本操作指南.docx_第3页
第3页 / 共15页
基本操作指南.docx_第4页
第4页 / 共15页
基本操作指南.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基本操作指南.docx

《基本操作指南.docx》由会员分享,可在线阅读,更多相关《基本操作指南.docx(15页珍藏版)》请在冰豆网上搜索。

基本操作指南.docx

基本操作指南

MySQL的相关概念介绍

MySQL为关系型数据库(RelationalDatabaseManagementSystem),这种所谓的"关系型"可以理解为"表格"的概念,一个关系型数据库由一个或数个表格组成,如图所示的一个表格:

∙表头(header):

每一列的名称;

∙列(row):

具有相同数据类型的数据的集合;

∙行(col):

每一行用来描述某个人/物的具体信息;

∙值(value):

行的具体信息,每个值必须与该列的数据类型相同;

∙键(key):

表中用来识别某个特定的人\物的方法,键的值在当前列中具有唯一性。

Windows下MySQL的配置

配置步骤:

2.在安装文件夹下找到my-small.ini配置文件,将其重命名为my.ini,打开进行编辑,在[client]与[mysqld]下均添加一行:

default-character-set=gbk

4.在环境变量的Path变量中添加;%MYSQL_HOME%\bin;

5.安装MySQL服务,打开Windows命令提示符,执行命令:

mysqld--installMySQL--defaults-file="my.ini"提示"Servicesuccessfullyinstalled."表示成功;

MySQL服务的启动、停止与卸载

在Windows命令提示符下运行:

启动:

netstartMySQL

停止:

netstopMySQL

卸载:

scdeleteMySQL

MySQL脚本的基本组成

与常规的脚本语言类似,MySQL也具有一套对字符、单词以及特殊符号的使用规定,MySQL通过执行SQL脚本来完成对数据库的操作,该脚本由一条或多条MySQL语句(SQL语句+扩展语句)组成,保存时脚本文件后缀名一般为.sql。

在控制台下,MySQL客户端也可以对语句进行单句的执行而不用保存为.sql文件。

标识符

标识符用来命名一些对象,如数据库、表、列、变量等,以便在脚本中的其他地方引用。

MySQL标识符命名规则稍微有点繁琐,这里我们使用万能命名规则:

标识符由字母、数字或下划线(_)组成,且第一个字符必须是字母或下划线。

对于标识符是否区分大小写取决于当前的操作系统,Windows下是不敏感的,但对于大多数linux\unix系统来说,这些标识符大小写是敏感的。

关键字:

MySQL的关键字众多,这里不一一列出,在学习中学习。

这些关键字有自己特定的含义,尽量避免作为标识符。

语句:

MySQL语句是组成MySQL脚本的基本单位,每条语句能完成特定的操作,他是由SQL标准语句+MySQL扩展语句组成。

函数:

MySQL函数用来实现数据库操作的一些高级功能,这些函数大致分为以下几类:

字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。

MySQL中的数据类型

MySQL有三大类数据类型,分别为数字、日期\时间、字符串,这三大类中又更细致的划分了许多子类型:

∙数字类型

∙整数:

tinyint、smallint、mediumint、int、bigint

∙浮点数:

float、double、real、decimal

∙日期和时间:

date、time、datetime、timestamp、year

∙字符串类型

∙字符串:

char、varchar

∙文本:

tinytext、text、mediumtext、longtext

∙二进制(可用来存储图片、音乐等):

tinyblob、blob、mediumblob、longblob

这里不能详细对这些类型进行介绍了,篇幅可能会很长,详细介绍参见:

:

使用MySQL数据库

登录到MySQL

当MySQL服务已经运行时,我们可以通过MySQL自带的客户端工具登录到MySQL数据库中,首先打开命令提示符,输入以下格式的命名:

mysql-h主机名-u用户名-p

∙-h:

该命令用于指定客户端所要登录的MySQL主机名,登录当前机器该参数可以省略;

∙-u:

所要登录的用户名;

∙-p:

告诉服务器将会使用一个密码来登录,如果所要登录的用户名密码为空,可以忽略此选项。

以登录刚刚安装在本机的MySQL数据库为例,在命令行下输入mysql-uroot-p按回车确认,如果安装正确且MySQL正在运行,会得到以下响应:

Enterpassword:

若密码存在,输入密码登录,不存在则直接按回车登录,按照本文中的安装方法,默认root账号是无密码的。

登录成功后你将会看到WelecometotheMySQLmonitor...的提示语。

然后命令提示符会一直以mysql>加一个闪烁的光标等待命令的输入,输入exit或quit退出登录。

创建一个数据库

使用createdatabase语句可完成对数据库的创建,创建命令的格式如下:

createdatabase数据库名[其他选项];

例如我们需要创建一个名为samp_db的数据库,在命令行下执行以下命令:

createdatabasesamp_dbcharactersetgbk;

为了便于在命令提示符下显示中文,在创建时通过charactersetgbk将数据库字符编码指定为gbk。

创建成功时会得到QueryOK,1rowaffected(0.02sec)的响应。

注意:

MySQL语句以分号(;)作为语句的结束,若在语句结尾不添加分号时,命令提示符会以->提示你继续输入(有个别特例,但加分号是一定不会错的);

提示:

可以使用showdatabases;命令查看已经创建了哪些数据库。

选择所要操作的数据库

要对一个数据库进行操作,必须先选择该数据库,否则会提示错误:

ERROR1046(3D000):

Nodatabaseselected

两种方式对数据库进行使用的选择:

一:

在登录数据库时指定,命令:

mysql-D所选择的数据库名-h主机名-u用户名-p

例如登录时选择刚刚创建的数据库:

mysql-Dsamp_db-uroot-p

二:

在登录后使用use语句指定,命令:

use数据库名;

use语句可以不加分号,执行usesamp_db来选择刚刚创建的数据库,选择成功后会提示:

Databasechanged

创建数据库表

使用createtable语句可完成对表的创建,createtable的常见形式:

createtable表名称(列声明);

以创建students表为例,表中将存放学号(id)、姓名(name)、性别(sex)、年龄(age)、联系电话(tel)这些内容:

createtablestudents

idintunsignednotnullauto_incrementprimarykey,

namechar(8)notnull,

sexchar(4)notnull,

agetinyintunsignednotnull,

telchar(13)nulldefault"-"

);

对于一些较长的语句在命令提示符下可能容易输错,因此我们可以通过任何文本编辑器将语句输入好后保存为createtable.sql的文件中,通过命令提示符下的文件重定向执行执行该脚本。

打开命令提示符,输入:

mysql-Dsamp_db-uroot-p

(提示:

1.如果连接远程主机请加上-h指令;2.createtable.sql文件若不在当前工作目录下需指定文件的完整路径。

语句解说:

createtabletablename(columns)为创建数据库表的命令,列的名称以及该列的数据类型将在括号内完成;

括号内声明了5列内容,id、name、sex、age、tel为每列的名称,后面跟的是数据类型描述,列与列的描述之间用逗号(,)隔开;

以"idintunsignednotnullauto_incrementprimarykey"行进行介绍:

∙"id"为列的名称;

∙"notnull"说明该列的值不能为空,必须要填,如果不指定该属性,默认可为空;

∙"auto_increment"需在整数列中使用,其作用是在插入数据时若该列为NULL,MySQL将自动产生一个比现存值更大的唯一标识符值。

在每张表中仅能有一个这样的值且所在列必须为索引列。

∙"primarykey"表示该列是表的主键,本列的值必须唯一,MySQL将自动索引该列。

下面的char(8)表示存储的字符长度为8,tinyint的取值范围为-127到128,default属性指定当该列值为空时的默认值。

更多的数据类型请参阅:

提示:

1.使用showtables;命令可查看已创建了表的名称;2.使用describe表名;命令可查看已创建的表的详细信息。

操作MySQL数据库

向表中插入数据

insert语句可以用来将一行或多行数据插到数据库表中,使用的一般形式如下:

insert[into]表名[(列名1,列名2,列名3,...)]values(值1,值2,值3,...);

其中[]内的内容是可选的,例如,要给samp_db数据库中的students表插入一条记录,执行语句:

按回车键确认后若提示QueryOk,1rowaffected(0.05sec)表示数据插入成功。

若插入失败请检查是否已选择需要操作的数据库。

有时我们只需要插入部分数据,或者不按照列的顺序进行插入,可以使用这样的形式进行插入:

insertintostudents(name,sex,age)values("孙丽华","女",21);

查询表中的数据

select语句常用来根据一定的查询规则到数据库中获取数据,其基本的用法为:

select列名称from表名称[查询条件];

例如要查询students表中所有学生的名字和年龄,输入语句selectname,agefromstudents;执行结果如下:

mysql>selectname,agefromstudents;

+--------+-----+

|name|age|

+--------+-----+

|王刚|20|

|孙丽华|21|

|王永恒|23|

|郑俊杰|19|

|陈芳|22|

|张伟朋|21|

+--------+-----+

6rowsinset(0.00sec)

mysql>

也可以使用通配符*查询表中所有的内容,语句:

select*fromstudents;

按特定条件查询:

where关键词用于指定查询条件,用法形式为:

select列名称from表名称where条件;

以查询所有性别为女的信息为例,输入查询语句:

select*fromstudentswheresex="女";

where子句不仅仅支持"where列名=值"这种名等于值的查询形式,对一般的比较运算的运算符都是支持的,例如=、>、<、>=、<、!

=以及一些扩展运算符is[not]null、in、like等等。

还可以对查询条件使用or和and进行组合查询,以后还会学到更加高级的条件查询方式,这里不再多做介绍。

示例:

查询年龄在21岁以上的所有人信息:

select*fromstudentswhereage>21;

查询名字中带有"王"字的所有人信息:

select*fromstudentswherenamelike"%王%";

查询id小于5且年龄大于20的所有人信息:

select*fromstudentswhereid<5andage>20;

更新表中的数据

update语句可用来修改表中的数据,基本的使用形式为:

update表名称set列名称=新值where更新条件;

使用示例:

将id为5的手机号改为默认的"-":

updatestudentssettel=defaultwhereid=5;

将所有人的年龄增加1:

updatestudentssetage=age+1;

删除表中的数据

delete语句用于删除表中的数据,基本用法为:

deletefrom表名称where删除条件;

使用示例:

删除id为2的行:

deletefromstudentswhereid=2;

删除所有年龄小于21岁的数据:

deletefromstudentswhereage<20;

删除表中的所有数据:

deletefromstudents;

创建后表的修改

altertable语句用于创建后对表的修改,基础用法如下:

添加列

基本形式:

altertable表名add列名列数据类型[after插入位置];

示例:

在表的最后追加列address:

altertablestudentsaddaddresschar(60);

在名为age的列后插入列birthday:

altertablestudentsaddbirthdaydateafterage;

修改列

基本形式:

altertable表名change列名称列新名称新数据类型;

示例:

将表tel列改名为telphone:

altertablestudentschangeteltelphonechar(13)default"-";

将name列的数据类型改为char(16):

altertablestudentschangenamenamechar(16)notnull;

删除列

基本形式:

altertable表名drop列名称;

示例:

删除birthday列:

altertablestudentsdropbirthday;

重命名表

基本形式:

altertable表名rename新表名;

示例:

重命名students表为workmates:

altertablestudentsrenameworkmates;

删除整张表

基本形式:

droptable表名;

示例:

删除workmates表:

droptableworkmates;

删除整个数据库

基本形式:

dropdatabase数据库名;

示例:

删除samp_db数据库:

dropdatabasesamp_db;

附录

修改root用户密码

按照本文的安装方式,root用户默认是没有密码的,重设root密码的方式也较多,这里仅介绍一种较常用的方式。

使用mysqladmin方式:

打开命令提示符界面,执行命令:

mysqladmin-uroot-ppassword新密码

执行后提示输入旧密码完成密码修改,当旧密码为空时,直接按回车键确认即可。

一些最重要的SQL命令

∙SELECT-从数据库中提取数据

∙UPDATE-更新数据库中的数据

∙DELETE-从数据库中删除数据

∙INSERTINTO-向数据库中插入新数据

∙CREATEDATABASE-创建新数据库

∙ALTERDATABASE-修改数据库

∙CREATETABLE-创建新表

∙ALTERTABLE-变更(改变)数据库表

∙DROPTABLE-删除表

∙CREATEINDEX-创建索引(搜索键)

∙DROPINDEX-删除索

日常收集常用SQL查询语句大全

常用sql查询语句如下所示:

一、简单查询语句

1.查看表结构

SQL>DESCemp;

2.查询所有列

SQL>SELECT*FROMemp;

3.查询指定列

SQL>SELECTempmo,ename,mgrFROMemp;

SQL>SELECTDISTINCTmgrFROMemp;只显示结果不同的项

4.查询指定行

SQL>SELECT*FROMempWHEREjob='CLERK';

5.使用算术表达式

SQL>SELECTename,sal*13+nvl(comm,0)FROMemp;

nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm;comm中无值,则nvl(comm,1)=0。

SQL>SELECTename,sal*13+nvl(comm,0)year_salFROMemp;(year_sal为别名,可按别名排序)

SQL>SELECT*FROMempWHEREhiredate>'01-1月-82';

6.使用like操作符(%,_)

%表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!

charlist]不在字符列中的任何单一字符。

SQL>SELECT*FROMempWHEREenamelike'S__T%';

7.在where条件中使用In

SQL>SELECT*FROMempWHEREjobIN('CLERK','ANALYST');

8.查询字段内容为空/非空的语句

SQL>SELECT*FROMempWHEREmgrIS/ISNOTNULL;

9.使用逻辑操作符号

SQL>SELECT*FROMempWHERE(sal>500orjob='MANAGE')andenamelike'J%';

10.将查询结果按字段的值进行排序

SQL>SELECT*FROMempORDERBYdeptno,salDESC;(按部门升序,并按薪酬降序)

二、复杂查询

1.数据分组(max,min,avg,sum,count)

SQL>SELECTMAX(sal),MIN(age),AVG(sal),SUM(sal)fromemp;

SQL>SELECT*FROMempwheresal=(SELECTMAX(sal)fromemp));

SQL>SELECCOUNT(*)FROMemp;

2.groupby(用于对查询结果的分组统计)和having子句(用于限制分组显示结果)

SQL>SELECTdeptno,MAX(sal),AVG(sal)FROMempGROUPBYdeptno;

SQL>SELECTdeptno,job,AVG(sal),MIN(sal)FROMempgroupbydeptno,jobhavingAVG(sal)<2000;

对于数据分组的总结:

a.分组函数只能出现在选择列表、having、orderby子句中(不能出现在where中)

b.如果select语句中同时包含有groupby,having,orderby,那么它们的顺序是groupby,having,orderby。

c.在选择列中如果有列、表达式和分组函数,那么这些列和表达式必须出现在groupby子句中,否则就是会出错。

使用groupby不是使用having的前提条件。

3.多表查询

SQL>SELECTe.name,e.sal,d.dnameFROMempe,deptdWHEREe.deptno=d.deptnoorderbyd.deptno;

SQL>SELECTe.ename,e.sal,s.gradeFROMempe,salgradesWHERe.salBETWEENs.losalANDs.hisal;

4.自连接(指同一张表的连接查询)

SQL>SELECTer.ename,ee.enamemgr_namefromemper,empeewhereer.mgr=ee.empno;

5.子查询(嵌入到其他sql语句中的select语句,也叫嵌套查询)

5.1单行子查询

SQL>SELECTenameFROMempWHEREdeptno=(SELECTdeptnoFROMempwhereename='SMITH');查询表中与smith同部门的人员名字。

因为返回结果只有一行,所以用“=”连接子查询语句

5.2多行子查询

SQL>SELECTename,job,sal,deptnofromempWHEREjobIN(SELECTDISTINCTjobFROMempWHEREdeptno=10);查询表中与部门号为10的工作相同的员工的姓名、工作、薪水、部门号。

因为返回结果有多行,所以用“IN”连接子查询语句。

in与exists的区别:

exists()后面的子查询被称做相关子查询,它是不返回列表的值的。

只是返回一个ture或false的结果,其运行方式是先运行主查询一次,再去子查询里查询与其对应的结果。

如果是ture则输出,反之则不输出。

再根据主查询中的每一行去子查询里去查询。

in()后面的子查询,是返回结果集的,换句话说执行次序和exists()不一样。

子查询先产生结果集,然后主查询再去结果集里去找符合要求的字段列表去。

符合要求的输出,反之则不输出。

5.3使用ALL

SQL>SELECTename,sal,deptnoFROMempWHEREsal>ALL(SELECTsalFROMempWHEREdeptno=30);或SQL>SELECTename,sal,deptnoFROMempWHEREsal>(SELECTMAX(sal)FROMempWHEREdeptno=30);查询工资比部门号为30号的所有员工工资都高的员工的姓名、薪水和部门号。

以上两个语句在功能上是一样的,但执行效率上,函数会高得多。

5.4使用ANY

SQL>SELECTename,sal,deptnoFROMempWHEREsal>ANY(SELECTsalFROMempWHEREdeptno=30);或SQL>SELECTename,sal,deptnoFROMempWHEREsal>(SELECTMIN(sal)FROMempWHEREdeptno=30);查询工资比部门号为30号的任意一个员工工资高

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1