导航:首页 > 使用方法 > mysqlsql基本常用的方法

mysqlsql基本常用的方法

发布时间:2022-05-26 00:20:59

Ⅰ SQL数据库常用命令及语法举例

下面是一些常用的SQL语句,虽然很基础,可是却很值得收藏,对于初学者非常实用

Ⅱ mysql常用命令都有哪些

1.导出整个数据库
mysqlmp-u用户名-p–default-character-set=latin1数据库名》导出的文件名(数据库默认编码是latin1)23mysqlmp-uwcnc-psmgp_apps_wcnc》wcnc.sql
2.导出一个表
mysqlmp-u用户名-p数据库名表名》导出的文件名23mysqlmp-uwcnc-psmgp_apps_wcncusers》wcnc_users.sql
3.导出一个数据库结构
mysqlmp-uwcnc-p-d–add-drop-tablesmgp_apps_wcnc》d:wcnc_db.sql23-d没有数据–add-drop-table在每个create语句之前增加一个droptable
4.导入数据库
A:常用source命令23进入mysql数据库控制台,45如mysql-uroot-p67mysql》use数据库89然后使用source命令,后面参数为脚本文件(如这里用到的.sql)1011mysql》sourcewcnc_db.sql1213B:使用mysqlmp命令1415mysqlmp-uusername-pdbname《filename.sql1617C:使用mysql命令1819mysql-uusername-p-Ddbname《filename.sql启动与退出
1、进入MySQL:启动MySQLCommandLineClient(MySQL的DOS界面),直接输入安装时的密码即可。此时的提示符是:mysql》
2、退出MySQL:quit或exit
5.创建数据库
命令:createdatabase《数据库名》
例如:建立一个名为xhkdb的数据库
mysql》createdatabasexhkdb;
6.显示所有的数据库
命令:showdatabases(注意:最后有个s)
mysql》showdatabases;
7.删除数据库
命令:dropdatabase《数据库名》
8.连接数据库
命令:use《数据库名》
例如:如果xhkdb数据库存在,尝试存取它:
9.查看当前使用的数据库
mysql》selectdatabase();
10.当前数据库包含的表信息:
mysql》showtables;(注意:最后有个s)

Ⅲ MySQL数据库基础+ 数据库的基本操作

需要用的资料以链接的形式给需要的同学。

我用的mysql版本为: Mysql-5.5.45-win64.msi 密码是:26zw

图形化工具 Navicat(前期不推荐用,直接手动敲): Navicat 密码:c7fs

开始我的MySQL之旅吧 始于2016.12.04

--WH

一、数据库的安装

这个就不在这里过多阐述了,因为网上实在是太多安装mysql的教程了,有了我给的mysql,在按照这个安装教程(MySQL安装教程)去看,就能够安装完好。

安装好mysql后,如果需要使用windows命令窗口(也就是cmd)来操作mysql,那么就需要配置环境变量,在安装好的mysql下找到bin,将其目录放到环境变量path中去,就行了,检测成功与否的方法是在cmd命令窗口中输入mysql,就会出现一大段英文,就说明成功了,反之失败,如果不会的话就去网络搜教程。

二、数据库的基本操作

1、开启mysql服务命令

net start mysql

2、进入mysql的两种方式

明文进入:mysql -uroot -proot格式:mysql -u帐号-p密码

密文进入:mysql -uroot -p 按enter会提示你输入密码(Enter pssword:),此时你写的密码就会显示为***这样。

3、查看mysql中所有的数据库(一般在固定的单词命令就会是用大写,这个要习惯,看多了敲多了就认识了)

前面四个数据库是mysql中自带的,也就是必须的.

SHOW DATABASES;

4、创建名为test_1的数据库

格式:CREATE DATABASE 数据库名

CREATE DATABASE test_1;

5、删除名为test_1的数据库

格式:DROP DATABASE 数据库名

DROP DATABASE test_1;

总结:学习了对数据库的三个操作,1、查看所有数据库 2、创建数据库 3、删除数据库

三、数据表的基本操作

数据表和数据库还有Mysql三者的关系

mysql中保存了很多数据库、一个数据库中可以保存很多表。

对数据表的增(创建表)删(删除表)改(修改表字段)查(查询表结构)。 注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)

前提:表是在数据库下的,所以要先确实使用哪个数据库。

USE test_1;

1、创建数据表

