浅谈mysql
什么是数据库?
- 数据:表示信息的符号(数值,字符串,音频,视频)
- 数据库:数据的集合
数据库
- 创建数据库:create database 数据库名
- 选择数据库:use database
- 删除数据库:drop 数据库名
表(结构)
- 创建:
create table tablename(column_name,column_type) Engine=InnoDB Default charset=utf8
例如:
create table if not exists test(
id int unsigned auto_increment,
title varchar(100) not null,
author varchar(40) not null,
PRIMARY KEY (id)
)Engine=InnoDB DEFAULT CHARSET=utf8;
- 删除:drop table tablename
- 修改:
- 删除某字段:alter table tablename drop 字段名
- 添加某字段并定义数据类型:alter table tablename add 字段名 int
- 修改字段类型:alter table tablename modify c char(10) 把c字段数据类型改为char(10)
- 修改字段名称:alter table tablename i j int 把i字段更名为j数据类型改为int
- 修改表名:alter table tablename rename to new_tablename
- 修改字段默认值:alter table tablename alter i set default 100 把i字段的默认值设为100
表(数据)
- 增: insert into tablename(field1,field2...)values(value1,value2...)
- 删:delete from tablename where...
- 改: update tablename set field1=new_value1,field2=new_value2 where...
- 查: select column_name from tablename where...
mysql数据类型
- 数值类型:int,float,double等
- 日期和时间类型:date,year,time,timestamp等
- 字符串类型:char,varchar等
mysql 运算符
- 算数运算符:
运算符 |
作用 |
+ |
加法 |
- |
减法 |
* |
乘法 |
/ |
除法 |
% |
取余 |
- 比较运算符:
符号 |
描述 |
备注 |
= |
等于 |
|
<>, != |
不等于 |
|
> |
大于 |
|
< |
小于 |
|
<= |
小于等于 |
|
>= |
大于等于 |
|
BETWEEN |
在两值之间 |
>=min&&<=max |
NOT BETWEEN |
不在两值之间 |
|
IN |
在集合中 |
|
NOT IN |
不在集合中 |
|
<=> |
严格比较两个NULL值是否相等 |
两个操作码均为NULL时,其所得值为1;而当一个操作码为NULL时,其所得值为0 |
LIKE |
模糊匹配 |
|
REGEXP 或 RLIKE |
正则式匹配 |
|
IS NULL |
为空 |
|
IS NOT NULL |
不为空 |
|
- 逻辑运算符
运算符号 |
作用 |
NOT 或 ! |
逻辑非 |
AND |
逻辑与 |
OR |
逻辑或 |
XOR |
逻辑异或 |
- 位运算符
位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。
运算符号 |
作用 |
& |
按位与 |
| |
按位或 |
^ |
按位异或 |
! |
取反 |
<< |
左移 |
>> |
右移 |
union的用法
- 删除重复数据
- 语法:
select expression1,expression2...from tablename where[conditions] union [All|Distinct] select expression1,expression2...from tablename where[conditions]
排序:
- Asc 升序,desc 降序
- 语法:
select field1.field2...from tablename1,tablename2...order by field1[ASC|desc]默认是升序
分组:group by
语法:
select column_name, function(column_name)
from table_name
where column_name operator value
group by column_name;
连接的使用
- inner join:获取两个表中字段匹配关系的记录
- left join:获取左表所有记录,即使右表没有对应匹配的记录
- right join:与left join相反
null值的处理
- is null
- is not null
事务
- begin 或 start transaction开始事务
- rollback 或 rollback work事务回滚
- commit 或 commit work 事务确认
创建索引
语法:
create index index_name on tablename(username(length))
临时表
create temporary table tablename(column_name,column_type) Engine=InnoDB Default charset=utf8
例如:
create temporary table test(
id int unsigned auto_increment,
title varchar(100) not null,
author varchar(40) not null,
PRIMARY KEY (id)
)Engine=InnoDB DEFAULT CHARSET=utf8;
复制表的步骤
- show create table tablename:获取数据表的完整结构;
- 修改sql语句的数据表名,并执行sql语句
- 拷贝数据:insert into new tablename(field1,field2...)select field1,field2...from old tablename
浅谈mysql