MySQL基础理论

MYSQL属于数据库的一种:
mysql目前属于Oracle甲骨文公司
MYSQL称之为关系型数据库、微软的SQL server

MYSQL数据是一种C/S模型即客户端和服务端模型,
客户端通过账号、密码连接服务器,连接成功后才可以进行数据库的操作(增加、删除、变更、查询 CRUD)
MYSQL的服务端采用的IO复用+可伸缩的线程池,实现了网络高并发的经典模型

MYSQL的SQL语句类别划分:
DDL(Data Definition Language):数据库定义语言
定义了不同的数据库、数据库表,列、索引等数据库对象的定义
常用的SQL:create、drop(删除)、alter(更新)
DML(date Manipulation Language):数据操控语言
用于添加、删除、变更和查询数据库记录
常用的SQL:insert(添加)、delete(删除)、update(更新)和select(查询)
DCL(data Control Language):数据控制语言
控制不同数据库段直接访问和访问级别的语句
常用SQL:grant、remove
数据库范式:
实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,不如说“老师与学校的关系”。
属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组:表中的一行就是一个元组。
分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
码(键):表中可以唯一确定一个元组的某个属性(或者属性组),
如果这样的码有不止一个,那么大家都叫 候选码(候选键),
我们从候选码中挑一个出来做老大,它就叫主码(主键)。
全码:如果一个码包含了所有的属性,这个码就是全码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。
应用数据库的范式可以带来很多好处,最主要的归纳为三点:
1)减少数据冗余(最主要的好处、其他好处因此而附带)
2)消除异常(插入异常、更新异常、删除异常)
3)让数据组织的更加和谐。
用户就是一个实例
"用户名"称之为属性
数据库范式的作用就是进行数据库设计时字段、库表划分的依据
1、第一范式(1NF):每一列保持原子特征
列是基本数据项、不能再进行擦缝,否则设计成一对多的关系
不满足第一范式不能称之为关系型数据库
2、第二范式(2NF):属性完全依赖于主键(针对联合主键-》消除部分依赖)
1NF基础上,非主属性完全依赖于主键,如果不是依赖主键,应该拆分成新的主体,拆分成一对多的关系
3、第三范式(3NF):2NF基础上、属性不依赖于其他非主属性(消除依赖传递)
BCNF、4NF、5NF
通过范式学习:应用范式越高、表越多、表越多带来的问题:
1、查询时需要连接多个表,增加了查询的复杂性
2、查询时需要连接多个表,降低了数据库查询的性能
范式并不是越高越好,一般满足3范式即可
连接前服务端必须要启动
mysql -u XXX -p XXX
mysql:代表客户端命令
-u 后面跟用户名(user:)
-p 后面跟用户密码
退出用户端登录: exit;
库操作SQL格式:
1、创建数据库
create database database_name;
2、查看数据库
show databases;
3、使用数据库
use database_name;
5、查看数据库下存在表
show tables;
6、删除数据库
drop database database_name;
表操作SQL格式:
1、创建表
create table table_name(
属性名1 数据类型 [完整性约束],
属性名2 数据类型 [完整性约束],
属性名3 数据类型 [完整性约束],
);
属性名例如:id,name,sex
数据类型: int long char varchar
完整性约束
比如:主键、外键、非空等
完整性约束如下:

完整性约束 |说明

primary key |表示当前属性为该表的主键,可以区分不同的行记录

foreign key |修饰的属性为该表的外键,表之间关联使用的键

not null | 表示属性不能为空

unique |表示属性的值是唯一的

auto_increatmnet | MYSQL特色,表示属性是自增的,自增类型为整形

default |给属性设定默认值

用户表:
用户ID,用户名、年龄
示例SQL:
create table user(
id int primary key unique,
name varchar(10) ,
age int default 18
);
2、查看表
2.1、 desc table_name;
2.2、show create table table_name;
3、修改表
在使用过程中不满足要求可能要修改表
用的SQL关键字是alter
3.1、修改表名
alter table old_table_name rename [to] new_table_name;
3.2、修改表的字段(属性) -》name ->username
alter table table_name change 旧属性名 新属性名 新属性类型;
3.3、修改表的属性数据类型
alter table table_name modify 属性名 属性类型
3.4、增加表的字段
alter table table_name add 属性名 属性类型 [完整性约束]
id name sex;
新增一个adress;
alter table table_name add 属性名 属性类型 [完整性约束] first;
增加adress 在name后面
alter table table_name add 属性名 属性类型 [完整性约束] after 属性名(name);
3.5、删除字段
alter table table_name drop 属性名;
3.6、修改字段的排列顺序
alter table table_name modify 属性1 属性类型 first | after 属性2;
3.7、修改存储引擎
alter table table_name engine=InNoDB|myISAM;
查询表
SQL基本语句格式
select 属性列表 from 表名 [where 条件表达式1]
[group by 属性名 [Having 条件表示式2]]
[order by 属性名 [ASC|DESC]]

1\带in的子查询
[not] in ( 元素1、元素2。。。);

示例:select * from Student where SID not in(1,2,3);

2\带between and 的范围查询
[not] between 取值1 and 取值2
示例: select * from Student where Sage between 20 and 21;

3\带like的通配符配置查询
[not] like ‘字符串’
通配符:
%:表示0个或任意长度的字符串
_:只表示单个字符

示例:select * from Student where Sname like ‘%n%’;

4\空值查询
is [not] null

示例:select * from Student where Sname is not null;

5、带and的多条件查询
条件表达式1 and 条件表达式2

示例:select * from Student where Ssex like ‘nan’ and Sage=20;

6、带or的多条件查询
条件表达式1 or 条件表达式2

示例:select * from Student where SID=5 or Sname like ‘zhaolei’;

7、去重查询
select distinct 属性名 from 表名;

8\对结果排序
order by 属性名 ASC|DESC;
默认是ASC :升序
DESC:降序
示例:select * from Student order by Sage DESC;

9、分组查询
group by 属性名 [having 条件表达式]

10、limit 分页查询
limit 数据,
limit 数据1(起始位置) 数据2(偏移量);

如果只有一个参数,表示不指定其实位置为limit数据;
如果有两个参数,第一个表示起始位置,第二个表示偏移量

SQL提供的函数操作:
count(); 计数使用
Sum();求和
max();最大值
min():最小值
avg():平均值

取别名:
属性取别名:
属性名 [as] 别名

表取别名:
表名 [as] 别名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值