mysql基本语句详细教程 MySql常用操作SQL语句汇总

www.zhiqu.org     时间: 2024-06-17
看他们网上的,写得都是千篇一律,同时,好多也写得不是很好,下面是我自己总结的有关mysql的使用细节,也是我在学习过程中的一些记录吧,希望对你有点帮助,后面有关存储过程等相关操作还没有总结好,下次总结好了再发给你吧,呵呵~~~~~

MySql学习笔记

MySql概述:MySql是一个种关联数据库管理系统,所谓关联数据库就是将数据保存在不同的表中,而不是将所有数据放在一个大的仓库中。这样就增加了速度与提高了灵活性。并且MySql软件是一个开放源码软件。

注意,MySql所支持的TimeStamp的最大范围的问题,在32位机器上,支持的取值范围是年份最好不要超过2030年,然后如果在64位的机器上,年份可以达到2106年,而对于date、与datetime这两种类型,则没有关系,都可以表示到9999-12-31,所以这一点得注意下;还有,在安装MySql的时候,我们一般都选择Typical(典型安装)就可以了,当然,如果还有其它用途的话,那最好选择Complete(完全安装);在安装过程中,一般的还会让你进行服务器类型的选择,分别有三种服务器类型的选择,(Developer(开发机)、Server Machine(服务器)、Dedicated MySql Server Machine(专用MYSQL服务器)),选择哪种类型的服务器,只会对配置向导对内存等有影响,不然其它方面是没有什么影响的;所以,我们如果是开发者,选择开发机就可以啦;然后接下来,还会有数据库使用情况对话框的选择,我们只要按照默认就可以啦;

连接与断开服务器:
连接:在windows命令提示符下输入类似如下命令集:mysql –h host –u user –p
例如,我在用的时候输入的是:mysql –h localhost –u root –p
然后会提示要你输入用户密码,这个时候,如果你有密码的话,就输入密码敲回车,如果没有密码,直接敲回车,就可以进入到数据库客户端;连接远程主机上的mysql,可以用下面的命令:mysql –h 159.0.45.1 –u root –p 123

断开服务器:在进入客户端后,你可以直接输入quit然后回车就可以了;

下面就数据库相关命令进行相关说明
你可以输入以下命令对数据库表格或者数据库进行相关操作,在这里就省略了,然后直接进行文字说明了;

Select version(),current_date;//从服务器得到当前mysql的版本号与当前日期
Select user(); //得到当前数据库的所有用户
Use databasename; 进入到指定的数据库当中,然后就可以操作这个数据库当中的表格了
Show databases; //查询目前数据库中所有的数据库,并且显示出来;
Create batabase databasename;创建数据库,例如:create database manager;
Show tables; //查看当前数据库中的所有表格;
Create table tablename(colums);创建表,并且给表指定相关列,例如:create table pet(name varchar(20),owner varchar(20),species varchar(20),sex char(1),birth date,death date);

Describe tablename;将表当中的所有信息详细显示出来,例如:describe pet;
可以用命令一次插入多条记录,例如:
Insert into pet values(‘Puffball’,’Diane’,’hamster’,’f’,’1993-12-3’,null),( ‘Puffball’,’Diane’,’hamster’,’f’,’1993-12-3’,now());
Select * from pet; 从pet表当中查询出所有的记录,显示出来;
Delete from pet where id=1;删除ID为1的那一条记录;
Update pet set birth=’2001-1-3’ where name=’Bowser’;更新name为Bowser的记录当中的birth字段的值;
Select distinct owner from pet;从pet表中选择出owner字段的值唯一的行,如果有多行记录这个字段的值相同,则只显示最后一次出现这一值的一行记录;

有关日期计算:

Select name,birth,curdate(),(year(curdate())-year(birth)) as age from pet;
此处,year()函数用于提取对应字段的年份,当然类似的还有month(),day()等;

在mysql当中,sql语句可以使用like查询,可以用”_”配任何单个字符,用”%”配任意数目字符,并且SQL模式默认是忽略大小写,例如:select * from pet where name like ‘%fy’;
当然也可以用正则表达式模式进行配。

