MySQL基本知识

MySQL

中英对照

auto_increment 自动增长

primary key 主键

comment 注释

id 字段

default默认值

DDL

data definition language:create , alter, drop,show

DML

data manipulate language:insert, update, delete,select

DCL

data control language

数据类型

  1. 整数型 tinyint smallint int bigint
  2. 浮点型 float(M,N)double 备注:M必须大于N
  3. 定点型 decimal 备注:无精度损失
  4. 枚举型 enum
  5. 创建数据库,指定字符编码

create database school charset=gbk;

##表的操作

###创建一个表

create table if not exists student( 
id int auto_increment primary key comment '主键id',
name varchar(30) not null comment '姓名',
phone varchar(20) comment '电话',
address varchar(100) default '暂时未知' comment '住址'
)engine=innodb;

显示表

所有表

show tables

表结构

desc teacher;

show create table teacher详细看表

删除一个表

drop table if exists teacher;

修改表

修改表名

alter table table_name rename new_table_name;

字段的操作

####添加字段

alter table table_name add 字段名 数据类型 约束 after 某字段;

删除字段

alter table table_name drop 字段名;

修改字段
修改字段名

alter table table_name change 原字段名 新字段名 数据类型 约束条件

修改字段属性

alter table table_name modify 字段名 字段类型 约束条件(如果想要保存原有的约束条件,就必须加上;否则修改属性后会丢失)

-- 将学生姓名从varchar(20)修改为varchar(40)
alter table student modify sname varchar(40) not null;

数据的操作

在表中插入数据

insert into <表名> values(),(),(),();

//这里是默认按照其字段的顺序来进行的

###查看表中的数据

select * from teacher;

这里的*号是指所有的数据

select 字段1,字段2 from teacher;

删除表中的数据

delete from teacher where id =1(条件);

清空表

truncate table teacher;

更新数据

update table teacher set name = ‘frank’ where id = 1;

主键

不能为NULL

查询主键的好处:保证数据的完整性,加快查询数据的速度

记录数据的唯一性

被其他表应用

唯一键 unique

它不是用来区分数据

唯一键可以为空

一个表里能够有多个唯一键

保证数据不能重复

不能被其他表引用

外键

约束的操作

添加主键

alter table 表名 add primary key(字段1…);

删除主键

alter table 表名 drop primary key;

添加默认值

alter table table_name alter 列名 set default ‘值’

删除默认值

alter table table_name alter 列名 drop default

添加唯一键

alter table 表名 modify 字段名 数据类型 unique

添加外键

alter table 表名 add foreign key(外键名) references 所引用字段的表名(字段名)

on update set null(置空) on delete set cascade(级联);

删除外键

外键在SQL语句中

alter table 表名 drop foriegn key 外键字段名;

SQL语句注释

单行注释:#

多行注释:/**/

数据冗余

解决并发

缺点:数据过多不利于维护

Codd范式

保持每列原子性

错误范例

上课时间段
2018-2019

正确范例

开始时间结束时间
20182019

非键字段必须依赖于键字段

减少传递依赖

不必教条地遵守范式,应根据项目需求来设计数据库

确定还应判断是否已经添加过

单表查询

select

1、使用select进行计算,表达式作为字段名,结果作为值

2、select 原来的字段名 as 别名

  ```mysql

select S_name as ‘姓名’ from student;
```

from

返回多表的笛卡尔积

select * from student, course;

dual

默认的尾表

如果使用select关键字时没有使用from 默认会从dual中查

select 2*7 as res;

where

逻辑词: and or not != =

条件查询

in

确定是否在集合中

select * from student where sex in ('男','女')

between and

简化 大于和小于的条件查询

注:between and 是闭区间

is null

查看 某个字段是否为空

聚合函数

count(*)不常用统计元组个数
count(列名)统计一列中值的个数
sum(列名)统计一列值的总和
avg(列名)统计一列值的平均值
max(列名)统计一列中的最大值
min(列名)统计一列中的最小值

like

模糊查询

通配符

%代表任意长度的字符串

_代表任意单个字符

select * from student where S_name like '张%';

order by

asc升序:从小到大

desc降序:从大到小

group by

SnoSnameSsexSageSdept
1张三19软件工程
2李四20计算机科学
4张五20网络工程
5张一18大数据
7王丽二20地理信息科学
9张七七23软件工程

分别求男生和女生的平均年龄

select avg(Sage),Ssex from student group by Ssex;
年龄性别
19.5000
20.2500

group_concat

将满足条件的结果聚合到一个单元格中

having

作用于查询过后生成的表,从表中选择满足条件的组

select avg(Sage),Ssex from student group by Ssex having avg(Sage) > 100;

limit

默认从0开始

select * from student limit 1,3;

distinct

取消列中的重复值

多表查询

union

union操作符用于连接两个以上的 select 语句的结果组合到一个结果集合中。多个select 语句会删除重复的数据。

注意查询的字段个数要一致

inner join

内连接:需要有公共字段。

select 字段1… from 表1 inner join 表2名 on 表1.公共字段 = 表2.公共字段

方法2:

select 字段1… from 表1,表2 where 表1.公共字段 = 表2.公共字段

left join

左连接:左表查询结果为空依然保存

right join

右连接:右表查询结果为空依然保存

cross join

返回两个表的笛卡尔积,保留了公共字段

natural join

公共字段必须保证字段名一致

如果无公共同名字段。则返回表的笛卡尔积

缺点:不容易获取表的结构

using

如果碰到全为同名公共字段的情况,则使用using选择一个主字段进行连接

子查询

缺点:效率较低

从第一个表查到另一个表,把第一个表作为子查询语句(子查询语句可以看作一个set)

不相关子查询

子查询不依赖父查询

in

查询分数大于90的学生的姓名

select S_name from student where S_no in(select S_no from choice where score > 86);

相关子查询

exists

只要子查询语句成立,那么父查询就执行

视图

通过查询生成子表,隐藏父表中的重要数据。保证了数据库的安全

生成视图

create view 视图名 as 查询语句

更新视图

alter view 视图名 as 查询语句

删除视图

drop view 视图名

事务

四大特性

atomicity

consistency

isolation

durability

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值