Mysql基础
数据库分类
- 关系型数据库:Oracle、MYSQL、DB2、sqlsever
- 菲关系型数据库:mongoDB、redis
SQL分类
- Data DefinitionLanguage (DDL)数据定义语言,用来定义数据库对象(数据库,表, 字段),操作数据库、数据库表
--数据库
create database test;
--表
create table 表名( 字段1 字段1类型 COMMENT '注释', 字段2 字段2类型 ... );//创建表结构
show tables;//查询当前数据库所有表
desc 表名;//查看指定表结构
show create table 表名;// 查询指定表的建表语句
alter table 表名 rename to 新的表名;//修改表名
添加列 alter table 表名 add 列名 数据类型;
alter table 表名 change 列名 新列名 列类型//修改列名称、类型
alter table 表名 drop 列名;//删除列
drop table 表名;//删除表
drop table if exists 表名;
- 常见数据类型
char:定长字符串,指定长度多长,就占用多少个字符
varchar:变长字符串,指定的长度为最大占用长度 。(一般用比较方便)
相对来说,char的性能会更高些(数据量大)。
date:日期值,yyyy-MM-dd
datetime:日期值,yyyy-MM-dd HH:mm:ss
timestamp:日期值,yyyy-MM-dd HH:mm:ss,默认取当前时间戳
decimal:浮点值 decimal(总长度,小数点后长度)
- DML:Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改,数据库表记录
C(CREATE)
R(RETRIEVE)
U(UPDATE)
D(DELETE)
--添加表数据
insert into 表名(列名1,..列名n) values(值1,...值n);
--删除表数据
delete from 表名 where 条件;
--修改表数据
update 表名 set 列名1 = 值1, 列名2 = 值2,... where 条件;
- DQL: Data Query Language 数据查询语言,用来查询数据库中表的记录,数据库表记录
--查询
SELECT 字段列表 FROM 表名列表 WHERe 条件列表 GROUP BY 分组字段列表 HAVINg 分组后条件列表 ORDER BY 排序字段;
--去重
select DISTINCT gender from stu;
--聚合函数
SELECt 聚合函数(字段列表) FROM 表名
--排序查询
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2
--分组查询
SELECt 字段列表 FROM 表名 [ WHERe 条件 ] GROUP BY 分组字段名 [ HAVINg 分组后过滤条件];
--分页查询
SELECt 字段列表 FROM 表名 LIMIT 起始索引, 每页条数
--模糊查询
-- 查姓名是四个字符的
select * from stu where name like '____';
-- 姓名是l开头的
select * from stu where name like 'l%';
-- 笛卡尔积
-- 隐式内联查询
select * from emp t1,dept t2 where t1.dept_id = t2.id;
-- 内联查询
select * from emp t1
join dept t2 on t1.dept_id = t2.id;
-- 外联查询
-- 左连接查询
select * from emp t1
left join dept t2 on t1.dept_id = t2.id;
-- 右连接查询
select * from emp t1
right join dept t2 on t1.dept_id = t2.id;
-- 子查询
-- 销售部和后勤部的所有员工信息(分布为)
-- 1.先查出销售部和后勤部
-- 2.员工id在销售部和后勤部范围之内的
select * from dept t1 where t1.name in ('销售部','后勤部');
select * from emp t2 where t2.dept_id in (select id from dept t1 where t1.name in ('销售部','后勤部'));
--约束
not null//非空
create table account (
id int primary key auto_increment,
name varchar(20) not null comment '姓名'
) COMMENT='账户表';
--修改表中数据为非空
alter table stu modify name varchar(20) not null comment '姓名';
alter table stu modify name varchar(20) comment '姓名';//可以为空
--唯一约束(手机号为例)
unique//唯一约束
alter table stu modify phone varchar(11) unique comment '手机号';
alter table stu drop index phone
--添加唯一索引
alter table stu add unique key 'name_phone' ('name','phone');
--主键:唯一,一张表有且只有一个主键
alter table stu add id int primary key comment '学号';
--事务
-- 开启事务
start transaction;
insert into account (name,balance) values ('zhangsan',1000),('lisi',1000);
rollback;//感觉前面有问题就回滚一下
commit;//没有问题就提交
-- 查看是否自动提交
select @@autocommit;-- 0-手动提交,1-自动提交
-- 设置手动提交
set @@autocommit = 0;
- 事物的四大特性
- 原子性:事务操作的不可分割的最小单位,要么全部成功要么,全部失败
- 隔离性:事务之间是相互独立的
- 一致性:事务提交或者回滚之后,数据的总量保持不变
- 持久性:事务提交或者回滚之后,操作会永久地保存到数据库
- DCL: Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的 访问权限。授权
暑期编程PK赛
得CSDN机械键盘等精美礼品!