DDL
启动MySql
net start Mysql
停止MySql
net stop MySql
登录mySql :Mysql -uroot -p
root
多加一句 :
# 删除已经存在的数据库
drop database if Exists 数据库名称;
# 如果数据库不存在 创建数据库
Create database if NOT Exists 数据库名称 charSet = utf8;
# 删除已经存在的数据表
drop table if Exists 数据表名;
# 如果数据表不存在 创建数据表
Create table if NOT Exists 数据库表名称(
数据结构
) charset = utf8 "字符集" Engine = innodb "存储引擎";
-- 展示所有数据表
show Tables
-- 展示所有数据库
show databases
-- 展示数据表中的结构
Desc 数据表名
其中的几个重要属性
not null 不能为空
primary key 主键
foreign key 外键
default 默认值
auto_increment 标识列,自增列
Union key 唯一
设置数据库的字符集使用 charset = utf8
数据库类型
int
varchar 必须定义长度
datetime 时间 不能设置默认值
timestamp 时间戳 可以设置默认值
double
float
--成绩表定义方式
CREATE TABLE RESULT(
studentNo INT(4) NOT NULL,
subjectNo INT(4) NOT NULL,
examDate DATETIME NOT NULL,
studentResult INT(4) NOT NULL,
CONSTRAINT fk_stu_res FOREIGN KEY (studentNo) REFERENCES STUDENT(studentNo),
CONSTRAINT fk_sub_res FOREIGN KEY (subjectNo) REFERENCES SUBJECT(subjectNo)
)CHARSET='utf8',ENGINE=INNODB;
engine 可以是 innodb 和 Myisam
最主要的区别在于
innodb 除了全文索引以外都支持, 但是他的空间消耗大,速度稍慢
DML
增:
Insert into 表名(列1)
values("值1"),("值")
删:
Delete from 表名
where 删除条件
truncate table 表名
改:
Update 表名 set 更新列1 = '更新值', 更新列2 = '更新值'
where 更新条件
查:
Select * from 表名
where 查询条件
group by 分组列
having 筛选条件
order by 排序(asc 升序 desc 降序)
Limit 从几开始,截取几个
公式
(1-2)*4 剩1
(1-3)*4 剩2
(1-4)*4 剩3
(1-5)*4 剩4
内连接
表1 inner join 表2 on 等值条件
表1,表2 where 等值条件
外连接
表1 left join 表2 on 左等值连接 判断那右方为空进行查询
表1 right join 表2 on 右等值连接 判断 左方为空进行查询