MySQ 的学习应用

2017年7月8日08:47:23
1.数据库 主流
MySQL 主流
Oracle sun
DB2
SQL Server
SQLLite

2.NOSQL
MongoDB

3.Access 文件型数据库
关系型数据库
非关系型数据库
4.定位
你自己项目中可以规划设计自己的数据库,数据库,数据列,表关系
DML 增删改
DQL 检索
设计规范性的问题:DBA 一定是最专业的。
5.xml数据
IO数据
序列化存储数据
数据库

6.一些概念
表中的一行 记录/元组/行
表中的一列 字段
7.DBS 和DBMS
解析:Database System 数据库系统=数据库管理系统+硬件+操作人员
Database Management System 数据库管理系统
数据库系统范围>数据库管理系统

8.端口号,区分应用,每个应用端口号不同。8080
MySQL: 3306
Oracle 1521
SQL Server 1433

192.168.8.43

9.SQL是一种查询(查询,修改,添加,删除)语言
DML:Data Manipulation Language 数据操作语言 增 删 改
DDL:Data Definition Language 数据定义语言 建库,建表,建约束
DQL:Data Query Language 数据查询语言 select
DCL:Data Control Language 数据控制语言 授权/收回权限 grant/revoke

10。关于逻辑运算符技术对比
Java MySQL
&& and
|| or
! not
17.数据类型
int 类型 4个字节 1个字节=8bit 32个二进制位
double decimal (可以设置精确度)
varchar(65535)
Text大文本,一般不要启用,一旦启动,,他的模糊查询基本就是废的
DateTime 日期+时间



int最大范围 20多亿
UUID
GUID
在MySQL中能使用guid

PK:Primary Key 主键

补码运算
18.如何备份数据库
SQLYog -----工具 ------>将数据库作为SQL文件转储 数据迁移


19.外键
#创建数据表
CREATE TABLE Grade
(
gid INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
gname VARCHAR(32) NOT NULL
)
#创建一个学生表
CREATE TABLE Student
(
studentNo INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
loginPwd VARCHAR(20) NOT NULL,
studentName VARCHAR(32) NOT NULL,
sex CHAR(2) DEFAULT '男' NOT NULL,
gradeID INT NOT NULL,
phone VARCHAR(32) NOT NULL,
address VARCHAR(255) DEFAULT '地址不详',
bornDate DATETIME,
email VARCHAR(32),
identityCard VARCHAR(18) UNIQUE KEY
)
#用默认code给表中的某列设置默认值
ALTER TABLE grade
ALTER COLUMN gtype SET DEFAULT '学士后'
#唯一约束 (Unique )
ALTER TABLE grade
ADD CONSTRAINT Un_garea UNIQUE KEY(garea)
#设置外键
ALTER TABLE student
ADD CONSTRAINT FK_student_gradeid FOREIGN KEY(gradeid)
REFERENCES grade(gid)
#设置主键
ALTER TABLE student
ADD CONSTRAINT PK_student_studentNo PRIMARY KEY(studentno)
#检查约束 check
ALTER TABLE ttest
ADD CONSTRAINT CK_ttest_tprice CHECK(tprice>=100)


selectgrade * FROM grade

#这是注释
#1.建立一个名称为T14的数据库 Tab键自动补全 ,关键字
CREATE DATABASE T14;
#2.切换到T14
USE T14;
#3.删除数据库
DROP DATABASE T14;

---2017年7月11日13:31:24
1.数据库
创建MySQL数据库
Create database 数据库名称
2.创建数据表
Create table 数据库名称
3.数据库:一个存储数据的仓库。
4.几种数据类型

数字 int
可变字符串varchar
保存小数 double/decimal
年月日 时分秒 datetime
5.三种运算符
算术 +/-
比较运算符
逻辑运算符 and or
6.主键:PK(PRIMARY key):一个表只能有一个主键,作用:区别表中的每条记录。
外键:必须在外键表中设置。
A B
最简单的方法区分谁是主键表:他们之间的关系是一对多的话,主表是一的一方法

外键:如果在表A和表B中有公共列gradeid ,在表A中gradeid是主键,在表B中gradeid不是主键,我们将
表B中的Gradeid列称为表A的外键。
7.用代码创建约束
五大约束
1.非空约束(是一种特殊的检查约束)
2.主键约束
alter table Student
add constraint PK_studentno primary key (studentno)
3.外键约束
alter table student
add constraint FK_grade_student_gradeid foreign key (gradeid) references grade(gradeid)
4.唯一约束
alter table student
add constraint UK_studentname unique(studentname)
5.默认值约束
6.检查约束
alter table student
add constraint CK_studentage check(age>20)
--------------------------------------------------------
1.use 数据库名称
切换到指定的数据库名称
2.desc table名称
枚举表中的列的信息
3.``区别Mysql系统关键字
奇葩:select * from `user`
4.导出sql脚本
5.Cannot delete or update a parent row: a foreign key constraint fails
易买网
Categoy
1

