浅谈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