文章内容
一、Mysql语言组成
- DDL语言—数据定义语言(建立库、建立表)
- DML语言—数据操作语言(数据增删改)+DQL(数据查询语言)
- DCL语言—数据控制语言
二、MySQL安装
1、安装
2、工具
使用工具navicat连接MySQL,连接如图:
三、DDL语言
在navicat里选择命令,按下ctrl+shift+R执行
1、创建数据库
create database 数据库名;
2、查看当前数据库
show database;
3、使用数据库
use 数据库名;
4、删除数据库
drop database 数据库名;
5、创建表格式
Create table 数据库名.表名 (
字段名字1 字段类型 可选字段约束,
字段名字2 字段类型 可选字段约束,
...
);
6、MySQL常见字段类型
- int:整数,比如:学号
- float:浮点小数,比如:运算 3/9=0.3333 (不精确)
- decimal:定点小数,decimal(16,4),一个数字16位,小数一定占四位,比如:钱财 19.6234
- char(字母位数)或者varchar(字母位数)
- datetime:时间,比如:YYYY-MM-DD HH:mm:ss
- date:时间,比如:格式YYYYMMDD
7、约束
Primary key等价于unique+not null
四、外键约束
1、说明
一张表的数据(引用表)必须依从于另外一张表的数据(被引用表)
例:分数表的学生id来源于学生表的id
2、格式
constraint 约束的名字 foreign key(引用表的id) references 被引用表(被引用表中的字段)
例如:学生表 student(student_id) 分数表:grade(grade_id)是在grade表上写
SQL语句:
Constraint fw_foreign foreign key(grade_id) references student(student_id)
3、注意点
- 被引用字段必须有唯一特性(primary key unique)的建议就是主键;
- 被引用字段和引用字段他们名字可以一样也可以不一样,但是类型必须一模一样;
- 注意外键的名字必须要唯一;
4、解除外键关系
1)第一种方式
删除表的时候,先删除引用表(分数表),再删除 被引用表(学生表);
2)第二种方式
任意删除,删除外键语句:
alter table grade drop foreign key fw_foreign;
五、DML语言
1、insert语句
insert into 表(字段1,字段2,字段3,。。。)values (数据1,数据2,数据3,。。。);
2、制作SQL文件
导出—选择数据库—-右键选择转储SQL文件—-结构和数据
导入—选择数据库—-右键选择运行SQL文件—-选择SQL文件
六、DQL语言
1、select语句
select * from 表名;
- 条件逻辑符号:and 与 or 或者 not 非
- 支持各种比较符号:> >= <= < = <> != 不等于
- 模糊查询:like %代表1~多个字符 _下划线代表1个字符
- 集合查询:in 和 not in 例如:select * from 表 where 字段 in(属性1,属性2,。。)
- 排序查询:order by desc(降序) order by asc(升序)
- 空/非空查询:is null 空查询 is not null 非空查询
- 去重复查询:distinct 例如:select distinct 字段 from 表
- 范围查询包含:between 条件 and 条件
- 分页查询:limit 例如:select * from 表 limit0,4 索引下标从零开始
- 统计查询:count(*) 计算总记录数;avg(字段)平均数;sum(字段) 字段总数; max(字段) 最大值;min(字段) 最小值
- 分组查询:group by having 条件
2、update语句
update 表 set 修改内容 where 字段;
3、delete语句
delete from 表;
注意:Select 可选distinct.字段 或者* 或者 统计函数 或者 as ‘别名’ from 表 join where 条件 like in and or not > < >=<= group by 组名 having order by union limit
例如:
Select > from> where 分组前条件> group by>having 分组后条件>order by >limit
问题:如何删除表里的数据,请回答出至少3种方式?
答:根据sql语言语法 企业保留表结果 采用delete(支持where)和truncate(不支持where 删除表里历史记录 ),彻底删除drop
企业中不推荐删除数据,一般会采用update 将数据换一个状态,对表增加字段 is_delete 是 1,这个数据未删除 1=》0 删除掉了
七、复杂查询
1、内连接查询
Select语句 from 表1,表2 条件 where 等值条件1 and 条件2;
或者
Select语句 from 表1 inner join 表2 on 等值条件1 where 。。。条件2;
2、左右连接查询
select * from 表1 left join(right join) 表2 on 等值条件;