`
2277259257
  • 浏览: 518195 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL----使用大全

 
阅读更多

MYSQL入门全套(第一部)

http://www.cnblogs.com/aylin/p/5744312.html

 

MYSQL入门全套(第二部)

http://www.cnblogs.com/aylin/p/5746501.html

 

MYSQL入门全套(第三部)

http://www.cnblogs.com/aylin/p/5777289.html

 

 

#显示数据库 
show databases; 
#显示数据表 
show tables; 
#选择数据库 
use examples; 
#创建数据库并设置编码utf-8 多语言 
create database `examples` default character set utf8 collate utf8_general_ci; 
#删除数据库 
drop database examples; 
#创建表 
create table test( 
id int(10) unsigned zerofill not null auto_increment, 
email varchar(40) not null, 
ip varchar(15) not null, 
state int(10) not null default '-1', 
primary key (id) 
)engine=InnoDB; 
#显示表结构 
describe 
#删除表 
drop table test; 
#重命名表 
alter table test_old rename test_new; 
#添加列 
alter table test add cn int(4) not null; 
#修改列 
alter table test change id id1 varchar(10) not null; 
#删除列 
alter table test drop cn; 
#创建索引 
alter table test add index (cn,id); 
#删除索引 
alter table test drop index cn 
#插入数据 
insert into test (id,email,ip,state) values(2,'qq@qq.com','127.0.0.1','0'); 
#删除数据 
delete from test where id = 1; 
#修改数据 
update test set id='1',email='q@qq.com' where id=1; 
#查数据 
select * from test; #取所有数据 
select * from test limit 0,2; #取前两条数据 
select * from test email like '%qq%' #查含有qq字符 _表示一个 %表示多个 
select * from test order by id asc;#降序desc 
select * from test id not in('2','3');#id不含2,3或者去掉not表示含有 
select * from test timer between 1 and 10;#数据在1,10之间 

#---------------------------表连接知识------------------------------ 
#等值连接又叫内链接 inner join 只返回两个表中连接字段相等的行 
select * from A inner join B on A.id = B.id; #写法1 
select * from A,B where A.id = B.id; #写法2 
select a.id,a.title from A a inner join B b on a.id=b.id and a.id=1;#写法3 表的临时名称 
select a.id as ID,a.title as 标题 from A inner join B on A.id=B.id;#添加as字句 

#左连接又叫外连接 left join 返回左表中所有记录和右表中连接字段相等的记录 
select * from A left join B on A.id = B.id; 

select * from A left join (B,C,D) on (B.i1=A.i1 and C.i2=A.i2 and D.i3 = A.i3);#复杂连接 

#右连接又叫外连接 right join 返回右表中所有记录和左表中连接字段相等的记录 
select * from A right join B on A.id = B.id; 

#完整外部链接 full join 返回左右表中所有数据 
select * from A full join B on A.id = B.id; 

#交叉连接 没有where字句 返回卡迪尔积 
select * from A cross join B; 

----------------------------------索引创建------------------------------------------------------
show index from A #查看索引 
alter table A add primary key(id) #主键索引 
alter table A add unique(name) #唯一索引 
alter table A add index name(name) #普通索引 
alter table A add fulltext(name) #全文索引 
alter table A add index name(id,name) #多列索引 

--------------------------------常用函数 -------------------------------------------------------
abs(-1)#绝对值 
pi()#pi值 
sqrt(2)#平方根 
mod(-5,3)#取余-2 
ceil(10.6)#进位+1 结果11 ceil(10.0)结果10 
floor(10.6)#取整 10 
round(2.5)#四舍五入到整数 结果3 
round(2.5,2)#保留两位小数 结果2.50 
truncate(2.5234,3)#取小数后3位不四舍五入 2.523 
sign(-2);#符号函数 返回-1 0还是0 正数返回1 
pow(2,3),exp(2);#2的3次幂 或e的2次幂 
log(2),log10(2);#求对数 
radians(180),degrees(0.618);#角度弧度转换 
sin(0.5),asin(0.5)#正弦和反正弦 类似cos acos tan atan 
length('hi')#计算字符长度 
concat('1',1,'hi')#合并字符串 
insert('12345',1,0,'7890');#从开头第1个字符开始到0个结束,替换成后边字符串,0表示在最前边插入 
ucase('a'),lcase('A')#转成大写和小写 
left('abcd',2),right('abcd',2);#返回前两个字符和后两个字符 
ltrim(' 0 '),rtrim(' 0 '),trim(' 0 ')#删除空格 
replace('1234567890','345678','0');#替换输出12090 
substring('12345',1,2)#取字符 输出12 1是位置 2是长度 
instr('1234','234');#取得234位置是2 
reverse('1234');#反序输出4321 
current()#返回日期 
curtime()#返回时间 
now()#返回日期时间 
month(now())#当前月份 monthname 英文月份 
dayname(now())#星期英文 dayofweek()1是星期天 weekday()1是星期二 
week(now())#本年第多少周 
dayofyear(now()),dayofmonth(now())#今天是本年第多少天 今天是本月第多少天 
year(now()),month(now()),day(now()),hour(now()),minute(now()),second(now())#返回年月日 时分秒 
time_to_sec(now()),sec_to_time(3600*8);#转换时间为秒和还原 
version()#mysql版本 
database()#当前连接的数据库 没有为null 
user()#获取用户名 
md5('a')#加密字符串 
ascii('a')#ascii值97 
bin(100),hex(100),oct(100)#返回二进制 十六进制 八进制 
conv(10001,2,8);#各种进制相互转换 
rand()#生成0到1之间随机数 
sleep(0.02)#暂停秒数 

数据库优化 
.开启缓存,尽量使用php函数而不是mysql 
. explain select 语句可以知道性能 
.一行数据使用 limit 1; 
.为搜索字段重建索引 比如关键字 标签 
.表连接join保证字段类型相同并且有其索引 
.随机查询使用php $r = mysql_query("SELECT count(*) FROM user"); 
$d = mysql_fetch_row($r); 
$rand = mt_rand(0,$d[0] - 1); 
$r = mysql_query("SELECT username FROM user LIMIT $rand, 1"); 
.避免使用select * 应该使用具体字段 
.每张表都是用id主键,并且是unsigned int 
.对于取值有限而固定使用enum类型,如性别 国家 名族 部门 状态 
.尽可能使用not null ip存储使用int(4),使用ip 转化函数ip2long()相互long2ip() 
.delete和insert语句会锁表,所以可以采用分拆语句操作 
while(1){操作语句;usleep(2000);} 
.选择正确的存储引擎;MyISAM适合大量查询 写操作多用InnoDB支持事务 

-----------------------------------存储过程/函数 --------------------------------------------------------
#存储程序: 
delimiter #定义存储过程 
create procedure getversion(out params varchar(20)) #params是传出参数 in传进 out传出 inout传回 
begin 
select version() into params; #版本信息赋值params 
end 


call getversion(@a); #调用存储过程 
select @a; 

 

#函数: 
delimiter #定义存储函数 
create function display(w varchar(20)) returns varchar(20) 
begin 
return concat('hello',w); 
end 
select display('world'); 

 


drop procedure if exists spName; #删除一个存储过程 
alter function spName [];#修改一个存储过程 
show create procedure spName;#显示存储过程信息 
declare varName type default value;#声明局部变量 

 

--------------------------------------------控制流程------------------------------------------------
#if语句 :
if 条件 then 语句 
elseif 条件 then 语句 
else 语句 
end if 


#case语句 :
case 条件 
when 条件 then 语句 
when 条件 then 语句 
else 语句 
end case 


#loop语句: 
fn:loop 
语句 
end loop fn; 
leave fn #退出循环 


#while语句: 
fn:while 条件 do 
语句 
end while fn 

--------------------------------------------------------------------------------------------
#mysql使用帮助资料 
? contents; #列出帮助类型 
? data types;#列出数据类型 
? int;#列出具体类型 
? show;#show语句 
? create table;# 
#常见表的比较 
Myisam BDB Memory InnoDB Archive 
存储限制 no no yes 64T no 
事物安全 支持 支持 
锁机制 表锁 页锁 表锁 行锁 行锁 
全文索引 支持 
外键支持 支持 
myisam frm存储表定义 MYD存储数据 MYI存储索引 
InnoDB 用于事务处理 
char 和 varchar保存和索引都不相同 
浮点数float(10,2) 定点数decimal(10,2) 
长度一定下,浮点数表示更大数据范围,缺点是引起精度丢失,货币等使用定点数存储 
索引适合于where字句或者连接字句列 
对于唯一值使用唯一索引 

 

------------------------------------数据库管理------------------------------------------------
添加新用户 grant select,insert,update,delete on *.* to Yoby@localhost identified by 'mysql'; 
# *.* 数据库名.表名,限制登录某一个数据库 test.* localhost是本地主机 网络可以使用 '%'代替所有主机 'mysql'是密码 Yoby是用户名 所有权限可以用 all代替 
查看用户权限 show grants for 'root'@'localhost'; 
移除权限 revoke all on *.* from root@localhost; 
group by id 分组 
having 限制字句 
select1 union select2 联合查询有重复去掉保留一行 
select2 union all select2 所有行合并到结果集中去 

分享到:
评论

相关推荐

    mysql-binlog-connector-java-0.21.0-API文档-中文版.zip

    赠送jar包:mysql-binlog-connector-java-0.21.0.jar; 赠送原API文档:mysql-binlog-connector-java-0.21.0-javadoc.jar; 赠送源代码:mysql-binlog-connector-java-0.21.0-sources.jar; 赠送Maven依赖信息文件:...

    mysql-connector-java-5.1.40.zip和mysql-connector-java-5.1.10.jar

    MySQL是世界上最受欢迎的开源数据库系统之一,...了解和正确使用这些文件,可以帮助Java开发者更高效地与MySQL数据库进行数据操作。在选择版本时,要考虑兼容性、性能和安全性等因素,以适应不断变化的开发环境和需求。

    mysql-8.0.20-el7-x86_64.tar.gz mysql-8.0.20安装包下载

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用程序中被广泛使用。本文将详细介绍MySQL 8.0.20的安装过程,该版本适用于Linux发行版中的EL7(Enterprise Linux 7,如CentOS 7)。提供的压缩包文件...

    mysql-connector-java-8.0.13.jar

    在使用mysql-connector-java-8.0.13.jar时,开发者通常需要在项目中添加依赖,如果是Maven项目,可以在pom.xml文件中添加如下依赖: ```xml <groupId>mysql <artifactId>mysql-connector-java <version>8.0.13 ...

    mysql-connector-java-8.0.26.jar

    此外,压缩包中还包含了一个名为"mysql-connector-java-8.0.26.jar.txt"的文本文件,这可能是MySQL Connector/J的使用说明、API文档或发布日志,提供了关于这个驱动的更详细信息,如如何配置、已知问题和解决办法等...

    mysql-connector-java-5.1.44

    要使用`mysql-connector-java-5.1.44`,首先需要将对应的JAR文件(如`mysql-connector-java-5.1.44.jar`)添加到Java项目的类路径中。这可以通过IDE的设置、MANIFEST.MF文件或运行时的-classpath参数来完成。 4. *...

    mysql-shell:mysql-shell-8.4.0-windows-x86-64bit.zip

    要安装和使用MySQL Shell,首先需要从官方下载地址(https://dev.mysql.com/downloads/shell/)下载并解压`mysql-shell-8.4.0-windows-x86-64bit.zip`文件,然后按照安装指南进行安装。安装完成后,通过命令行启动...

    mysql连接包mysql-connector-java-5.1.27.jar

    这个驱动程序符合JDBC接口规范,使得Java开发者可以使用标准的JDBC API来与MySQL进行交互,包括创建数据库连接、执行SQL查询和更新、管理事务等。 `mysql-connector-java-5.1.27.jar`中的主要知识点包括: 1. **...

    centos下hive连接mysql驱动 ,mysql-connector-java-8.0.26-1.el7.noarch.

    使用方法: 1.下载本rpm文件后,上传至你的服务器(虚拟机) 2. rpm -ivh mysql-connector-java-8.0.26-1.el7.noarch进行安装 3.安装完成后会在 /usr/share/java下会有mysql-connector-java.jar 4.按你的实际需求,...

    MySQL的jar包,包含mysql-connector-java-5.1.49和mysql-connector-j-8.1.0

    mysql57驱动jar包,jar包...mysql-connector-java是一款由mysql推出的官方驱动,它是java通过JDBC连接操作mysql的驱动,解压之后是jar包,需安装Java环境方可使用。需要mysql connector java的朋友们可以前来下载使用。

    mysql-connector-java-8.0.20.jar

    使用`mysql-connector-java-8.0.20.jar`时,开发者首先需要将其添加到项目的类路径中,这可以通过Maven或Gradle等构建工具实现。接着,通过以下步骤建立数据库连接: 1. 加载驱动:`Class.forName(...

    MySQL-python-1.2.3.win32-py2.7 MySQL-python-1.2.3.win-amd64-py2.7

    1. **Python MySQL Connector**:MySQL-python,也称为MySQLdb,是Python中广泛使用的MySQL数据库适配器。它实现了Python DB-API 2.0规范,使得在Python中编写SQL查询和处理数据库结果变得简单。 2. **版本信息**:...

    mysql-8.0.18-1.el7.x86_64.zip

    使用root用户登录mysql ,并修改root用户密码 mysql -u root -p #回车之后输入前面的初始密码也就是 XXXXXX(填自己的密码) ALTER USER "root"@"localhost" IDENTIFIED BY "自己的密码"; FLUSH PRIVILEGES; #...

    mysql-connector-java-5.1.37.rar

    这样,任何需要与MySQL交互的Java代码都能自动找到并使用这个驱动。 此外,MySQL Connector/J还支持多种特性,如连接池管理、事务处理、批处理、预编译语句、JNDI数据源等,这些都是Java数据库编程中的重要概念。...

    mysql-connector-java-8.0.28.tar.gz

    在实际使用中,开发人员需要将`mysql-connector-java-8.0.28.jar`添加到Java项目的类路径(classpath)中,或者在Hive中通过`ADD JAR`命令加载此驱动,以便在Hive查询中使用`CREATE EXTERNAL TABLE`语句连接MySQL...

    mysql-connector-java-5.1.25, mysql 5.7.31亲测有效

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,而MySQL Connector/J则是MySQL与Java应用程序之间的桥梁,它是一个...正确配置和使用这个驱动程序,可以让Java应用充分利用MySQL的强大功能,高效地处理数据库任务。

    mysql-connector-java-8.0.16.rar

    在使用`mysql-connector-java`时,你需要确保驱动版本与MySQL服务器版本相匹配,否则可能会出现连接问题。同时,为了保持应用程序的稳定性和兼容性,建议定期更新到最新的驱动版本,以获取最新的修复和功能。 在...

    mysql-connector-java-5.1.27

    在Java项目中,我们通常将这个JAR文件添加到项目的类路径(classpath)中,以便在运行时能够正常加载和使用MySQL的JDBC驱动。 以下是关于`mysql-connector-java-5.1.27`的一些关键知识点: 1. **JDBC驱动**:JDBC...

    mysql-connector-java-8.0.22.jar

    总之,MySQL Connector/J 8.0.22是Java开发者与MySQL数据库互动的关键组件,它提供了丰富的功能和优化,使得在Java应用程序中使用MySQL变得简单而高效。正确配置和使用这个驱动,可以极大地提升开发效率和应用程序的...

    mysql-connector-java-5.1.47.jar

    在这个话题中,我们将深入探讨`mysql-connector-java-5.1.47.jar`和`mysql-connector-java-8.0.20.jar`这两个版本的特性、兼容性以及使用方法。 首先,`mysql-connector-java-5.1.47.jar`是MySQL Connector/J的5.1...

Global site tag (gtag.js) - Google Analytics