1 数据库
1.1 创建数据库 默认字符集 排序规则
create database 数据库名 character set 编码方式 collate 排序规则
1.2 查看创建数据库的信息
show create database数据库名;
show databases;//查看当前存在的数据库
1.3 修改数据库
alter database 数据库名 character set 编码方式 collate 排序规则;
1.4 删除数据库
drop database 数据库名;
1.5 使用数据库
use 数据库名;
2 数据表
2.1 数据类型
decimal(6,2) 数据总长度是6,小数后保留两位 示例为:1234.56
year 0000 date 0000:00:00 time 00:00:00 datetime 0000-00-00 00:00:00
插入中文建议用varchar 可变长度的字符串
enum('男','女')
2.2 创建数据表
create [temporary] table 表名( 字段定义1, 字段定义2 )charset=utf8;
temporary为临时表
字段名 数据类型 [是否允许为空] [指定默认值] [自增字段] [唯一性约束|主键约束] [注释字段] [外键定义]
字段名 数据类型 [not null | null] [default 默认值] [auto_increment] [unique key | primary key] [comment '字符串'] [外键定义]
2.3 查看创建数据表的信息
show create table 表名;
desc 表名; //查看表结构
2.4 增删改字段
alter table 表名 change 旧字段名 新字段名 新数据类型; //修改字段名
alter table 表名 modify 字段名 新数据类型; //修改字段类型
alter table 表名 modify 字段名1 数据类型 first|after 字段名2; //修改字段的排列位置,一般用不到
alter table 表名 add 字段名 数据类型; //添加字段
alter table 表名 drop 字段名; //删除字段
alter table 表名 engine=存储引擎名; //修改表的存储引擎
2.5 复制数据表
create table 新表名 select * from 原表名; //复制表结构及数据到新表
create table 新表名 select * from 原表名 where false; //只复制表结构到新表
create table 新表名 like 原表名; //复制表结构及数据到新表
create table 新表名 as(select 字段1,字段2 from 原表名); //复制表的部分字段和数据到新表
2.5 删除数据表
drop table 表名;
2.6 约束
主键约束 如果该表只有一个需要设置主键约束 直接在新建表时就设置primary key 如果该表的主键由多个字段组合构成时 就可以在最后一行定义复合主键 primary key(字段1,字段2)
外键约束
constraint 外键名 foreign key (外键字段名) references 主表名 (主键字段名)
外键字段名 这个是在本表内定义的 所以不用写外键表名 但是主键字段名不在本表内 所以需要写主表名
on update cascade //级联更新
on delete cascade //级联删除
3 数据
3.1 插入数据
insert into 表名[(字段列表)] values (值列表);
insert into goodstye(id,leibie) values( (1,'学习用品'), (2,'洗漱用品');
3.2 修改数据
update 表名 set 字段名1=值1,字段名2=值2 [where 条件表达式];
update 表名 set upwd='888' where uname='朱小兰';
3.3 删除数据
delete from 表名 [where 条件表达式];
delete from users where uid=5;
4 数据查询
4.1 select语句
select [distinct] [* | 列名1,列名2] from 表名 [where] [group by [having]] [order by] [limit 记录数];
4.2 where
可以使用比较运算符 => <= !=
可以使用逻辑运算符 and or not and优先级高于or //where 表达式1 逻辑运算符 表达式2
可以使用between and运算符 where 表达式 between 初始值 and 终止值 where price between 100 and 500;
4.3 in
where 表达式 in (值1,值2,值N)
where city in ('长沙','北京') //查询city为长沙、北京两个城市的商品名称。
4.4 like
where 列名 like '字符串'
% 任意字符串 _任何单个字符串
“李”开头姓名 '李%' 第二个字为“湘” '_湘%'
4.5 regexp
where 列名 regexp '模式串'
^ 开始 $ 结束 . 单个字符 *匹配前面的字符0次或多次
4.6 is null
where 列名 is [not] null //查询这个列名为空的
4.7 distinct 消除重复结果集
select distinct * from 数据表名;
4.8 order by 排序输出
order by {列名 | 表达式 | 正整数} [asc | desc]
order by sale desc,price;
默认升序 desc 降序
4.9 group by子句
group by 列名1,列名2 [with rollup] [having 条件表达式]
group by和having用于对分组后的结果进行筛选
查询Users表,统计各城市的用户人数,显示人数在3人以上的城市。
select ucity,count(*) from users group by ucity havging count( *)>3
4.10 limit 返回多少行的内容
limit [offset,] 记录数
offset 表示偏移量
limit 5 //返回前5行的内容
limit 2,3 //第3行到第5行的内容
4.11 count函数
count ([列名|常量 | 表达式] | *)