ysql知识点总结
开篇简介
创建表
1.登录到MySQL数据库 输入"mysql -u root -p" 并输入密码即可:
2创建库;create database 库名;
3查看所有库;show databases;
4打开开想要的库;use 库名;
5查看库下面所有的表;show tables;
6查看表的内容;select*from 表名
desc 表名;显示表结构
7查看表结构;show create table 表名
show d atabases; 查看目前系统中存在的数据库。
use world;切换到world数据库;
show tables;显示当前数据库下面所有可用的表;
select*from 表名:显示表中所有内容;
use mysql:切换到mysql 核心数据库;
select 列名,列名,列名 from 表名;查询mysql的表中的三列数据。
exit; 退出mysql命令行操作
创建一个表
创建表;create table 表名(
列名 数据类型 约束,
列名 数据类型 约束,
列名 数据类型 约束
)
mysql语句分类
数据查询语句(DQL:date query language)
select:数据选择查询
数据操作语句(DML date manipulation language)
insert into: 插入
update set:更新
dalete: 删除(删除表中的数据)
数据定义语句(DDL date definition language)
create:创建
alter:修改结构
drop; 删除
rename:重命名
truncate:删除(主要用于删除数据,重置)
数据控制语句(DCL date control language)
grant:授权
revoke:解除授权
基本命令
1 增(insert into)
增加行;insert into
增加列;alter table 表名 add 列名 数据类型 约束;
单行插入;insert into 表名( , ,) values( , , ) ;
如果想要插入所有列 可以不用声明插入的列 直接输入值;
增加主键; alter table 表名 列名 primary kay ();
复制表;create table 新表 like 旧表;
2 删除
delete;删除表中的数据
删除行; delete from 表 where 条件 ;
drop;直接删除整个表
删除列; alter table 表名 drop 列名 ;
删除表; drop table 表名;
truncate;还原表成初始状态 ;
truncate 表名 ;(直接将表还原成初始状态);
3 修改 alter update
表的复制
修改列名加数据类型;alter table 表名 change 旧列 新列 新列数据类型;
4 查询 select
5 更新
update 表名 set 列名=更新值 where 更新条件;
多个条件可以在更新条件后面加and 条件 或者or;
创建外键
!!注意数据库的引擎 是innodb 才支持外键
create table 新建表名(
laid int,
laage int,
ssid int,
foreign key (本表的外键)references 要关联的表名(关联的列名一般是主键))注:本表的外键和关联的主键必须数据类型一样;
删除外键
alter table 表名 drop foreign key 外键名;
自增长 auto increment(放在int型数据类型后面)
非空约束 not null;
唯一约束 unique;
删除(内容);
dalete from 表名 where 条件;
2019.4.18. mysql
查询 select
基本格式
Select * from 表名;查询表中所有的内容 ;
Select 列名, 列名 from 表名;查询两列的内容 ;
条件查询
Select 列名 , 列名 from 表名 where 条件 ;
As 改名;
select 列名 as 改的新的列名 ,as 改的新的列名 from表名;
新手
老鸟
As 合并 可以做运算 如果是字符串类型 可用加号拼接 数字类型 直接算出结果 合并时候需要属性相同;
Select 列名+列名 as新的列名 from 表
条数限制 默认0 开始 limit 5,10 5(从5后面开始)开始共10条;
Select * from
排序
order by 排序的列名[asc小到大 默认 或者desc 大到小降序 ]
Select 列名 , 列名 from 表名 where 条件 order by 排序的列名[asc小到大 默认 或者desc 大到小降序 ];
求成绩最高的前三名 ;
Select * from 表名 order by 列名 desc limit 3;
去重复 distinct
Select distinct 列名 from 表名 where 条件;
Sql 中的运算符号
其中 不等于两种表达方式 != 或 <>
多条件选择
范围操作查询
Between 2 and 5 取2—5之间的值;
Or 取18或者28这两个满足条件的值; age=18 or age=28
In 括号内的两个值 age in(18,28) ;
Not in
模糊查询
_ 下划线代表匹配一个字符 加一个_查找两个字的 加两个_ 查找三个字的;
SELECT * from student where sname like '陈__';
% 百分号代表匹配0个或者多个 要找前面的内容 可以在前面加上%
select * from student where sname like "%小%";
查找为空的
聚合函数 和 分组
常用的聚合函数
1 count(统计集中行的数目) 2 sum(求和)
3 平均值(avg) 4最大值(max)5最小值(min);
格式
Select 聚合函数(列名) from 表名 where 条件;
Count 求行数
用*查找所有包括null 用列名查找不包括null
Sum 求和
Sum后面括号里面必须加条件
Max 最大值
分组 group by + 需要分组的列名
分组只能显示第一条;
两层分组
Having过滤 后面可以加聚合函数
只能存在分组group by 后面 先分组 后过滤
Where 后面不能加聚合函数 不能作为过滤条件 先过滤 后分组
总结↓
子查询
相关子查询; 一个表的查询结果作为另外一查询的条件;
相关子查询尽量用 in() 因为返回值可能是多个值 不在范围内用not in
非相关子查询;先把两张表关联起来 作为一表来查询;
Select
any 最小值 小于最大值 大于最小的
all 最大值 大于最大值 小于最小的
大于最大值
组合查询(连接查询)union 要拼接 列的数量要一致
Union 如果数据完全一样 将会自动去重
Select 列名,列名 from 表名union Select 列名,列名 from 表名
Union all 如果数据一样 也不会去重
视图 创建 创建格式
Create view vw_lal+查询语句
不占用内存 只是将查询语句的结果展现出来
连接查询
内连接(inner join)只会显示有关系的 数据栏
Select 要查询的所有字段 from
Using(相同的关键字段)作用等于 on c.tno=t.tno
外连接 left join 以左边为准
Right 右边为准