同时在sql当中,也要注意分组函数、排序函数、统计函数等相关用法,在这里只列举一二;
Select species,count(*) from pet group by speceis;
Select * from pet order by birth desc;

查询最大值的相关操作:
Select max(age) from pet;
取前多少项记录,这个主要用于分页查询操作当中,
Select * from pet order by birth desc limit 3;取前三条记录,
Select * from pet order by birth desc limit 0,3;这个可以用于分页查询,limit后面的第一个参数,是起始位置,第二个参数是取记录条数;

有关创建表格自增长字段的写法:
Create table person(id int(4) not null auto_increment,name char(20) not null,primary key (id));

修改表操作:
向表中增加字段:注意,在这个地方,如果是增加多个字段的时候,就要用括号括起来,不然会有问题,如果是单个字段的话,不用括号也没事;
Alter table test add(address varchar(50) not null default ‘xm’,email varchar(20) not null);

将表中某个字段的名字修改或者修改其对应的相关属性的时候,要用change对其进行操作;
Alter table test change email email varchar(20) not null default ‘zz’;//不修改字段名

Alter table test change email Email varchar(30) not null;//修改字段名称

删除表中字段:
Alter table test drop email;//删除单个字段
Alter table test drop address,drop email;//删除多列

可以用Drop来取消主键与外键等,例如:
Alter table test drop foreign key fk_symbol;
删除索引:
Drop index index_name on table_name;
例如:drop index t on test;
向表中插入记录:注意,当插入表中的记录并不是所有的字段的时候,应该要在前面列出字段名称才行,不然会报错;
Insert into test(name) values(‘ltx’);
Insert into test values(1,’ltx’);
也可以向表中同时插入多列值,如:
Insert into test(name) values(‘ltx’),(‘hhy’),(‘xf’);
删除表中记录:
Delete from test;//删除表中所有记录;
Delete from test where id=1;//删除表中特定条件下的记录;

当要从一个表或者多个表当中查询出一些字段然后把这些字段又要插入到另一个表当中的时候,可以用insert …..select语法;
Insert into testt(name) (select name from test where id=4);

从文件中读取行插入数据表中,可以用Load data infile语句;
Load data infile ‘test.txt’ into table test;

可以用Describe语法进行获取有关列的信息;
Describe test;//可以查看test表的所有信息,包括对应列字段的数据类型等;

MySql事务处理相关语法;

开始一项新的事务:start transaction或者begin transaction
提交事务:commit
事务回滚:rollback
set autocommit true|false 语句可以禁用或启用默认的autocommit模式,只可用于当前连接;
例子:

Start transaction;

Update person set name=’LJB’ where id=1;

Commit | rollback;

数据库管理语句
修改用户密码:以root用户为例,则可以写成下面的;mysql –u root –p 旧密码 –password 新密码

Mysql –u root –password 123;//将root用户的密码修改成123,由于root用户开始的时候,是没有密码的,所以-p旧密码就省略了;
例如修改一个有密码的用户密码:mysql –u ltx –p 123 –password 456;

增加一个用户test1,密码为abc,让他可以在任何时候主机上登陆,并对所有数据库有查询、插入、修改、删除的权限。
Grant select,insert,update,delete on *.* to test1@”%” identified by ‘abc’;
增加一个test2用户,密码为abc,让他只可以在localhost上登陆,并且可以对数据库进行查询、插入、修改、删除操作;
Grant select,insert,update,delete on mydb.* to test2@localhost identified by ‘abc’;
如果不想让用户test2有密码,可以再输入以下命令消掉密码:
Grant select,insert,update,delete on mydb.* to test2@localhost identified by “”;

备份数据库常用命令:mysqldump –h host –u username –p dbname>保存路径与文件名
然后回车后,会让你输入用户密码,输入密码后,再回车就OK啦;
Mysqldump –hlocalhost –uroot –p test >E:\db\test.sql

