MySql学习完后总结的知识点
Posted niweiniwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql学习完后总结的知识点相关的知识,希望对你有一定的参考价值。
gc是java中垃圾回收机制
DBA(数据库管理员) 统一密码 aptech
关系型 (sql) mysql oracle sql server sqlite(手机 轻量级数据库) DB2 ----结构化
非关系(nosql) redis(存的是键值对) MongoDB(微信公众号)
mysqld 安装和卸载 mysqld -install提示服务安装成功 运行services.msc可以查看本机服务
mysql 登录和注销
mysql 修改密码
---- DOS执行mysql
1 打开mysql net start mysql 关闭 net stop mysql
2 登录mysql mysql -h服务器主机地址 -u 用户名 -p密码 之间没有空格
1 修改密码 set password for‘root‘@‘localhost‘=password(‘aptech‘)
2 修改密码 这个要在打开mysql 不能登录进去再输入下面的修改
mysqladmin -u root -p password
3 查看mysql版本信息和用户名 select version(),user() 注意全部大写
4 创建数据库 create database 数据库名
5 查看所有数据库 show databases
show create database 数据库名字
6 选择使用的数据库 use 数据库名字
7 删除数据库 drop database 数据库名字
8 创建表 create table 表名字(
字段1 数据类型 [字段属性| 约束][索引][注释],
。。。。。最后一行不加逗号 字段也就是列
)
查看表 show tables
#显示表结构
DESC book;
SHOW CREATE TABLE book;
#删除表
USE Library;
DROP TABLE book;
DROP TABLE Library.book;
9 主键 primary key 多主键
主键和自动增长是一起使用的 主键是唯一不重复的 不能出现空值 一张表只能有一个主键
唯一约束 可以为空但是只能一个空值 不能重复
10 注释 comment加上注解名字 可以单引号包括起来
10 字符集 小括号后面加上 charset=字符集名字
11 无字符/有字符 unsigned 也就是不允许为负数
----SQL(结构化查询语言)
1 DML (数据操作语言)insert
2 DDL (数据定义) create 列如 creat table create view drop table
3 DQL (数据查询) select
4 DCL (数据控制) grant revoke 全部大写
DML(inster update delete) DQL(select) 是重要的
---sql 的逻辑运算符
and 俩边都是true结果才是true
or 俩边都为false才返回false
not 对布尔表达式值取反 优先级最高
---查看某个数据库的表
use 数据库名字
describe 表名
---删除表
use 数据库名字
drop table 表名字
---修改表名字
alter table<旧表名>rename[to]<新表名>
--添加字段
alter table 表名 add 字段名 等等
ALTER TABLE test1 ADD `passwored` VARCHAR(10) NOT NULL
--修改字段
alter table 表名 change 原字段 新字段 数据类型[属性]
ALTER TABLE test1 CHANGE id xinid INT NOT NULL
--删除字段
alter table 表名 drop 字段
--添加主键
aleter table 表名 add constraint 主键名 primary key 表名(主键字段)
将表student的id 设置为主键
alter table student add constraint pk_student primary key student(id)
--添加外键
alter table 表名 add constraint 外键名 foreign key (外键字段)references 关联表名(主键列)
列如 设置student 的字段id 和teacher 的字段 name建立主外键关联
alter table student add constraint fk_student_teacher foreign key(id)references tercher(name)
auto_increment=100 设置初始值为100
[email protected]@ auto_increment_increment=5 每次增长的是5
获得当前系统时间的默认值 用now()
lenddate` DATETIME NOT NULL DEFAULT NOW() COMMENT ‘借阅日期‘,
----------------------------------表达当前时间 default current_timestamp
--------------------------------以上都是DDL的内容
----------------代码练习
#创建数据库
CREATE DATABASE ceshi;
#查看数据库
SHOW CREATE DATABASE ceshi;
#删除数据库
DROP DATABASE ceshi;
#创建表
USE ceshi;
CREATE TABLE `bird`(
`id` INT(4) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT ‘小鸟的id‘,
`name` VARCHAR(6) UNIQUE KEY COMMENT ‘小鸟的名字‘,
`date` DATETIME DEFAULT NOW() COMMENT ‘小鸟的生日‘
)CHARSET=utf8
#查看表结构
DESC bird;
SHOW CREATE TABLE bird;
#删除表结构
DROP TABLE bird1;
DROP TABLE ceshi.bird;
#修改表名字
ALTER TABLE bird1 RENAME bird;
#添加字段
ALTER TABLE bird ADD `sex` VARCHAR(1) DEFAULT ‘男‘;
#修改字段
ALTER TABLE bird CHANGE `sex``xinsex`INT(1) DEFAULT ‘1‘;
#删除字段
ALTER TABLE bird DROP xinsex;
#添加主键约束
CREATE TABLE `xiniao`(
`id` INT(4) NOT NULL COMMENT ‘小鸟的id‘,
`name` VARCHAR(6) UNIQUE KEY COMMENT ‘小鸟的名字‘,
`date` DATETIME DEFAULT NOW() COMMENT ‘小鸟的生日‘
)CHARSET=utf8
ALTER TABLE xiniao ADD CONSTRAINT PK_xiniao PRIMARY KEY xiniao (id);
#添加外键约束
ALTER TABLE nan ADD CONSTRAINT fk_ren_nan FOREIGN KEY (id)
REFERENCES ren (id)
--------------给子类创建外键保持关联 父类的字段必须是主键 子类的外键在子类中可以是主键也可以不是主键
----删除的话父类不能先被删除 一致而且数据类型必须
CREATE TABLE nian(
gradeid INT(10) PRIMARY KEY NOT NULL,
`name` VARCHAR(6) NOT NULL
)
CREATE TABLE student(
stuno INT(6) NOT NULL,
gradeid INT(5) PRIMARY KEY NOT NULL,
CONSTRAINT fk_nian_student FOREIGN KEY(stuno) REFERENCES nian(gradeid)
)
删除外键
alter table student drop foreign key 写上外键的名字
然后在删除他的索引
alter table student drop foreign key 写上外键的名字
--------------------------《使用DMA进行数据操作 添加删除修改 表 中的数据》----------------------
insert 添加
update 修改
delete 删除 ----------------操作的都是数据
# 1:字段或值之间用英文逗号隔开
# 2:字段1, 字段2… 该部分可省略,
# 但添加的值务必与表结构数据列顺序相对应,且数量一致
# 3:提供的值要注意约束
---------------添加数据格式
insert into[(字段1,字段2.。。)] values(‘值1‘,‘值2‘,值3.。。)
字段可以省略
insert into表名 (字段)values(‘值1‘),(‘值2’)可以为一个字段列插入多个数据
#指定字段添加
INSERT INTO student(loginpwd,studentname,
gradeid,phone) VALUES(‘123‘,‘李四‘,20,‘13212345678‘);
#省略字段添加
INSERT INTO result VALUES(20180001,1,‘2018-1-31‘,60) ;
#违反约束的数据插入会出现异常
INSERT INTO result VALUES(20180011,1,‘2018-1-31‘,60) ;
#插入多行记录
INSERT INTO result VALUES(20180001,1,‘2017-2-28‘,60),
(20180001,1,‘2017-3-31‘,70),
(20180003,1,‘2017-4-22‘,80),
(20180004,1,‘2017-5-31‘,90)
---------修改表里的数据格式
update 表名 set 字段column_name=value[,column_name=value3][where condition]
-----删除表中的数据 delete-----------
格式: delete [from] 表名 在加上 where 条件
#删除表中所有的数据 再次使用insert into的话自增是在原来基础上自增的
DELETE FROM bank ==truncate table +表名
delete删除的是一整行 所有delete后不加字段 加的是表名
#删除指定的数据
DELETE FROM student WHERE
studentno=20180005 OR
studentno=20180006
OR studentno=20180007
DELETE FROM result;
DELETE FROM student WHERE
studentno IN(20180001,20180003,20180004)
-----------------------------------like 和 % 和_的用法
#修改数据 login_pwd 带有1的
UPDATE xintercher SET login_pwd=666
WHERE login_pwd LIKE ‘1%‘
UPDATE xintercher SET login_pwd=555
WHERE login_pwd LIKE ‘%1%‘
UPDATE xintercher SET studentname=‘xxxx‘
WHERE login_pwd LIKE ‘2_‘
between A AND B 介于 A和B之间的数值
WHERE studentno IN(20180001,20180003,20180004)====where studentno=2018001 or studentno=20180003 or studentno=2018004
-----------------创建 备份一个表格
#创建一个新表
CREATE TABLE stuback(SELECT * FROM student)
-------------------------------《DQL查询语句 》------------------------
1 打开表-在刷新查看看的快捷键
select * from +表名
2 ‘‘是空 adress=‘‘ IS NULL 是(NULL)这个代表是空值 adress is null
3 select 字段 from 表名
where 加条件
order by 加字段 升序asc 降序 desc 默认不写的升序 asc
limit [位置偏移量 行数] 4,4 偏移量从0开始
5 AS作为别名 给数据列取一个新名字(只读不修改) 注意要有空格 还要逗号隔开 最后一个字段不加逗号 可以省略
#AS作为别名
#给数据列取一个新名字(只读不修改)
SELECT stuid AS 编号,stuname AS 姓名 FROM student
SELECT stuid 编号,stuname 姓名 FROM student
#给数据表取个别名
SELECT s.stuid,s.stuname FROM student AS s
#把经过计算的结果用一个新名字代替
SELECT CONCAT(‘s:‘,stuid) AS 学号 FROM student;
6去除重复的记录distinct
SELECT DISTINCT studentresult FROM result;
7#查询家庭住址为null的学生的学号 电话 姓名
SELECT stuid,stuname,phone FROM student
WHERE adress IS NULL;#--------------------------不能写成=null
8 聚合函数
avg()平均值 count()行数 max 最大值 min 最小值 sum 求和
查询科目编号为1 的学生的最高分 和最低分
SELECT MAX(studentresult)AS 最高分,
MIN(studentresult)AS 最低分,
AVG(studentresult)AS 平均分,
SUM(studentresult)AS 总和
FROM result WHERE subno=1001;
查询年级编号为1的学生个数
SELECT COUNT(*) AS 学生个数 FROM student WHERE nian_id;
9 字符串函数
concat(str,str)连接成一个字符串
insert(str 3 10 newstr)
#insert 插入替换字符串 3代表开始替换的位置 6是替换的长度
SELECT INSERT(‘我的家乡是河南开封市‘,3,6,‘哈哈‘);
#截取字符串 substring 3代表开始截取的位置 2是截取的个数
SELECT SUBSTRING(‘abcdefghijk‘,3,2);
lower(str) 都变成大写 upper(str)小写
10 日期函数
#获得当前日期
SELECT CURDATE();
#获得当前时间
SELECT CURTIME();
#获得当前日期和时间
SELECT NOW();
#俩个时间间隔天数
SELECT DATEDIFF(NOW(),‘1994-12-09‘)
year(date)获得date中的年份
date(date)获得date中的年月日
minute(date)获得date中的分钟
hour(datr)获得date中的小时
adddate(date,n)计算日期date加上n天的日期
11 数学函数
ceil(2.3)返回大于等于数值2.3的最小整数 得到3
floor(2.3)返回小于等于数值2.3的最大整数 得到2
rand()返回0-1之间的小数
---------------代码
#上机练习4
#1 查询所在学期id为2的所有男同学的姓名和地址(俩个注意逗号隔开)
SELECT stuname ,adress FROM student
WHERE nian_id=1;
#2查询无电子邮件的学生姓名和年级信息 (is null 代表的是空值)
SELECT stuname,nian_id FROM student
WHERE adress IS NULL;
#where adress=‘‘;
#3 查询所在学期id为2 的学生中所在1990年后出生的学生姓名(year把birthday包裹住只能单一的显示出他的年份其他不显示出来)
SELECT stuname FROM student
WHERE nian_id=2 AND YEAR(birthday)>=1990
#4 查询参加了日期为2013-2-15日的java科目考试的学生成绩信息
SELECT subid FROM sub_kemu
WHERE sunname=‘java‘
SELECT studentresult 成绩 FROM result
WHERE DATE(examdate)=‘2016-12-12‘ AND subno=1001;
#5查询参加了java科目考试的学员总成绩
SELECT SUM(studentresult) 总成绩 FROM result
WHERE subno=1001
#查询css的平均分
SELECT AVG(studentresult) 平均分 FROM result
WHERE subno=1001;
#上机练习5
#1 按照出生日期查询学期id为1的学生信息
SELECT stuname 姓名,stuid 编号 FROM student
WHERE nian_id=1
ORDER BY birthday DESC;#(降序)
#2 按日期先后 成绩由高到低查询编号为1的科目考试成绩信息
SELECT * FROM result
WHERE subno=1001
ORDER BY studentresult DESC,examdate ASC;#(最后再加分号)
#3 查询2013-3-22参加java考试的前五名
SELECT studentresult 前五名 FROM result
WHERE DATE(examdate)=‘2016-12-12‘ AND subno=1001
ORDER BY studentresult DESC
LIMIT 0,5;
#4 查询y2课时最多的科目名称
SELECT subid 科目 FROM sub_kemu
ORDER BY `subdate` DESC
LIMIT 1
#5 查询年纪最小的学生的姓名和所在班级
SELECT stuname 姓名,nian_id 所在班级,birthday FROM student
#order by DATEDIFF(now(),birthday)
ORDER BY birthday DESC
LIMIT 1
#6 查询2013--3-22参加考试的最低分出现在哪个科目中
SELECT subno ,studentresult FROM result
WHERE DATE(examdate)=‘2016-12-12‘
ORDER BY studentresult
LIMIT 0,1
#7 查询学号10000的学生参加所有的考试信息并按时间的先后顺序显示
SELECT * FROM result
WHERE stuno=3
ORDER BY examdate
#8 查询10000学生参加过所有的考试中最高分极时间 科目
SELECT studentresult 成绩,examdate 时间,subno 科目 FROM result
WHERE stuno=3
ORDER BY studentresult DESC
LIMIT 1
#上机练习6
#1 查询2016-2-17考试前五名的学生的学号和分数
SELECT stuid AS 学号,studentresult AS 分数 FROM student
INNER JOIN result
WHERE examdate=‘2016-12-12‘
ORDER BY studentresult DESC
LIMIT 0,5;
#将所有女学生按年龄由大到小排列 从第2条记录开始显示6名女学生的姓名 年龄 出生日期 手机号
SELECT stuname AS 名字, birthday AS 出生日期,phone AS 手机号,CEIL(DATEDIFF(NOW(),birthday)/365) AS 年龄 FROM student
WHERE sex=‘女‘
ORDER BY birthday DESC
LIMIT 1,6
#按出生年份分组统计学生人数 将各组中的人数达到俩人的年份和人数显示出来
#2016-12-12考试的所有学员最高分 最低分 平均分
SELECT MAX(studentresult),MIN(studentresult),AVG(studentresult) FROM result
WHERE DATE(examdate)=‘2016-12-12‘
-------------------------------DQL查询 的子查询 分页查询 分组 自连接 连接查询
#-------------------------分页显示
#要求 分页显示学生信息 每页显示5条
SELECT * FROM student
ORDER BY stuid DESC
#第一页
LIMIT 0,5
SELECT * FROM student
ORDER BY stuid DESC
#第二页
LIMIT 5,5
SELECT * FROM student
ORDER BY stuid DESC
#第三页
LIMIT 10,5
()()()()()-------》#偏移量的算法是 当前页数减去一在乘 当前显示的条数 列如 第三页 偏移量=3-1*5(条数)
------------------------------------子查询 连接查询
#-----------------group by分组查询
SELECT COUNT(1) FROM student #返回所有总行数 汇总所有记录 用数字代表字段
SELECT COUNT(adress) FROM student #返回具体的列名 统计的是不为空的记录
#统计每个班级的人数
SELECT COUNT(1) AS 总人数 , nian_id AS 班级 FROM student
GROUP BY nian_id
SELECT nian_id,COUNT(1) FROM student
GROUP BY nian_id
#统计每个班级男同学和女同学的人数 切 人数大于8人的班级
SELECT COUNT(1) 总人数,sex, nian_id FROM student
GROUP BY sex,nian_id
HAVING COUNT(1) >8
#上机练习4
#1查询每个年级的总学时数,并按照升序排列
SELECT gradeId 年级,SUM(classHour) 总学时 FROM `subject`
GROUP BY gradeId
ORDER BY SUM(classHour)
#2查询每个参加考试的学员的平均分
SELECT studentNo 学号, AVG(studentResult) 平均分 FROM result
GROUP BY studentNo
#3查询每门课程的平均分,按降序排列
SELECT subjectNo 课程编号,AVG(studentResult) 平均分 FROM result
GROUP BY subjectNo
ORDER BY AVG(studentResult) DESC
#4查询每个学生参加的所有考试的总分,并按照降序排列
SELECT studentNo 学号,SUM(studentResult) 总分 FROM result
GROUP BY studentNo
ORDER BY SUM(studentResult) DESC
#1 查询每个班级的总学时数 并按照升序排列
SELECT nian_id AS 班级, SUM(`subdate`) 成绩和 FROM sub_kemu
GROUP BY nian_id
ORDER BY SUM(`subdate`)
#2 查询每个参加考试的学员的平均分
SELECT stuno 学员id, AVG(studentresult) FROM result
GROUP BY stuno
#3 查询每门课程的平均分 并按降序排列
SELECT subno AS 每门课程, AVG(studentresult) FROM result
GROUP BY subno
ORDER BY AVG(studentresult)
#4 查询每个学生的参加所有考试的总分 并按照降序排列
SELECT SUM(studentresult) ,stuno FROM result
GROUP BY stuno
ORDER BY SUM(studentresult)
#连接 查询
#--------------------------------------内连接(等值)
#从sub和nian_id中找到课程名字 所属年级名称
#第一种写法 where
SELECT DISTINCT n.nian_id ,sunname,nian_name FROM nian_biao n ,sub_kemu s
WHERE n.nian_id=s.nian_id
#第二种写法 inner on
SELECT DISTINCT n.nian_id ,sunname,nian_name FROM nian_biao n
INNER JOIN sub_kemu s
ON n.nian_id=s.nian_id
#查询 学号 姓名 考试科目名称 成绩 (3表内联)
SELECT s.stuid AS 学号, stuname AS 姓名, sub.sunname AS 学科名称, r.studentresult AS 成绩
FROM student s
INNER JOIN sub_kemu sub
ON s.stuid=sub.subid
INNER JOIN result r
ON r.stuno=sub.subid
#------------------------左右外连接
#左边为基准 右边没有的用null填充
SELECT DISTINCT n.nian_id ,sunname,nian_name FROM nian_biao n
LEFT JOIN sub_kemu s
ON n.nian_id=s.nian_id
#上机练习8
#查询所有科目的考试成绩信息 (某些科目可能从没有被考试过)
SELECT s.sunname,r.studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid=r.subno
#查询从未考试的科目
SELECT s.sunname,r.studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid=r.subno
#where r.studentresult is null; 不能拿成绩 做条件 有的人缺考
WHERE r.examdate IS NULL;
SELECT sunname, studentresult FROM sub_kemu s
LEFT JOIN result r
ON s.subid= r.subno
WHERE r.examdate IS NULL;
#----------------------------自身连接
CREATE TABLE fuzi(
id INT(4) UNSIGNED PRIMARY KEY NOT NULL AUTO_INCREMENT,
idname VARCHAR(6) NOT NULL,
parentid INT(4) UNSIGNED
)CHARSET=utf8
INSERT INTO fuzi (id,idname) VALUES (1,‘软件开发‘),
(2,‘美术设计‘),
(3,‘java基础‘),
(4,‘oop基础‘),
(5,‘数据库技术‘),
(6,‘ps技术‘),
(7,‘色彩搭配技术‘)
#要求把父类子类信息分别显示出来
SELECT p.idname AS 父栏目,c.idname AS 子栏目 FROM fuzi p
INNER JOIN fuzi c
ON p.id=c.parentid
#-------------分页显示
#要求 分页显示学生信息 每页显示5条
SELECT * FROM student
ORDER BY stuid DESC
#第一页
LIMIT 0,5
SELECT * FROM student
ORDER BY stuid DESC
#第二页
LIMIT 5,5
SELECT * FROM student
ORDER BY stuid DESC
#第三页
LIMIT 10,5
#偏移量的算法是 当前页数减去一在乘 当前显示的条数 列如 第三页 偏移量=3-1*5(条数)
# 子查询 也叫嵌套查询 查询方式由里到外 子查询的结果一般是集合 建议使用in关键字
#查询比孙悟空小的学生信息
SELECT * FROM student
WHERE birthday>(
SELECT MAX(birthday) FROM student
WHERE stuname=‘孙悟空‘
)
#使用子查询 查询参加最近一次 java考试成绩的学生最高分和最低分
#查询Logic Java的科目编号
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
#查询获得Logic Java最近一次的考试日期
SELECT MAX(DATE(examdate)) FROM result
WHERE subjectno IN(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘)
#根据课程编号获取考试成绩的最高分和最低分
SELECT MAX(studentresult),MIN(studentresult) FROM result
WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
)
AND
DATE(examdate)=(
SELECT MAX(DATE(examdate)) FROM result
WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘)
)
---------------------------------------------------------------------
SELECT MAX(studentresult), MIN(studentresult) FROM result
WHERE subno IN(
SELECT subid FROM sub_kemu WHERE sunname=‘java‘
)
AND
DATE(examdate)=(
SELECT MAX(DATE(examdate)) FROM result
WHERE subno IN(
SELECT subid FROM sub_kemu WHERE sunname=‘java‘
)
)
#检查LogicJava课程最近一次考试。如果有成绩达到80分
#以上者,则显示分数排在前5名学员的学号和分数
SELECT studentno,studentresult FROM result
WHERE EXISTS(
SELECT * FROM result WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
) AND examdate=(
SELECT MAX(examdate) FROM result
WHERE subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘)
) AND studentresult>80
)
AND
subjectno=(
SELECT subjectno FROM SUBJECT WHERE subjectname=‘LogicJava‘
)
ORDER BY studentresult DESC
LIMIT 5
SELECT * FROM result WHERE EXISTS
(
SELECT * FROM result WHERE studentresult>80
)
--------------------------------------------------------------------------------------------------------------------
------HAVING子句是用来对分组后的数据进行筛选的 where不能对分组的进行筛选
执行顺序 WHERE---GROUP BY--HAVING
--DATEDIFF(date1,date2)返回1和2之间相隔的天数
--ADDDATE(date,n)计算date加上n天的日期
---数据类型 double(5,2)取值范围是-999.99~999.99
tinyint smallint mediumint int float double decimal
字符串类型
char 固定长度 varchar 可变长度
语法
where
group by
order by
limit 4 ,4
是从第五条数据开始显示的第一条数据的偏移量是0 8
--子查询作为where条件的一部分 当和比较运算符比较的时候子查询返回的值不能多于一个
--inner jion 。。。on
--子查询必须在一个小括号里面
--模糊查询 %代替一个或者多个字符 _ 代表一个字符查询
--查询没有参加最近一次java考试的学生的学生信息 参加了用 in 没有参加就用 not in
--高级子查询
exists和not exists 子查询是将主查询字段传递到后边的查询作为条件 返回值true或者false
内连接 外链接(左右连接)
=和<>
使用inner join on 或者 where进行表之间的连接
inner jion 连接俩个表(inner可以省略)
on 用来设置条件
事务 原子性 一致性 隔离性 持久性
set autocommit=0 关闭自动提交 =1 开启自动提交 begin或者start transaction 开始事务 commit 提交事务 rollback 回滚事务
--------------《数据库设计》
建模
visio流程图 UML 图 ---》 数据库模型图、
powerdesigner 数据库模型图---》流程图 UML图
rose
数据库设计流程
需求分析 分析客户业务和数据处理需求
概要设计 设计数据库的E-R模型图确认需求信息的正确性和完整
详细设计 应用三大范式审核数据库结构
代码编写 物理实现数据库编写实现应用
软件测试。。。。
软件部署。。。
E-R图是实体关系图 数据库模型图 俩大图
entity实体 relationship实体之间的关系
实体 矩形 属性 椭圆 关系 菱形
后缀 .cdm 是E-R图的后缀
后缀 .pdm是数据库模型图
映射基数 一对多
一对一 一对多 多对一 多对多
第一范式 确保每列的原子性 (满足是不可再分的最小单元) 则就是第一范式
第二范式 确保每个表只描述一件事情
第三范式 满足了第二范式然后确保每列和主键列直接相关 而不是间接相关
创建索引
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`title` char(255) CHARACTER NOT NULL ,
`content` text CHARACTER NULL ,
`time` int(10) NULL DEFAULT NULL ,
PRIMARY KEY (`id`),
INDEX index_name (title(length))-------------------------------
)
修改表结构的方式添加索引
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
删除索引
DROP INDEX index_name ON tabl
以上是关于MySql学习完后总结的知识点的主要内容,如果未能解决你的问题,请参考以下文章