DBMS(mysql)

运行全部代码: Crtl +R

运行选中代码: Crtl + Shift +R

DDL:

对数据库的操作:

​ 创建数据库操作:create database 数据库名 or create database if not exists 数据库名

​ 显示数据库操作:show databases;

​ 删除数据库操作:drop database 数据库名 or drop database if exists 数据库名

​ 使用数据库操作: use 数据库名

对表的操作:

​ 查询表:show tables; 查询表结构: desc 表名

​ 创建表:create table 表名 ( 字段名1 数据类型1,

字段名2 数据类型2 ........

);

​ 删除表:drop 表名; or drop if exists 表名;

​ 修改表:

​ 修改表名:alter table 表名 rename to 新的表名;

​ 添加列 alter table 表名 add 列名 数据类型;

​ 修改数据类型 alter table 表名 modify 列名 新数据类型;

​ 修改列名和数据类型 alter table change 列名 新列名 新数据类型;

​ 删除列 alter table 表名 drop 列名

# sql里的数据类型:

数值类型:整型 tinyint(1B),smallint(2B) ,mediumint(3B),int(4B),bigint(8B),float(4B),double(8B)

日期和时间类型:date,time,year,datetime,timestamp

字符串类型:char(定长),varchar(不定长)

DML

添加数据

​ 给指定列添加数据 insert into 表名(列1,列2......) values(值1,值2....)

​ 给全部列添加数据 insert into 表名 values(值1,值2....);

​ 批量添加数据 insert into 表名(列名1,列名2.....) values(值1,值2),(值1,值2),(值1,值2)....;

​ insert into 表名 values(值1,值2,.....),(值1,值2,.......),.....;

修改数据

​ update 表名 set 列名='值' [where 条件];

​ 删除 delete from 表名 where 条件

DQL(查询,比较复杂却最常用)

查询语法

​ select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组后条件 order by 排序字段 limit 分页限定

​ 起别名 :as 关键字

​ 条件查询: select * from 表名 where 列名 between A and B ;

​ 不等号 :!= ,<>

​ 或者 :or , in(A,B,C);

​ null值得比较不能用== 或 != 比较 要用 is 或者是 is not;

​ 特殊查询:例如 要查询 姓马的人 则 查询条件为 where name(列名) like '马%';

​ 第二个字是花 where name like '_花%';

​ 名字里含德的人 where name like '%德%';

​ 排序查询:升序 select * from users(表名) order by age(列名) asc(升序);

​ 降序 select *from users(表名) order by age(列名) desc(降序);

​ 分组查询(group by): 聚合函数:select 聚合函数(列名) from 表名;

​ count(列名):统计数量; select count(列名) from 表名; -- count 统 计内容不能为空

​ max(列名):最大值; select max(列名) from 表名;

​ min(列名):最小值;

​ sum(列名):求和;

​ avg(列名):求平均值

​ 分组查询: select 字段列表 from 表名 where 条件 group by 分组字段名 having 分组后条件过滤;

​ select id,username from users from group by id

​ select id,username,count(*) from users from group by id

​ select id,username from users from where id!= 1 group by id

​ select id,username from users from where id!= 1 group by id having id>2

​ where 和 having 之间的区别: where 分组前执行 以where 后的条件进行分组 ;having 是在分组之后对已分组德内容进行过滤

​ 执行顺序: where > 聚合函数 > having

​ 分页查询:select 字段列表 from 表名 limit 起始索引, 查询条目数;

​ -- 从0开始,查三条

​ select * from users limit 0,3;

​ -- 在对数据库进行分页后 可以使数据分页。

约束:

约束的概念:

​ 1.约束是作用于表中列上的规则,用于限制加入表中的数据。2.约束保证了数据库中数据德正确性、有效性和完整性。

约束的分类:

​ 1.非空约束 not null

​ 2.唯一约束 unique

​ 3.主键约束 primary key

​ 4.检查约束 check mysql 不支持检查约束

​ 5.默认约束 default

​ 6.外键约束 foreign key 两个表之间简历连接

​ 外键约束: create table 表名(

列名 数据类型 ,

......

[constraint] [外键名称] foreign key (外键类名) references 主表(主表列名));

​ 建表后: alter table 表名 add constraint 外键名称 foreign key (外键字段名称) references 主表(主表列名);

数据库设计

简介

​ (产品经理) (架构师) (开发工程师) (测试工程师) (运维工程师)

​ 软件研发步骤:需求分析 —》 设计 —》 编码—》 测试—》 安装步骤

​ (产品原型) (软件结构设计) (数据库设计) (接口设计) (过程设计)

​ 数据库设计概念

​ 建立数据库中的表结构 以及 表与表之间的关联关系

​ 有那些表?表与表之间的关系?

​ 数据库设计步骤

​ 1.需要分析。

​ 2.逻辑分析。 E-R图

​ 3.物理设计。根据数据库的特点把逻辑设计转换为物理设计(表)

​ 4.维护设计。

表关系之一对多

​ 例如:部门与员工

表关系之多对多

​ 例如:商品和订单

​ 可以建立一个第三方中间表 该中间表 确立两个外键 分别关联其他两个表的对应主键。

表关系之一对一

​ 例如:用户 和 用户详情

​ 将一个整表进行拆分, 设置一个唯一外键 将表与表之间进行关联

数据库设计案例

专辑案例分析:

多表查询

​ select * from emp,dept; -- 从两条表查询 这样查出来的数据 是两表的笛卡尔积

​ 可以使用where 语句判断(内连接),如

​ select * from emp,dept where emp.id ==dept.id;

内连接

​ 隐式内连接: 使用 where 语句 可以给表起别名

​ 显示内连接: select * from emp inner join dept on emp.dep_id = dept.did;

外连接

​ select 字段列表 from 表1 left [outer] join 表2 on 条件;

子查询

​ 嵌套查询方法;在查询方法里嵌套有查询作为条件判断;

​ 子查询: select * from emp where salary >(select salary from emp where name = '猪八戒'));

事务

​ 数据库的事务是一种机制、操作序列,包含一组命令;

​ 开启事务:数据库可以按命令进行操作;start transaction 或者begin 在当前sql中数据会发生变换,而在其他用户查询时不会发生变换

​ 提交事务:在提交事务后,数据库可以执行开启事务中的假设性命令;commit

​ 回滚事务:开启事务中的命令出现异常,事务回滚。roolback

事务四大特征

​ 原子性;事务是不可分割的最小操作单位,要么同时成功,要么同时失败。

​ 一致性;事务完成时,必须使所有数据都保持一致状态

​ 隔离性;多个事务之间,操作的可见性

​ 持久性;事务一旦提交或回滚,他对数据库中的数据的改变就是永久的。一般的命令 是自动提交的 select @@autocommit =0; -- 该语句可以修改提交方式,使之变为手动提交。

@AHU_IAI_Threemen-ZL