这一命令具体解释下:
这个命令就是备份test数据库,并且将备份的内容存储为test.sql文件,并且保存在E:\db下面;
命令当中-p 前面的test是数据库名,然后在数据库名后面要跟上一个”>”,然后接下来,就是写要保存的位置与保存文件的文件名;

将备份好的数据库导入到数据库当中去:也就是运行.sql文件将数据库导入数据库当中去->
首先你得创建数据库,然后运行如下命令:mysql –hlocalhost –uroot –p linux<E:\db\test.sql然后回车,再输入密码就可以啦;
解释下上面的命令:linux是就要导入的数据库名字,然后后面要紧跟着“<”符号,然后后面就是要导入的数据库文件;

将数据库导出保存成XML文件、从XML文件导入数据到数据库:

导出表中数据:mysql –X –h hostName –u userName –p Pwd –e “use DatabaseName;sql;” >xml文件名
或者用另外一种方式也行:mysqldump –xml –h hostName –u userName –p pwd dbName tableName //这一种只用于显示在当前的mysql客户端,不保存到文件当中;
相关说明:-X代表的是文件的格式是XML,然后-e一写不能掉,还有就是要用双引号将要操作的语句括起来;单引号不行;
例如:mysql –X –hlocalhost –uroot –p –e “use test;select * from pet;”>E:\db\out.xml
从XML文件导入数据到数据库:
Insert into tableName values(1,load_file(‘filepath’));
例如:insert into pet values(1,load_file(“E:\db\out.xml”));

查看数据库状态与查询进程:

Show status;//查看状态
Show processlist;//查看进程

更改用户名,用以下命令:
Update set user=”新名字” where user=”旧用户名”;

给数据库用户设置管理员权限:
Mysqladmin –h host –u username –p pwd;
以root用户为例;
Mysqladmin –h localhost –u root –p 123;

存储过程与函数

存储程序和函数分别是用create procedure和create function语句,一个程序要么是一个程序要么是一个函数,使用call语句来调用程序,并且程序只能用输出变量传回值;
要想在MySql5.1中创建子程序,必须具有create routine权限,并且alter routine和execute权限被自动授予它的创建者;

创建存储过程:
首先声明分隔符,所谓分隔符是指你通知mysql客户端你已经输入一个sql语句的字符或字符串符号,在这里我们就以“//”为分隔符;

Delimiter 分隔符\
如:delimiter //
再创建存储过程:
Create procedure 存储过程名 ( )
声明存储过程开始:
begin
然后开始写存储过程体:
Select * from pet;
结束存储过程:
End;//
刚刚的例子全部写出来,完整的代码就是:
Delimiter //
Create procedure spt () //注意,这个地方,存储过程名与括号之间要有个空格
Begin
Select * from pet;
End;//到这里,整个存储过程就算写完啦

执行存储过程:
Call 存储过程名 ();//
如,我们执行刚刚创建的存储过程,就是:
Call spt ();//

需要说明的是存储过程名后面一定要加个空格,而后面那个括号,则是用于传送参数的参数列表;另外,我们创建存储过程完成后,也只是创建了,但是只有调用call 存储过程名 ();//后才算执行完毕,才能看到存储过程的结果;

有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。
一、连接MYSQL。
格式: mysql -h主机地址 -u用户名 -p用户密码
1、例1:连接到本机上的MYSQL。
首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>
2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)
二、修改密码。
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令
mysqladmin -uroot -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2、例2:再将root的密码改为djg345。
mysqladmin -uroot -pab12 password djg345
三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"
例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";
但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。
例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";

(下篇)
在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。

一、操作技巧
1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。

二、显示命令
1、显示数据库列表。
show databases;
刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2、显示库中的数据表:
use mysql; //打开库,学过FOXBASE的一定不会陌生吧
show tables;
3、显示数据表的结构:
describe 表名;
4、建库:
create database 库名;
5、建表:
use 库名;
create table 表名 (字段设定列表);
6、删库和删表:
drop database 库名;
drop table 表名;
7、将表中记录清空:
delete from 表名;
8、显示表中的记录:
select * from 表名;