格式:CREATE TABLE 数据表名(

字段名1数据类型[列级别约束条件],

字段名2数据类型[列级别约束条件],

字段名3数据类型[列级别约束条件]

);

注意:格式不一定需要这样隔着写,完全可以全部写成一行。但是那样写可观性非常差。我这样写只是为了可以看的更清晰。

解释:

1、[]中括号中的内容表示可以有可以没有,

2、列级别这个“列”一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横

3、约束条件后面会讲到

1.1、创建没有约束的student表
CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11) );

注释:SHOW TABLES 查询数据库底下的所有表。

1.2、创建有约束的student表

六大约束:主键约束、外键约束、非空约束、唯一约束、默认约束、自动增加

1.2.1:主键约束

PRIMARY KEY(primary key):独一无二(唯一)和不能为空(非空),通俗的讲,就是在表中增加记录时,在该字段下的数据不能重复,不能为空,比如以上面创建的表为例子,在表中增加两条记录,如果id字段用了主键约束。则id不能一样,并且不能为空。一般每张表中度有一个字段为主键,唯一标识这条记录。以后需要找到该条记录也可以同这个主键来确认记录,因为主键是唯一的,并且非空,一张表中每个记录的主键度不一样,所以根据主键也就能找到对应的记录。而不是多条重复的记录。如果没有主键,那么表中就会存在很多重复的记录,那么即浪费存储空间,在查询时也消耗更多资源。

一般被主键约束了的字段度习惯性的称该字段为该表的主键

单字段主键约束

两种方式都可以

CREATE TABLE student(CREATE TABLE student(

idINT(11) PRIMARY KEY,idINT(11),

nameVARCHAR(12),nameVARCHAR(12),

ageINT(11) ageINT(11),

);PRIMARY KEY(id) );

多字段主键约束(复合主键)

这个id和name都市主键,说明在以后增加的插入的记录中,id和name不能同时一样,比如说可以是这样。一条记录为id=1,name=yyy、另一条记录为:id=1,name=zzz。 这样是可以的。并不是你们所理解的两个字段分别度不可以相同。

CREATE TABLE student(CREATE TABLE student(

idINT(11) PRIMARY KEY,idINT(11),

nameVARCHAR(12) PRIMARY KEY,nameVARCHAR(12),

ageINT(11)ageINT(11),

);PRIMARY KEY(id,name) );

1.2.2:外键约束

什么是外键举个例子就清楚了,有两张表,一张表是emp(员工)表,另一张表是dept(部门)表,一个员工属于一个部门,那么如何通过员工能让我们自己他在哪个部门呢?那就只能在员工表中增加一个字段,能代表员工所在的部门,那该字段就只能是存储dept中的主键了(因为主键是唯一的,才能确实是哪个部门,进而代表员工所在的部门,如果是部门名称,有些部门的名称可能是同名。就不能区分了。),像这样的字段,就符合外键的特点,就可以使用外键约束,使该字段只能够存储另一张表的主键。如果不被外键约束,那么该字段就无法保证存储进来的值就一定是另一张表的主键值。

外键约束的特点:

1、外键约束可以描述任意一个字段(包括主键),可以为空,并且一个表中可以有多个外键。但是外键字段中的值必须是另一张表中的主键。

2、这样被外键关联的两种表的关系可以称为父子表或者主从表。子表(从表)拥有外键字段的表,父表(主表)被外键字段所指向的表。

3、子表被外键约束修饰的字段必须和父表的主键字段的类型一样。

注意:一个表中有被外键修饰的字段,就称该表有外键(是“有外键”。而不是“是外键”),并会给该表中的外键约束取一个名称,所以我们常说的这个表有没有外键,指的不是被外键约束修饰的字段名,而是指这个表是否有存在外键约束。也就是说,不能说这个表的外键是xxx(该表中被外键约束修饰的字段名),这种说法是错误的,但是大多数人已经习惯了这样,虽然影响不大,但是在很多时候需要理解一个东西时,会造成一定的困扰。

格式:CONSTRAINT外键名称FOREIGN KEY(被外键约束的字段名称)REFERENCES 主表名(主键字段)

英文解释:CONSTRAINT:约束REFERENCES:参考

CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);

解释:tableB中有一个名为tableA_tableB_1的外键关联了tableA和tableB两个表,被外键约束修饰的字段为tableB中的deptId,主键字段为tableA中的id

1.2.3:非空约束

