建库: create database 库名
删库: drop database 库名
选择数据库: use 库名
查看数据库创建细节:show create database 库名
创建一个使用gbk字符集的数据库:create database 库名character set gbk
创建表:create table 表名(字段名1 类型,字段名2 类型......);
删除表:drop table 表名
查看所有表:show tables
查看表的创建细节:show create table 表名
展示表结构:desc 表名
增加一个字段:alter table 表名add 字段名 类型
删除一个字段: alter table 表名 drop 字段名
表的约束:非空:not null
唯一:unique
自增:auto_increment
主键:primary key
添加数据:insert into 表名 values(相对应的数据)
注意:插入中文时会报错,解决方案:
1.通知服务器客户端使用的编码是gbk
set character_set_client=gbk
2.通知服务器客户端查看结果集使用的编码是 gbk
set character_set_results=gbk
数据库命令框如果有中文就乱码,解决如下:
charset gbk
删除数据:
1.删除单条数据:delete from 表名 where +条件
2.删除所有数据,不删除结构,会放到日志中,事务提交后才生效:delete from 表名
3.摧毁表,删除表中所有数据,不删除结构,立即生效:truncate table 表名
注意:delete from 表名;与truncate table 表名;都能删除该表中所有数据,
区别:前者删除后自增主键还在,后者主键会从1开始。
修改数据:update 表名 set 要修改的字段=要修改的数据 where 原字段=原数据
数据查询:
查询表中所有数据:select * from 表名
条件查询:select * from 表名 where +条件
模糊查询:_ 代表一个,%代表多个(0 - 无限)
select * from 表名 where 字段名 like ‘%要查询的信息%’
排序查询
升序:select * from 表名 order by 表中的字段 asc(MySQL中默认是升序排列,可不写)
降序:select * from 表名 order by 表中的字段 desc
分页查询:select * from 表名 limit m,n
m是指记录从m+1开始,,n代表取n条记录
分组查询:分组查询得到结果是第一次查到的某个组别
分组查询加条件:select * from 表名 group by 字段 having +条件
注意:(1) having 条件表达式:用来分组查询后指定一些条件来输出查询结果
(2) having作用和where一样,但having只能用于group by
聚合函数:
count 个数
sum 总数
avg 平均数
max 最大值
min 最小值
多表设计:
1.一对一:一张表的一条记录一定只能与另外一张表的一条记录进行对应
2.一对多:(1方建主表(id为主键字段), 多方建外键字段)
一个实体的某个数据与另外一个实体的多个数据有关联关系, 一对多的关系在设计的时候,需要设计表的外键。
constraint 约束
foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,能够让表与表之间的数据,更加的完整,关连性更强。
foreign key语句的式例:FOREIGN KEY(外键) REFERENCES 另一表(主键)
注意:表的外键必须是另一张表的主键。
删除主键信息时,当该主键字段值在外键表中存在时,该记录是不能删除的。---要把外键表是的相关信息删除之后,才能删除。
子查询:嵌套在其他查询中的查询。
3.多对多:一个实体的数据对应另外一个实体的多个数据,另外实体的数据也同样对应当前实体的多个数据。
解决方案:创建一个中间表,专门用来维护多表之间的对应关系,通常是能够唯一标识出数据的字段(主键)
连表查询:
1.内连接:inner join on 查询两张表,设定条件,将两张表中对应的数据查询出来
不会产生笛卡尔积,不会产生临时表,性能高
有三种方式:①select * from 表1 别名 inner join 表2 别名 on 表1.外键=表2.主键
②select * from 表1,表2 where 表1.外键=表2.主键
③select * from 表1 别名,表2 别名 where 表1.外键=表2.主键
2.外连接:
①左外连接:左外连接 left join on 设定条件,将两张表对应的数据查询出来,同时将左表自己没有关联的数据也查询出来
注意:join前面是左,后面是右
select * from 表1 别名 left join 表2 别名 on 表1.外键=表2.主键
②右外连接:右外连接 right join on 设定条件,将两张表对应的数据查询出来,同时将右表自己没有关联的所有数据查询出来
select * from 表1 别名 right join 表2 别名 on 表1.外键=表2.主键
3.交叉连接:交叉查询,又叫笛卡尔积查询,会将左表和右表的信息,做一个乘积将所有信息查询出来,会产生临时表,比较占用内存,生成的记录数=表1 X表2
有两种方式:①select * from 表1,表2;
②select * from 表1 cross join 表2;