Product
6.建立科目和成绩表
CREATE TABLE SUBJECT ##科目表
(
subjetid INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
subjectname VARCHAR(32),
gradeid INT,
classhour INT
)


CREATE TABLE Result ##成绩表
(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
studentno INT NOT NULL,
subjectid INT NOT NULL,
examdate DATETIME,
studentresult INT
)
---如果你在给同学 创建外键,外键创建失败?
解析:1.分清外键表
alter table 主键表(错误)
2.两表中有非法记录,最好将所有的记录清除,再来创建
3.两表的公共列的数据类型 类型的长度 类型的一些特性设置(eg.有无符号位) 最好保证外键列不允许为空
###在subject中创建外键
ALTER TABLE SUBJECT
ADD CONSTRAINT FK_Grade_Subject_Gradeid FOREIGN KEY(gradeid)
REFERENCES grade(gid)

##在Result中创建subject的外键
ALTER TABLE result
ADD CONSTRAINT FK_Subject_Result_subjectid FOREIGN KEY(subjectid)
REFERENCES `subject`(subjectid)

##在Result中创建student的外键
ALTER TABLE result
ADD CONSTRAINT FK_Student_Result_studentno FOREIGN KEY (studentno)
REFERENCES student(studentno)

7、##修改表
#添加字段
ALTER TABLE grade ADD idDel INT NOT NULL
#删除
ALTER TABLE grade DROP idDel
#修改字段
ALTER TABLE grade CHANGE remark2 remark VARCHAR(32) 在修改的时候,必须添加数据类型
------------------chp02
1.CRUD (Crate,Read/REtrive,update,delete)
增删改查
2.讲解MySQL的两大引擎
MyISAM
InnoDB 推荐使用,支持事务 数据的一致性 。
在命令行中通过语言检测、查看MysQL数据文件存放位置

select @@datadir as path from dual;
3.要删除一个约束,如果发现和其他表有引用关系
删除步骤
步骤1:
先执行如下命令
alter table 表名
drop foreign key 外键的名称

步骤2:点击鼠标,删除

4.删除记录

delete 和truncate只删除数据,不删除表结构
drop table 删除表结构
delete 删除表
1.delete 可以跟where 条件 ,删除部分数据
2.删除表中所有记录后,编号是断裂的,不是从1开始的
3.性能:性能低,记录日志,删除一条(底层做一道insert)
4.后台有硬编码的外键关系,如果想要删除主表Student,如果子表没有记录,可以删除
Trucate 截断表
truncate table student
1.truncate不能有where条件,删除整张表
2.删除表中所有记录后,编号从1开始
3.性能高:不写日志文件,删除。
4.后台有硬编码的外键关系,如果想要删除主表Student,如果子表没有记录,也不能删除

作业:
1、四章表的建表代码
/2、建立约束代码
3.建立表关系的代码 ,外键
4. 每张表至少3条测试数据

晚上:
1.约束的强化
2.外键的设置
3.insert insertN条记录
4.update
5.delete 和truncate
6.修改表
7.创建备份表 博客
下次重点讲解查询最难的
---------------------------------------------
1.delete和truncate 区别?
1.1 delete慢 ,Truncate快

1.20delete记录日志,所以慢 truncate不记录日志

1.31 删除所有记录后,主键值delete 不是从1编号,Truncate会从1开始编号

1.43 truncate不能删除有外键的主表

1.5 delete 可以 加where ,删除部分记录

2.两种引擎
InnoDB:支持事务
MyISAM:

3.添加 insert into grade(字段名称) values(对应)
修改 update 表名 set 列名=‘新值’ where 主键=xxxx
删除 delete from 表名 where 主键=yyy

4. 5种约束
检查约束
主键约束
外键约束
非空约束
默认值约束
唯一约束
5. 强化了外键设置一个规范

2017年7月13日10:27:13
1.两种一次性向表中进N条记录的方案
方案一:
要求:目标表不存在
create table 新表(select * from student)

方案二:
要求:目标表必须存在
insert into 新表的名称 select * from 原始表
2.简单查询 关于*会引起全表扫描问题

3.查找姓名是“微冷的雨”的信息
SELECT * FROM student
WHERE studentName='微冷的雨'

4.注意事项
--01.SQL关键字不区分大小写

--02.字符串和日期类型都需要[[[[[[单引号]]]]

--03.起表名的时候,千万不要起得太好,例如不要使用User作为表名。
-- 如果表名和关键字重复了,我们可以通过``取消转义。
select * from `User`

--04.千万注意新建查询窗口中的中文空格。
select * from Message
5.别名
别名方案 AS
6.常量列
SELECT *,'汉族'AS 民族 FROM student
7.关于null讲解
必须懂

8.聚合函数
count:统计一张表中总共有多少条数据
select SUM(StudentResult) as 总分 from Result
select AVG(studentresult) as 平均分 from Result
select MAX(studentresult) as 最高分 from Result
select min(studentresult) as 最高分 from Result
9。常用函数
9.1字符串函数
9.2日期时间函数
9.3数学函数
10.Order
11.排序 limit



原文地址:https://www.cnblogs.com/chenhceng/p/7170726.html