1.Show tables 显示当前数据库中的表
2.Create table 表名 创建一个数据表
(
列名称1 数据类型 [约束]
列名称2 数据类型 [约束]
列名称3 数据类型 [约束]
… …
)
主键约束:(primary key)不重复且不为空,通过主键唯一确定一条记录
可以写在每一行末尾,也可以写在最后,当需要用联合主键时,则写在最后,如primary key ( userId,name )
外键约束 :涉及到两个表,主表和副表,外键约束写在副表中。
例子:Foreign key(class_id) references classes(id)
这个id必须为主键,而class_id不可以是主键
主表 classes 中没有的数据值,在副表中是不可以使用的。由于主表中的记录可能会被副表引用,是不可以被修改和删除的,必须先解除外键约束。
自增约束 :auto_increment
非空约束:not null
唯一约束:unique,可以类似联合主键添加在末尾,不同时重复就可以
默认约束:default 数据(与类型对应),类似缺省形参
常见类型: int , char (定长字符), varchar(不定长字符)
3. Desc 表名 查看表的信息,更详细记录 show create table 表名
4. Drop table [if exists] 表名 删除数据表
5. 插入字段
Insert into 表名 values(值1,值2,值3,)
Insert into 表名 (列1,列2,列3) values (值1,值2,值3)
6. 查询表中记录
Select 字段1,字段2,,, from 表名 where 条件
Select * from 表名 条件
7. 更新记录(修改)
Update 表名 set 字段=新内容 where 条件
8. 删除纪录
Delete from 表名 where 条件
9. ALTER修改表结构
①基本的增删改
alter table table_name
rename 新表名 //改表名
add 字段 类型 [约束] //添加字段
add 字段 类型 [约束] after 字段名 //按一定顺序添加字段
add 字段 类型 [约束] first //添加到最前面
drop [if exist] 字段 //删除字段
modify 字段 数据类型 [完整约束] //改字段的约束
change 旧字段名 新字段名 新数据类型 [完整约束] //改字段名+类型
change 旧字段名 新字段名 旧数据类型 [完整约束] //改字段名
②主键操作
alter table 表名 add primary key (字段名) //添加主键
alter table 表名 drop primary key //删除主键
alter table 表名 modify 字段 字段名 primary key 修改字段添加主键约束
③外键操作
alter table table_name
add constraint [foriegn key name] foriegn key (字段) references 表名(字段) //添加外键
add foreign key(字段) references 表名(字段) //添加外键
drop foreign key [外键名] //删除外键
删除外键后用desc 查看表结构会发现还有mul标志,这是因为创建了索引,使用show index from 表名找到对应的索引(一般就是对应的字段名),再用drop index 索引名 on 表名即可解决这一问题。
(约束名可以通过show create table表名查到)
1. 直接查询
select * from 表名直接查询表中所有数据
select 字段1,字段2,字段2 from 表名 [where …]
可以直接列出所有的字段,与第一条等价,但是指定字段查询效率更高
2. 去重 distinct
select distinct 字段 from 表名
3. 排序 order by
select * from 表名 order by 字段1 [desc/asc],字段2 [desc/asc]
排序默认按照ascll升序,使用desc则按照降序排列,如果按多个字段排序则依次进行,对前面排序好的内容再进一步排序,不可违背已有的排序规则
4. 限制 limit
Select * from 表名 order by 字段 limit 5 显示5行 (常和排序连用)
Select * from 表名 limit 3,5 从第三行开始,显示5行
5. 聚合
汇总函数,如sum求和,count统计,max最大值,min最小值,avg平均值等
使用示例:select sum(salary) from jpb
Group by,对于分类聚合的字段进行分组
使用实例:select age count(1) from job group by age;得到按年龄分组的人数统计
With ,对分组的数据再次汇总
使用示例:select age count(1) from job group by age with rollup;既统计各年龄段人数,又统计总人数
Having 再次过滤,分类后过滤,而where是分类前进行过滤
select age count(1) from job group_by age with rollup having count(1)>1;
这样将会把分组后人数不大于1的过滤掉。
6. 子查询
将一条查询语句的结果作为另一条查询语句的条件,常用关键词(in , not in , = , != ,exists , not exists等)
示例:select * from job where type in (select type from job_type);
7.联合查询
Select type from job union all select type from job_type; 直接将结果合并
Select type from job union select type from job_type; 对结果进行去重
8.表连接查询
内连接,选出两张表中相互匹配的内容(第二条语句与内连接效果一样)
Select job.name , job_type.name from job join job_type on job.type=job_type.type;
Select job.name , job_type.name from job , job_type where job.type=job_type.type;
左外连接:选出包含左表的全部纪录
Select job.name , job_type.name from job left join job_type on job.type=job_type.type;
右外连接:选出包含右表的全部记录
Select job.name , job_type.name from job right join job_type on job.type=job_type.type;