三、一个建库和建表以及插入数据的实例
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default \'深圳\',
year date
); //建表结束
//以下为插入字段
insert into teacher values(\'\',\'glchengang\',\'深圳一中\',\'1976-10-10\');
insert into teacher values(\'\',\'jack\',\'深圳一中\',\'1975-12-23\');

注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key
(2)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。
varchar和char有什么区别呢,只有等以后的文章再说了。 (4)将YEAR设为日期字段。
如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令:
mysql -uroot -p密码 < c:\\school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

四、将文本数据转到数据库中
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\\n来代替.
例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令 load data local infile \"文件名\" into table 表名;
注意:你最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在的库 。

五、备份数据库:(命令在DOS的\\mysql\\bin目录下执行)
mysqldump --opt school>school.bbb
注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。

后记:其实MYSQL的对数据库的操作与其它的SQL类数据库大同小异,您最好找本将SQL的书看看。
我在这里只介绍一些基本的,其实我也就只懂这些了,呵呵。最好的MYSQL教程还是“晏子“译
的“MYSQL中文参考手册“不仅免费每个相关网站都有下载,而且它是最权威的。可惜不是
象\"PHP4中文手册\"那样是chm的格式,在查找函数命令的时候不太方便。

MySQL基础教程:http://www.apiref.com/mysql-zh/index.html



MySQL最常用的几个基本SQL语句~

插入:insert
into
table1(field1,field2)
values(value1,value2)
删除:delete
from
table1
where
范围
更新:update
table1
set
field1=value1
where
范围
查找:select
*
from
table1
where
field1
like
’%value1%’
---like的语法很精妙,查资料!
排序:select
*
from
table1
order
by
field1,field2
[desc]
总数:select
count
as
totalcount
from
table1
求和:select
sum(field1)
as
sumvalue
from
table1
平均:select
avg(field1)
as
avgvalue
from
table1
最大:select
max(field1)
as
maxvalue
from
table1
最小:select
min(field1)
as
minvalue
from
table1

MySQL的常见操作在这里先做一下总结,已经整合到代码里面,经过检验无误。
复制代码
代码如下:
/*创建一个数据库*/
create
database
xuning_test;
/*说明当时使用数据库对象*/
use
xuning_test;
/*向数据库中添加表并且定义表的结构*/
create
table
person(
id
int
not
null,
name
varchar(16)
not
null,
sex
varchar(16)
not
null,
age
int
not
null,
address
varchar(128)
not
null,
remark
varchar(512)
not
null
);
/*向数据库的表中插入数据*/
insert
into
person
value
(1,'name_1','men',99,'beijing','This
is
a
frindsheep
boy'),
(2,'name_2','men',88,'shanghai','ok
great'),
(1,'name_3','man',77,'guangzhou','This
is
lickly'),
(1,'name_4','men',66,'beijing','This
is
a
frindsheep
boy'),
(1,'name_5','men',55,'beijing','you
dont
going
to
shool'),
(1,'name_6','man',44,'beijing','This
is
a
frindsheep
boy'),
(1,'name_7','men',33,'beijing','This
is
a
frindsheep
boy'),
(1,'name_8','man',22,'beijing',''),
(1,'name_9','men',11,'beijing','This
is
a
frindsheep
boy')
;
/*查询时否成功插入*/
select
*
from
person;
/*下面是多种查询方式*/
/*根据列的名称属性值*/
select
name
from
person;
/*添加条件-根据性别*/
select
name
from
person
where
sex
=
'men';
/*也可以用比较符作为条件--一定逗号隔开*/
select
name,address
from
person
where
age
>
50;
/*看做对象去使用数据库和表的关系=---双表关联--对象关系一定要明确*/
select
xuning_test.person.name,
xuning_test.person.id,
xuning_test.person.age,
xuning_test.person.address
from
xuning_test.person,
test1.test_xuning
where
xuning_test.person.id
=
test1.test_xuning.id
;
/*使用表的别名进行查询*/
use
xuning_test;
select
c.name,sex
from
person
as
c
where
c.age
>
40
and
c.address='beijing';


#颜净兰# mysql workbench怎么用 -
(13047101051): MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具.它是著名的数据库设计工具DBDesigner4的继任者.你可以用MySQL Workbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移.MySQL ...

#颜净兰# mysql学习 - 如何从零开始学Mysql?没有sql的基础,要找工作了,需要学习
(13047101051): 首先要搞清楚,你是要学数据库管理还是数据库开发. 数据库管理主要是负责数据的安全,拷贝,还原,和传输.对智力的要求不高.薪资高,但是位置通常不会给初学者.原因是这个位置责任重大.在美国,常常还需要查FBI记录.常常需要夜里工作. 数据库的开发设计的任务是和数据库连接.存储数据,设计数据结构,优化数据,和索取数据.这个位置可以有初级,中级,和高级. 不管干哪方面,首先都要学好SQL语句. 在数据库开发上,你要确定的是你用什么语言与数据库连接.能够与数据库连接的计算机语言不下几十种.python,Java,dot net 是其中三个比较流行的计算机语言.不管你用哪种计算机语言去连接数据库,你都必须对这个计算机语言熟悉.

#颜净兰# dbc2000 SQL基本语句有哪些(要详细)?
(13047101051): 字段:field 表名: tbuser 值:value 增加:insert into field1,field2,field3 tbuser values (value1,value2,value3) 删除:delete from tbuser where field1 = '张三' 查询:select * from tbuser

#颜净兰# MYSQL中LIMIT用法 -
(13047101051): limit是mysql的语法select * from table limit m,n其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条.select * from tablename limit 2,4即取出第3条至第6条,4条记录

#颜净兰# 有谁有sql详细的教程,包括什么左连接,右链接,最后有相关的sql语句 -
(13047101051): A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行. SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行. 同理

#颜净兰# 如何使用mysql的全文索引搜索 -
(13047101051): 你有没有想过如何使用搜索功能在所有整站中实现!互联网博客和网站,大多数都采用MySQL数据库.MySQL提供了一个美妙的方式实施一个小的搜索引擎,在您的网站(全文检索).所有您需要做的是拥有的MySQL 4.x及以上.MySQL提供...

#颜净兰# php操作MYSQL数据库的步骤是什么? -
(13047101051): 一共分三步:连接、查询、断开,例子程序:<?php mysql_connect('127.0.0.1', 'root', '123456');//连接$sql='select host,user from mysql.user';$res=mysql_query($sql); while($row=mysql_fetch_row($res)) echo "$row[0] - $row[1]<br>\n"; mysql_free_result($res); mysql_close();//关闭?>

#颜净兰# 如何自学数据库 -
(13047101051): 你想学oracle干嘛用,oracle数据库可是大型数据库,不说一般,就是中型企业也支付不起一年几千万的使用费.初学者可以先学mysql数据库.mysql和oracle一样都支持sql语法,都是关系型数据库.不同的是存储过程不一样,权限管理不一样...

#颜净兰# 如何设置mysql数据库为utf - 8编码 -
(13047101051): 检查当前数据库编码. 使用语句: show variables like '%character%'; show variables like'%collation%'; 如果不是以上情况,需要将mysql编码设置为utf-8.具体步骤如下: 如果安装mysql时安装了“MySql Sever Instance Configuration ...

#颜净兰# 如何使用数据库 -
(13047101051): 微软的数据库有SqlServer2000、SqlServer2005、access ,都比较常用.access数据库适用于小型项目,SqlServer适用于大、中型项目.还有mysql数据库,也适用于大、中型项目 以上数据库都是开源的,直接下载就可以.oracle数据库则需要付费的.怎么使用,看你使用哪个数据库,通常都是创建数据库----创建表结构-----填入数据.数据库就好比一个容器,盛装着你需要的数据,当你想要查看的时候,通过程序 代码调出来.