CREATE TABLE IF NOT EXISTS 表名 charset="utd8" # 创建表
CREATE DATABASE 库名 #创建数据库
DROP DATABASE 数据库名字 #删除数据库
use 库名 # 切换库
ALTER TABLE 表的名字 add 列名 类型 约束 #添加列
ALTER TABLE 表的名字 modify 列名 类型 约束 # 修改列属性
ALTER TABLE 表的名字 change 旧列名 新列名 类型 约束; #修改列名
ALTER TABLE 表的名字 DROP 列名 #删除列
ALTER TABLE 表的名字 ALTER 列名 SET DEFAULT 约束 # 修改列默认属性
ALTER TABLE 表的名字 ALTER 列名 DROP DEFAULT # 删除列默认属性
ALTER TABLE 旧的表名 rename as 新的表名 # 修改表名字
rename 旧的名字 to 新的名字 # 修改表名字
drop table 表名 #删除表
CREATE TABLE IF NOT EXISTS 表名(要复制的列名, .., 不写默认全部) like 要复制的表名
#复制表
insert into 表名 values(列名的值 必须与表里的相对应) #插入数据
insert into 表名(id,name) values(值 须与前面的对应 id 的值 ,name 的值)
insert into 表名(id ,name,age,date) select id,name,age,date from 要copy的表名
# 把一个表的数据插入到另一个表中
delete from 表名 where 条件 #删除数据
delete from 表名
truncate table 表名
区别是delete 可以根据条件删除 并且 删除的数据可恢复 只删除了属性 和 值 保留了结构
truncate 删除的时候是把表的结构 属性 都删除了 又重新创建了一个表
update 表名 set 列名=value ,列名=value where 条件 and 条件 #数据的更新
select * from 表名 #可查询表的所有值
select id,age from 表名 where 条件 #根据条件 可返回 id,age
表的排序方法
select * from 表名 order by 列名 (desc or asc) #跟据条件 进行排序 即升序或降序,默认 为升序
组合使用的方法
select * from 表名 order by 列名 1 desc 列名 2 asc #根据列名一先进行降序 然后再根据列名2 进行升序
select * from 表名 order by convert (name using gbk) #使名字按照中文排序
限制查询
select * from 表名 limit a , b
a 表示从哪一条开始返回 不包括当前行 ,
b 表示要返回的行数 只写一个默认从第一条返回指定行数数据
order by 和 limit 的组合使用
select * from 表名 order by 列名 desc limit 1; #可取出这一列中的最大值
select * from 表名 order by 列名 asc limit 1; #可取出这一列中的最小值
myspl 聚合函数
max() 最大值
min() 最小值
count () 总数行数
avg()求取平均值
sum() 求取 一列值的和
select max(列名),min(列名), avg(列名),count(1) , sum(列名) from 表名
#求取指定列的最大值,最小值,列的总数,平均值,数值的总和
分组
select 列名,列名 ..... , ...... from 表名 group by 列名 ,... #必须跟前面的列名
相对应
# 根据指定列进行分组
分组筛选
select 列名 ,列名 ... , ... from 表名 group by 列名 having 分组 分组列名
会跟分组进行筛选
select 列名,列名 ... , .... from 表名 where 条件 group by 列名,..列名 与 前面
相对应 having 分组列名 order by 列名 (asc) OR desc limit num
#条件查询的优先级
select 列名, group_concat(列名) from 表名 group by 列名与前面相对应
# 获取分组下的指定列的值