NOT NULL. 被该约束修饰了的字段,就不能为空,主键约束中就包括了这个约束

CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);

1.2.4:唯一约束

UNIQUE 被唯一约束修饰了的字段,表示该字段中的值唯一,不能有相同的值,通俗点讲,就好比插入两条记录,这两条记录中处于该字段的值不能是一样的。

CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);

也就是说在插入的记录中,每条记录的name值不能是一样的。

1.2.5:默认约束

Default 指定这一列的默认值为多少,比如,男性同学比较多,性别就可以设置为默认男,如果插入一行记录时,性别没有填,那么就默认加上男

CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);

1.2.6:自动增加

AUTO_INCREMENT 一个表只能一个字段使用AUTO_INCREMENT,并且使用这个约束的字段只能是整数类型(任意的整数类型 TINYINT,SMALLIN,INT,BIGINT),默认值是1,也就是说从1开始增加的。一般就是给主键使用的,自动增加,使每个主键的值度不一样,并且不用我们自己管理,让主键自己自动生成
CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );
2、查询表结构

2.1、查看表基本结构语句

格式1:DESCRIBE 表名/DESC 表名这两个的功能是一样的,简写了单词describe

DESCRIBEstudent;

2.2、查看创建表的语句

格式:SHOW CREATE TABLE 表名

SHOW CREATE TABLE student;

这样显示的格式很不好,看不清楚,所以有了下面这个语句

格式:SHOW CREATE TABLE 表名\G

SHOW CREATE TABLE student\G;

3、修改数据表

修改数据表包括:对表中字段的增加、删除、修改。 在这个里面用的关键字为 ALTER

3.1、修改表名

格式:ALTER TABLE<旧表名> RENAME[TO]<新表名>;

将student表名改为student1(改完后在改回来)

ALTER TABLE student RENAME TO student1;

3.2、修改表中的字段名

格式:ALTER TABLE<表名> CHANGE<旧字段名><新字段名><新数据类型>

将student表中的name字段名改为 username

ALTER TABLE student CHANGE name username VARCHAR(30);

3.3、修改表中的数据类型

格式:ALTER TABLE<表名> MODIFY<字段名><数据类型>

ALTER TABLE student MODIFY username VARCHAR(20);

解释:只能修改字段名的数据类型,但是其原理跟上面change做的事情一样,这里也有修改字段名的过程,只不过修改后的字段名和修改前的字段名相同,但是数据类型不一样。

3.4、修改字段的排列位置

方式1:ALTER TABLE<表名> MODIFY<字段1><数据类型> FIRST|AFTER<字段2>

解释:将字段1的位置放到第一,或者放到指定字段2的后面

ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;

方式2:ALTER TABLE<表名> CHANGE<字段1><字段2><数据类型> FIRST|AFTER<字段3>

解释:其实是一样的,将是字段2覆盖字段1,然后在进行排序

ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;

总结

CHANGE和MODIFY的区别?

原理都市一样的,MODIFY只能修改数据类型,但是CHANGE能够修改数据类型和字段名,也就是说MODIFY是CHANGE的更具体化的一个操作。可能觉得用CHANGE只改变一个数据类型不太爽,就增加了一个能直接改数据类型的使用关键字MODIFY来操作。

3.5、添加字段

格式:ALTER TABLE<表名称> ADD<新字段名><数据类型>[约束条件][FIRST|AFTER<已存在的表名>]

解释:在一个特定位置增加一个新的字段,如果不指定位置,默认是最后一个。

ALTER TABLE student ADD sex VARCHAR(11);

3.6、删除字段

格式:ALTER TABLE<表名称> DROP<字段名>;

ALTER TABLE student DROP sex;

3.7、删除表的外键约束

格式:ALTER TABLE<表名称> DROP FOREIGN KEY<外键约束名>

注意:外键约束名 指的不是被外键约束修饰的字段名,切记,而是我们在创建外键约束关系时取的名字。

3.8、更改表的存储引擎

格式:ALTER TABLE<表名> ENGINE=<更改后的存储引擎名>

这个存储引擎目前我自己也不太清楚,虽然知道有哪几种引擎,但是稍微深入一点就不清楚了,所以打算留到日后在说。

4、删除表

4.1、删除无关联表

格式:DROP TABLE<表名>;

ALTER TABLE student;

4.2、删除被其他表关联的主表

