您的位置:首页 > 数据库 > MySQL

MySQL基础操作汇总

2016-05-17 09:37 746 查看



一、基本操作
二、表和字段的操作
三、操作数据
四、操作符(前面都可以加上NOT进行求反)
五、函数

5.1 汇总函数
5.2 字符函数
5.3 算数函数

六、子/组合查询(例子)
七、索引
八、创建视图
九、备注


一、基本操作

创建数据库
create database learnsql
登陆本地MySQL
Mysql -h localhost -u username -ppassword
使用数据库
use learsql;
显示该数据库下所有的表
show tables;
列出表的全部字段和属性
describe employee_tbl;


二、表和字段的操作

创建表格
create table table_name

(ID datatype null | not null,

...

primary key(ID) || foreign key(ID) references another_table_name (emp_id));
删除表格
drop table table_name;
更改表名
alter table table_name rename to new_table_name;
添加列
alter table table_name add column colunmname datatype;
添加主键约束
alter table table_name add primary key (pid)
去除主键约束
alter table table_name drop primary key
修改列定义
alter table table_name modify columnname datatype
修改列名
alter table table_name change columnname new_columnname

type NULL


三、操作数据

插入
insert into table_name(column1,column2...) values(value1,value2...)
更新
update table_name set column_name1='value1', column_name2='value2' [where
condition]
删除
delete from table_name [where condition] //只有删除行用delete剩余用drop
查询
select [*|distinct column1,column2...]

from table1 [,table2...]

where [condition1 and|or condition2]

order by column1 asc|desc //asc为升序,desc为降序


四、操作符(前面都可以加上NOT进行求反)

IS NULL
update table_name set id=0 where id IS NULL
BETWEEN
select column1,column2 from table_name where column2 BETWEEN 100 AND 200
IN
select column1 from table_name where column1 IN ('100','300','400')
LIKE
select column1 from table_name where column1 LIKE'%s_'

//'%'代表一个或多个字符,'_'代表一个数字或字符


五、函数


5.1 汇总函数

默认情况下NULL值不计算,除非使用count(*); 都可以使用distinct关键字,只计算不同条目的汇总

计数
count(distinct column)
求和
sum()
最大值
max()
最小值
min()
均值
avg()
例子
select sum(column) from table_name


5.2 字符函数

替换
select city, replace(city,'i','z') from table_name
全部替换为

小写/大写
lower(city) upper(city)
取子串
substr(column ,1,3) //从第一个字符开始取三个字符
子串第一次

出现的位置
instr(column,'str')
条件替换
decode(column ,'indianapolis','indy','greenwood','green','other')

//indianapolis显示为indy,greenwood显示为green,否则为other‘
左右填充
lpad(column ,20,'.') //用'.'将column中不满20字符的填充上直到20字符

Rpad(column ,20,'.')


5.3 算数函数

绝对值
abs()
舍入
round()
开方
sqrt()
取符号
sign()
求幂
power()


六、子/组合查询(例子)

就是利用select语句返回在一表中的值用户外层where的比较

select * from products where cost >(select avg(cost) from products); //返回比平均价格高的数据

组合多个查询

select column1 from table_name1

union/union all //前者不显示相同的值,后者显示相同值

select column2 from table_name2


七、索引

创建单字段索引
create index index_name on table_name (column)
唯一索引
create unique index index_name on table_name (column )
组合索引:对于经常在查询的where语句里共同使用的字段
create index index_name on table_name (column1,column2)
删除索引
drop index index_name on table_name
显示索引
show indexes from table_name
适合使用索引的场合

1、首先是较大规模的表中

2、大多数用户表结合的字段

3、经常在order by 或where中使用的字段

4、具有大量唯一值的字段。

不适合使用索引的场合

1、小规模的表

2、会在where语句中返回大部分记录的字段

3、经常被操作的字段

4、包含大量NULL的字段

批量操作时可以先删除索引,等操作完毕后再创建索引,有助于改善性能并避免索引的碎片化。


八、创建视图

从表创建视图
create view view_name as select column1,column2 from table_name;
从视图创建表
create table table_name as select column1,column2 from view_name;
删除视图
drop view view_name
删除表
drop table table_name


九、备注

大小写的问题:
似乎只有replace进行替换匹配时才区分大小写LIKE关键字也不区分大小写
排序与分组:
select

from

where

group by

having

order by

LIMIT
提高性能
1、from子句中的表把小表放在前面,大表放在后面

2、让SQL优化器先读取where语句中的最严格的条件,这样以后的过滤范围就会大幅缩小

3、避免OR操作符(可用IN代替),避免HAVING操作符

4、避免大规模排序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: