– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
– | – |
1.mysql常用命令
Mysql –u root用户名 –p mysql连接 exit退出
Show databases; 查看当前所有数据库
Use 库名 打开指定的库
Show tables;查看当前库的所有表
Show tables from 库名; 查看其他库所有表
创建表
Create table 表名(
列名 列类型,
列名 列类型,
);
desc 表名查看表结构
select version()查看数据库版本
2查询
2.1 查询
Select 列名 from 表目录 查询单个字段
Select 列名,表名 from 表目录 查询多个字段
Select 所有列名/号 from 表目录 查询所有字段
Select 100/1009/verston() 查询常量/表达式/函数
2.2起别名
Select 表名/数据 AS 别名(外号)/ Select 表名/数据 空格 别名(外号)
2.3去重
Select distinct 表名 from 表目录
2.4字符连接
Select concat(表名,表名) AS 表名 from 表目录
2.5条件查询
条件运算符查询 > < = <> >= <=
逻辑运算符
And 与or 或 not非
Like:select * from 表名 where 列名 like ‘’
Berween and(在什么之间)select * from 表名 where 列名 berween 数据 AND 数据;
模糊查询 like查询包含某个数据的字段,配合通配符使用/between and相当于and/ in() 查询一个表中的数据下面的多个数据/is null 查询没有或者不存在的
模糊查询一般搭配通配符使用
%字段% 任意多个字符 / _字段_字段 单个字符,可一个可连续
2.6排序查询
Select 表名 from 表目录 order by 列名 asc升序/desc降序
3.单行函数
3.1概念
概念:将一组逻辑语句封装在方法中, 对外暴露方法名
好处:隐藏了实现细节,提高了代码的重用性
调用 select 函数名
3.2字符函数
length查看字节
concat 拼接字符串
upper 变大写 lower变小写
substr 索引截取字符
instr 返回字符串中第一次出现的索引
trim 去除空格
lpad 用指定字符向左填充指定长度rpad向右
replace 替换字符
3.3数学函数
Round 四舍五入 cell向上取整floor向下取整
Truncate截断小数后面的数字 mod取余
3.4日期函数
Now返回当前系统日期和时间 curdate返回日期curtime当前时间
3.5流程控制函数
IF(表达式,真,假)
Case函数使用一:
CASE 要判断的字段或表达式
WHEN 常量 THEN 要显示的值或语句
ELSE 要显示的值n或语句n
END 结束
SELECT列名,
CASE department_id(列名)
WHEN 30(列名) THEN 列名
*1.1
ELSE salary(列名)
END AS 现在工资
FROM employees
(表名)
Case函数使用二:
CASE
WHEN 常量或表达式(什么大于什么) THEN 要显示的值或语句(AS 显示别名)
WHEN 常量或表达式 THEN 要显示的值或语句
ELSE 否则要显示的值n或语句n
END 结束(相当于if self)
SELECT salary,
CASE
WHEN salary>20000 THEN ‘A级别’
ELSE ‘B’
END
FROM employees
4.分组函数和查询
4.1分组函数
分类:sum求和 avg平均值 max最大值 min最小值 count计算个数
4.2分组查询
语法:简单分组查询
Select 函数名(列名),列名(要求在group by 后面)from 表名
group BY 列名
语法:添加分组前筛选
Select 函数名(列名),列名(要求在group by 后面)from 表名
Where(筛选条件)
group BY 列名
语法:添加分组后筛选
Select 函数名(列名),列名(要求在group by 后面)from 表名
group BY 列名
having 筛选条件
4.3连接查询
5.增删改
数据操作语言:
插入:insert 修改:update 删除:delete
插入语句语法方式一(支持子查询,支持多行查询,推荐)
5.1插入语句
Insert into 表名(列)
Values(插入的数据的类型要和列的数据类型一致)
插入语句语法方式二
Insert into 表名
Set 列名=值,列名=值
5.2修改语句(搭配筛选/查询语句使用,不筛选默认选择全部)
修改单表:
Update 表名
Set 列名=新值
Where 筛选条件
修改多表:
Update 表名 起别名
Inner join 表名 起别名 on 别名。列名=别名。列名
Where 别名。列名(筛选条件)
5.3删除语句
单表删除
语法一
Delete from 表名 where 筛选条件
语法二
Truncate table 表名
多表删除
Sql192语法:
Delete 想删除哪个表的别名
From 表一 别名,表二 别名
Where 连接条件 and 筛选条件
Sql199语法:
Delete 别名
From 表 别名
Inner join 表 别名 ON 别名。列名=别名。列名
Where 筛选条件
6.库和表的管理
数据定义语言:
6.1库的管理
创建:create 修改:alter 删除:drop
语法:
库的创建:
Create database 库名
库的修改:
Alter database 库名 character set 新库名
库的删除:
Drop database 库名
6.2表的管理
创建表
Create table 表名(
列名 列的类型【长度,约束】
列名 列的类型【长度,约束】
)
修改表:
修改列名
ALTER TABLE 表名CHANGE COLUMN NAME 新表名 数据类型;
修改表的约束和类型
Alter table 表名 modify column 表名 约束
添加新列
Alter table 表名 add column 列名 数据类型
删除列
Alter table 表名 DROP COLUMN 列名
修改表名
Alter table 表名 rename to 新表名
表的复制:
1复制表的结构
Create table 新表名 like 旧表名
2复制表的结构和数据
Create table 新表名
Select * from 旧表名
3复制表的部分数据
Create table 新表名
Select 列名
From 表名
Where 列名=数据
4.复制表的某些字段
Create table 新表名
Select 列名
From 旧表名
Where 0;(条件不满足)
7.数据类型和约束
7.1数据类型
整型:tinyint 最小/smallint/int/
浮点型:float/double/
字符型:char0-255/varchar0-65535
日期型:date/year
7.2六大约束
Not null:非空,不能为空
Default:默认值 ,保证该字段有默认值
Primary key: 主键,唯一性,不能重复,并且非空
Unique:唯一,可以为空
Check:检查约束(添加条件,满足条件才能使用)
Foreign key:外键,
7.3标识列
概念:自动增长列,可以不用手动插入值。
Create table 表名(
列名 数据类型 约束 auto_increment
)
8.事务和视图
概念:一个或一组sql语句组成一个单元,这个执行单元要么全部执行,要么全部不执行
事务的属性ACID:
1原子性(atomicity)事务操作中要么都发生要么都不发生
2.一致性(consistency)从一个一致性状态变换到另一个一致性状态
3隔离性(lsolation)一个事务的执行不能被其他事务干扰
4.持久性(durability)一个事务一旦提交,它对数据库的数据是永久性的
8.1事务的创建
增删改才有事务
开始事务:set autocommit=0
结束事务:commit;回滚事务:rollback;
语法:
set autocommit=0
start transaction;(可写可不写)
update 表名 set 列名=值 where 筛选条件 列名=值
事务的回滚:
set autocommit=0
start transaction;
update 表名 set 列名=值 where 筛选条件 列名=值
savepoint a别名; 设置保存回滚点
update 表名 set 列名=值 where 筛选条件 列名=值
rollback to a,别名 回滚到保存点