这个是比较重要的一点,在有外键关联关系的两张表中,如果删除主表,那么是删不掉的,并且会报错。因为有张表依赖于他。那怎么办呢?针对这种情况,总共有两种方法

1、先删除你子表,然后在删除父表,这样就达到了删除父表的目的,但是子表也要被删除
2、先解除外键关系,然后在删除父表,这样也能达到目的,并且保留了子表,只删除我们不需要的父表。在3.7中就讲解了如何删除外键关系。

Ⅳ 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数据库中最常用的几个命令

Mysql常用命令行大全 机 第一招、mysql服务的启动和停止 net stop mysql net start mysql 第二招、登陆mysql 语法如下: mysql -u用户名 -p用户密码 键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是: mysql> 注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP 第三招、增加新用户 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码" 如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令: grant select,insert,update,delete on *.* to user1@localhost Identified by "password1"; 如果希望该用户能够在任何机器上登陆mysql,则将localhost改为"%"。 如果你不想user1有密码,可以再打一个命令将密码去掉。 grant select,insert,update,delete on mydb.* to user1@localhost identified by ""; 第四招: 操作数据库 登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。 1、 显示数据库列表。 show databases; 缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行操作。 2、 显示库中的数据表: use mysql; show tables; 3、 显示数据表的结构: describe 表名; 4、 建库与删库: create database 库名; drop database 库名; 5、 建表: use 库名; create table 表名(字段列表); drop table 表名; 6、 清空表中记录: delete from 表名; 7、 显示表中的记录: select * from 表名; 第五招、导出和导入数据 1. 导出数据: mysqlmp --opt test > mysql.test 即将数据库test数据库导出到mysql.test文件,后者是一个文本文件 如:mysqlmp -u root -p123456 --databases dbname > mysql.dbname 就是把数据库dbname导出到文件mysql.dbname中。 2. 导入数据: mysqlimport -u root -p123456 < mysql.dbname。 不用解释了吧。 3. 将文本数据导入数据库: 文本数据的字段数据之间用tab键隔开。 use test; load data local infile "文件名" into table 表名; 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; 2:2、创建一个数据库MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4:查看现在的数据库中存在什么表 mysql> SHOW TABLES; 5:创建一个数据库表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 6:显示表的结构: mysql> DESCRIBE MYTABLE; 7:往表中加入记录 mysql> insert into MYTABLE values ("hyq","M"); 8:用文本方式将数据装入数据库表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE; 9:导入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql; 10:删除表 mysql>drop TABLE MYTABLE; 11:清空表 mysql>delete from MYTABLE; 12:更新表中数据 mysql>update MYTABLE set sex="f" where name='hyq'; posted on 2006-01-10 16:21 happytian 阅读(6) 评论(0) 编辑 收藏 收藏至365Key 13:备份数据库 mysqlmp -u root 库名>xxx.data 14:例2:连接到远程主机上的MYSQL 假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样) 3、退出MYSQL命令: exit (回车)

Ⅵ MySql常用操作SQL语句汇总

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 数据库常用命令 简单超级实用版

1、MySQL常用命令
create
database
name;
创建数据库
use
databasename;
选择数据库
drop
database
name
直接删除数据库,不提醒
show
tables;
显示表
describe
tablename;
表的详细描述
select
中加上distinct去除重复字段
mysqladmin
drop
databasename
删除数据库前,有提示。
显示当前mysql版本和当前日期
select
version(),current_date;
2、修改mysql中root的密码:
shell>mysql
-u
root
-p
mysql>
update
user
set
password=password(”xueok654123″)
where
user='root';
mysql>
flush
privileges
//刷新数据库
mysql>use
dbname;
打开数据库:
mysql>show
databases;
显示所有数据库
mysql>show
tables;
显示数据库mysql中所有的表:先use
mysql;然后
mysql>describe
user;
显示表mysql数据库中user表的列信息);
3、grant
创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
mysql>
grant
all
privileges
on
*.*
to
user@localhost
identified
by
'something'
with
增加新用户
格式:grant
select
on
数据库.*
to
用户名@登录主机
identified
by
“密码”
GRANT
ALL
PRIVILEGES
ON
*.*
TO
monty@localhost
IDENTIFIED
BY
'something'
WITH
GRANT
OPTION;
GRANT
ALL
PRIVILEGES
ON
*.*
TO
monty@”%”
IDENTIFIED
BY
'something'
WITH
GRANT
OPTION;
删除授权:
mysql>
revoke
all
privileges
on
*.*
from
root@”%”;
mysql>
delete
from
user
where
user=”root”
and
host=”%”;
mysql>
flush
privileges;
创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
mysql
>grant
select,
insert,
update,
delete,
create,drop
on
fangchandb.*
to
custom@
it363.com
identified
by

