mysql -uroot -p; 是连接数据库
show databases; 显示所有数据库
create table (表的名字) ((字段名 字段类型,字段名,字段类型)) 创建表
create database (数据库的名字) 创建一个数据库
use; 进入某个数据库
show tables; 显示数据库中的所有表
desc (表名); 查看表结构
insert into (表名) ((表名中的字段)) values (字段所对应的值)(字段所对应的值); 在表中添加记录
select (列名) from (表名); 选择查看某个表的所有内容
select (列名) from (表名) order by (列名) asc; 选择某个表,并用相应的列名进行增序排序.(desc是降序)
drop table (表名) 删除表
drop database (表名) 删除数据库
delete from (表名) where (条件); 删除表里的内容
select distinct (列名) from (表名); 选择某个表的某一列 去重显示.
as (重命名)
select (列名) from (表名) where (条件) 条件查询
select * from (表名) limit (显示几行) offset (从第几行开始显示) 分页查询 每次显示几行,以及从第几行开始显示.
update (表名) set (列名) = (要修改的值) where (要修改的条件)
update (表名) set (列名) = (要修改的值) order by asc limit 3; 先排序(正序)然后把前三个列名的值 修改成 要修改的值
ALTER TABLE <表名> [修改选项]
修改选项的语法格式如下:
{ ADD COLUMN <列名> <类型> 添加一个新的列
| CHANGE COLUMN <旧列名> <新列名> <新列类型> 更换一个列的名字和类型
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } 修改mysql中列默认值
| MODIFY COLUMN <列名> <类型> 修改一个列的类型
| DROP COLUMN <列名> 删除某个字段
| RENAME TO <新表名> } 修改表名
not null:非空约束,指定某列不为空
unique: 唯一约束,指定某列和几列组合的数据不能重复
primary key:主键约束,指定某列的数据不能重复 并且 不能为空
foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据
primary key auto_increment: 自增主键 指定某列的数据不能重复 并且 不能为空 并且自增
create table (表名) (列的名字) int,foreign key (列的名字) references (要引用的表名)(要引用的列) ; 外键约束
聚合函数
1. count((字段)); 计算这一列一共有多少行数据,null 不算.
2. sum((字段)); 计算这一行所有的数据加起来总和是多少,null不算.
3. max((字段)); 求最大值
4. min((字段)); 求最小值
5. avg((字段)); 求平均值
分组操作,group by (要分组的字段) 据行的值,对数据进行分组,把值相同的行都归为一组~~
select role,max(salary),min(salary),avg(salary) from emp group by role 先分组 然后求出各个字段的最大值,最小值,和平均值.
select name,avg(classId) from student group by (字段) having avg(字段) = 2; having 是分组后进行判断的条件,where 是分组前进行判断的条件.
多表查询
1.select * from (表名1),(表名2) ; from后面可以跟多个表名,表示多表查询,多表查询就是笛卡尔积,笛卡尔积的列数等于 表名1的列数 + 表名2的列数.笛卡尔积的行数 等于 表名1的行数 * 表名2的行数.多表查询 就是一个N*M 的排列组合.
2.select * from (表1) inner join (表2) on 条件; 这也是一个多表查询语句,与第一种写法几乎是一样的,inner 其实是可以省略的. inner join 这个表示内连接
3.select (列) from (表1) left join (表2) on (条件); 左外连接
4.select (列) from (表1) right join (表2) on (条件); 右外连接
外连接是指 获取两张表共有的内容部分,左连接是指获取表1的所有内容(左侧表内容,右侧表内容没有的话为null),右连接是指获取表2的所有内容.(获得表右侧的全部内容,左侧没有内容的话 为null)
5.自连接,自连接就是自己和自己连接,但是自己和自己连接会有重名的情况,所以要用 as 换一个名字,自连接的作用是把 行和行 之间的比较,换成 列和列 之间的比较 因为 列和列之间的比较非常的容易,而行和行的比较就有些困难了,自连接的语法为 select * from (表名1),(表名1).
6.子查询,子查询就是一个套娃,将两个SQL语句合成一条SQL语句,例如 将一个函数的返回值 当另一个函数的参数一样. 如果子查询返回的参数 不止一条 那么就需要用关键字 in 来将这多条数据当做函数参数来使用. 语法格式为 select * from (表名) where name in = (select name from student where classId = 1)
7.union 这是合并查询的关键字 将两个select 合并起来,当然 也可以使用 or 来替换union这个关键字.使用or的时候 必须是针对同一张表才行.而union 则没有这个要求.