RDBMS是关系数据库管理系统(Relational Database Management System)的缩写。RDBMS是SQL的基础
use mysql打开数据库
建议安装navicat进行数据库操作
下列 value ,字符类型加上 “ ”,‘ ’ 数字类型除外
select基础语法
select now() # 获取当前时间
select * from table # *表示查询所有
select column from table # 查询一列(column必须在table中存在)
select column1,column2 from table # 查询多列(column必须在table中存在)
select * from table where column is null # 查询列名为空的数据
select * from table where column is not null # 查询列名部位空的数据
select sum(if(column=1,column,0)) from table # 查询列名为1的总数
select sum(case when column=1 then column end) from table
SQL算术运算符
select column+1 from table # + 相加 - 相减 * 相乘 / 相除 % 取余
比较运算符
select * select demo where column > 3 and column < 5 # 查询大于3小于5的数据
select * from demo where age between 3 and 5 # 和上面一样
select * from table where column = “zhangsan” # 查询列名为zhangsan的数据
select * from table where not column = “zhangsan” # 查询列名部位zhangsan的数据
select * from table where column != “zhangsan” # 和上面一样
> 大于 < 小于 = 等于 >= 大于等于 <= 小于等于 between 在某个范围内
limit指定
select * from demo limit 2 # 查询前俩行
# 其他SQL 用 top 等
通配符
_ 下划线表示单个字符
% 百分号表示零个,一个或多个字符
like 操作符
select * from table column like 's%' # 查询已s开头的数据
select * from table column like '%s' # 查询已s结尾的数据
select * from table column like '%s%' # 查询数据中有s的数据
Aliases别名
select * from table as t
# 重命名t就代表了tatble表
In 操作符
select * from table where column in (value1,value2)
# 查询列名是value1、value2的值
select distinct (去重)
select distinct column from table
# 去除重复的列名
and 和 or 运算
select * from table where 条件 and 条件 # 条件都为true执行
select * from table where 条件 or 条件 # 条件都一个为true执行
Order by 排序字段
select * from table where order by column desc # 通过列名排序降序
select * from table where order by column asc # 通过列名排序升序
inner join (内连接) 也可以只写join
select t1.varlue,t2.value from table1 t1 inner join table2 t2 on 条件
# 以俩表中心建立连接
left join (左连接)
select t1.varlue,t2.value from table1 t1 left join table2 t2 on 条件
# 以左表为中心连接右表
rigth join (右连接)
select t1.value,t2.value from table1 t1 rigth join table2 t2 on 条件
# 以右表为中心连接左表
full join(外连接)
select t1.varlue,t2.value from table1 t1 full join table2 t2 on 条件
# 全表查询
self join(自连接)
select * from table1,table2
union all 命令
select column from table1 union all select column from table2
# 把俩个查询结合在一起,但是列名必须一致
ifnull
select (column1+ifnull(column2,0)) from student
# 假如column为空,设置为0
计算语法
select avg(column) from table # 平均值
select sum(column) from table # 计算总和
select count(column) from table # 查询列条数 null不计
查询排序列函数
select first(column) from table # 查询第一行的值
select last(column) from table # 查询最后一行
最大/小函数
select max(column) from table # 查询最大值
select min(column) from table # 查询最小值
Group BY
select sum(column) from table group by column
# 对结果进行分组查询
Having (where不能与合计函数一起使用)
select sum(column) from table group by column having sum( column )
# 在函数后面添加条件
Round 函数
select round(column) from table
# 四舍五入
Insert into 语句 (添加)
insert into table values(value1,value2,value3) # 添加一条数据
insert into table(column1,column2) values(value1,value2) # 添加指定列
# 必须和创建表的字段一致
update 语句 (修改)
updata table set column1=value where column2=value # 通过列列名2的条件修改列列名1的值
delete 语句 (删除)
delete from table # 删除整个表,但是不会删除表结构
delete from table where column='value' # 删除条件的行
子查询
select * from table where 1 = (select column from table where column=1)
# 查询1等于子查询
数据格式
NOW() | 返回当前的日期和时间 |
CURDATE() | 返回当前的日期 |
CURTIME() | 返回当前的时间 |
DATE() | 提取日期或日期/时间表达式的日期部分 |
EXTRACT() | 返回日期/时间的单独部分 |
DATE_ADD() | 向日期添加指定的时间间隔 |
DATE_SUB() | 从日期减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的天数 |
DATE_FORMAT() | 用不同的格式显示日期/时间 |
DATE | YYYY-MM-DD |
DATETIME | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | YYYY-MM-DD HH:MM:SS |
YEAR | YYYY 或 YY |
----------------------------------------------------------------------------------------------
CREATE
creader database 库 # 创建库
creader table 表 # 创建表
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT, # 自动增长
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID) #主键
)
ALTER
ALTER TABLE table_name ADD column_name datatype; 添加新列
ALTER TABLE table_name DROP COLUMN column_name; 删除列
ALTER TABLE table_name MODIFY COLUMN column_name datatype; 修改列的数据类型
ALTER TABLE table_name MODIFY column_name datatype NOT NULL; NOT NULL 约束
ALTER TABLE table_name DROP CONSTRAINT MyPrimaryKey; 删除约束
drop
alter table tabke drop index index_name # 删除索引
drop table 表 # 删除表
drop database 库 # 删除库
TRUNCATE
TRUNCATE TABLE table_name;
# drop会删除表结构 truncate只会删除数据
Views
create view view_name AS select * from table
约束
NOT NULL 约束强制列不接受 NULL 值。
UNIQUE 约束唯一标识数据库表中的每条记录。
PRIMARY KEY 约束唯一标识数据库表中的每条记录。唯一、不为空
FOREIGN KEY 外键约束。一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
DEFAULT 约束用于向列中插入默认值。
CHECK 约束用于限制列中的值的范围。
ALTER TABLE table_name ADD CONSTRAINT MyUniqueConstraint CHECK (CONDITION); # 添加约束
索引
相当于书籍的目录更快的查询
不会对数据产生影响,但会对速度产生影响
索引是唯一的
CREATE INDEX index_name ON table(column); # 创建索引
CREATE UNIQUE INDEX index_name on table(column); # 创建唯一索引不允许重复值
CREATE INDEX index_name on table(column1, column2); # 聚集索引 WHERE 多列的适合
事务
- 原子性:保证任务中的所有操作都执行完毕;否则,事务会在出现错误时终止,并回滚之前所有操作到原始状态。
- 一致性:如果事务成功执行,则数据库的状态得到了进行了正确的转变。
- 隔离性:保证不同的事务相互独立、透明地执行。
- 持久性:即使出现系统故障,之前成功执行的事务的结果也会持久存在。
代码
- COMMIT:提交更改;
- ROLLBACK:回滚更改;
- SAVEPOINT:在事务内部创建一系列可以 ROLLBACK 的还原点;
- SET TRANSACTION:命名事务;
临时表创建 :CREATE TEMPORARY TABLE SALESSUMMARY