passwd'
重命名表:
mysql
>
alter
table
t1
rename
t2;
4、mysqlmp
备份数据库
shell>
mysqlmp
-h
host
-u
root
-p
dbname
>dbname_backup.sql
恢复数据库
shell>
mysqladmin
-h
myhost
-u
root
-p
create
dbname
shell>
mysqlmp
-h
host
-u
root
-p
dbname
<
dbname_backup.sql
如果只想卸出建表指令,则命令如下:
shell>
mysqladmin
-u
root
-p
-d
databasename
>
a.sql
如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:
shell>
mysqladmin
-u
root
-p
-t
databasename
>
a.sql
那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

mysqlmp
-T./
phptest
driver
其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqlmp同一目录。如果不指定driver
表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。
5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql
中存放有查
询,可如下执行这些查询:
例如,如果您想将建表语句提前写在sql.txt中:
mysql
>
mysql
-h
myhost
-u
root
-p
database
<
sql.txt

Ⅷ mysql 优化sql方法有哪些

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0

4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20

5.下面的查询也将导致全表扫描:
select id from t where name like '%abc%'
若要提高效率,可以考虑全文检索。

6.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3

7.如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:
select id from t where num=@num
可以改为强制查询使用索引:
select id from t with(index(索引名)) where num=@num

8.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num/2=100
应改为:
select id from t where num=100*2

9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where substring(name,1,3)='abc'--name以abc开头的id
select id from t where datediff(day,createdate,'2005-11-30')=0--'2005-11-30'生成的id
应改为:
select id from t where name like 'abc%'
select id from t where createdate>='2005-11-30' and createdate<'2005-12-1'

10.不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

11.在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。

12.不要写一些没有意义的查询,如需要生成一个空表结构:
select col1,col2 into #t from t where 1=0
这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样:
create table #t(...)

13.很多时候用 exists 代替 in 是一个好的选择:
select num from a where num in(select num from b)
用下面的语句替换:
select num from a where exists(select 1 from b where num=a.num)

14.并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。

15.索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要。

Ⅸ mysql中sql性能分析方法有哪些

?Show
status
?一些值得监控的变量值:
?Bytes_received和Bytes_sent
?和服务器之间来往的流量。
?Com_*服务器正在执行的命令。
?Created_*在查询执行期限间创建的临时表和文件。
?Handler_*存储引擎操作。
?Select_*不同类型的联接执行计划。
?Sort_*几种排序信息。
?Show
session status like ‘Select’;
?Show profiles
?SET profiling=1;
?Show
profiles\G
?Show profile;

Ⅹ MySQL 要执行一个SQL 语句 有什么办法可以

方法很多。

例如

最常用的是用命令行指令,先登录mysql数据库管理系统,然后执行sql语句;

或者使用mysql可视化管理工具如navicat等直接在界面上运行sql查询语句;

再或者通过应用程序编程连接mysql数据库并运行sql语句等等。

阅读全文

与mysqlsql基本常用的方法相关的资料

热点内容
微生物遗传型的鉴定方法有哪些 浏览:426
怕丢人怎么办最有效的方法 浏览:906
怎么判断浮漂的准确方法 浏览:600
阶段性鼻炎治疗方法 浏览:133
具体研究方法及研究计划 浏览:258
什么方法可以最快消肿 浏览:774
心房颤动有什么非药物治疗方法 浏览:800
拆千纸鹤方法视频 浏览:206
样品预处理有哪些预处理方法优缺点 浏览:893
绑丝方法视频教程 浏览:752
怎样快速解决痛经的方法 浏览:787
七年级列方程的方法与技巧 浏览:896
穿越火线如何玩别人号的方法教学 浏览:736
早起锻炼身体有哪些方法 浏览:774
收纳包手工制作方法视频 浏览:688
面粉食用方法怎么填 浏览:672
怎么才是吃石榴的正确方法 浏览:116
插锁式管道安装方法 浏览:664
腰肌如何锻炼方法图片 浏览:489
临古贴的正确方法图片 浏览:92