mysql的安装可见: http://www.cnblogs.com/wenbronk/p/6840484.html
很久不用mysql, 今天建表都不会了, , ,
慢慢补充
sql语言分为3种: DDL, DML, DCL
DML(data manipulation language)是数据操纵语言:它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言。
DDL(data definition language)是数据定义语言:DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。
DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。
DDL
ddl的操作主要是针对数据库和数据表的
CREATE:用于创建数据库对象。
DECLARE:除了是创建只在过程中使用的临时表外,DECLARE语句和CREATE语句非常相似。唯一可以被声明的对象是表。并且必须放入用户临时表空间。
DROP:可以删除任何用CREATE(数据库对象)和DECLARE(表)创建的对象。
ALTER:允许修改某些数据库对象的信息。不能修改索引。
1, 对数据库的操作
1, 创建数据库
create database test;
create database test character set utf-8; # 设置编码
2, 查看数据库
show databases;
3, 使用数据库
use test;
4, 查看当前使用的数据库
select database();
5, 查看数据库结构
show create database test;
6, 删除数据库
drop database test;
2, 对数据表的操作
1, 建表, 格式: 列名 数据类型(长度) (约束)
create table sys_user( id int(4) not null primary key auto_increment, name char(20) not null, sex int(4) not null default '0', degree double(16,2),
unique name_index(sys_user) # 创建name的唯一索引
);
建表一般预留3列, 为varchar类型, 具体看需求
2, 查询表
show sys_user; # 显示当前库下的表
desc sys_user; # 显示表结构
show create table sys_user; #
3, 删除表
drop table sys_user;
4, 数据备份 (小数据量)
create table new_user select * from sys_user;
5, 修改表结构
# 修改表名 rename table sys_user to new_user; # 添加列 alter table sys_user add addre varchar(32) not null; # 修改列名 alter table sys_user change sex new_sex; # 修改列类型 alter table sys_user modify addre varchar(64); # 删除列 alter table sys_user drop sex;
3, 索引操作
详细见: http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html
# 创建索引
create index name_index on sys_user(name);
# 创建唯一索引
create unique index name_index on sys_user(name);
alter table sys_user add unique name_index(sys_user);
# 删除索引
drop index name_index on sys_user;
#查看索引
show index from sys_user;
DML
dml主要是针对数据的操作, 主要分为4大类, CRUD操作
1, 增
insert into 表名 (列1, 列2..) values ( 值1, 值2) # 一一对应即可
insert into 表名 values (值1, 值2, ..) # 和表的列一一对应
2, 删
delete from 表名; # 删除表中所有数据, auto_increment不会重置 # 加上where子句, 条件删除 delete from 表名 where money > 100 and money < 500;
3, 改
update sys_user set name='vini', sex='woman' where id=1; # 不加where子句, 会全部修改
4, 查
select u.username, u.password from user u;
5, 聚合查询 ( 纵向查询, 不统计null值)
# count select count(name) as '总数' from sys_user select count(DISTINCT(name)) as '总数' from sys_user; # 使用distinct函数去重 # sum select sun(IS NULL(num)) from sys_user; # 使用 is null 去除为null的 #max, min, avg select max(money) from sys_user;
6, where 子句
比较运算符: >, < >=, <=, !=(<>) 逻辑运算符: and, or, not 在范围内: between..and.. 指定值: in(值1, 值2, 值3) 模糊匹配: like null: is not null 不为空 select * from sys_user where money > 100 and addr like '%北京%' or money between 80 and 90;
7, 分组
group by
having: 只在在group by后面, 分组后对结果再次过滤
8, 排序
order by