Mysql入门,一些知识点的总结(未完)

MySQL入门
一、
1、安装的问题、尽量安装低版本的MySQL数据库,不会影响学习。
2、MySQL是否安装成功如何去检测
(1)通过命令行进入到系统服务器 win+R services.msc
(2)然后去检查MySQL是否开启
3、连接数据库
(1)MySQL自带的命令窗口去连接MySQL数据库
(2)客户端工具去连接数据库 SQLyog/Navicat/phpStudy
4、mysql数据库是一种关系型数据库,最大优点不仅能够存储数据还可以关联数据与数据之间的联系


问题:如果利用磁盘去存储两个文件,如何去关联这两个文件之间的联系;


5、主流的关系型数据库分类
(1)SqlServer
(2)oracle
(3)MySQL
6、卸载MySQL
(1)通过系统“程序与功能”
(2)清理他的注册表
7、设计数据库(设计数据之间的关系)
(1)什么书数据库的设计:设计出具有关系的数据,然后通过数据库的表来存储它
(2)怎么去设计数据库,先了解E-R图
8、数据关系
(1)一对一
(2)一对多、多对一
(3)多对多
9、设计数据库的步骤
(1)软件项目开发的需求分析
(2)学会判断有哪些数据对象,他们之间的关系是什么
(3)创建E-R模型
(4)将E-R模型转换成物理模型
(5)物理模型转换数据库
10、数据库工具
(1)PowerDesigner工具
(2)就可以将E-R模型在工具中进行描述
(3)此工具可以生成数据库脚本(SQL语句)
10.1 如何使用powerdesigner
(1)创建模型(物理模型,不用去创建概念模型)
(2)设计表的同时要学会建立关系
(3)完成数据库脚本的生成
(4)表之间关系:子表往父表拉,箭头指向父表
11、注意事项
(1)使用powerdesigner工具建表的时候一定加入一个主键(某一列存储的值是唯一且不能为空)
(2)如果没有给创建的表添加主键,则powerdesigner生成的脚本会报错
(3)如果你要给表建立关系也一定要创建一个主键


12、数据库建表
针对MySQL,要建表必须先建库
如果是oracle,是创建用户,给用户分配存储空间(表空间),分配权限。这样子才能创建数据库表

13、介绍SQL
(1)什么是SQL:结构化查询语言
(2)SQL的作用:制定了一套关于数据库操作的命令
(3)SQL语句分类:
DML:数据库的操作语言(insert,update,delete)
DDL:数据库定义语言(create table,create database,alter table,create user)
DCL:数据库控制语言(commit, rollback,grant,revoke)
(4)SQL语句的关键字:create、table、database、insert、update、select、alter.
14、数据类型
(1)数据类型:主要是定义列存放数据的类型。
(2)数据类型你必须要了解的常用类型如下
整形:存储整数
浮点型:包含小数点的数据
时间类型:时间戳,存储的时间可以精确到毫秒
字符类型:字母,特殊符号,汉字。
(3)整形:int,integer,numeric
浮点型:double,float,mumeric(长度,精度)
时间类型:date,datetime,timestamp
字符类型:varchar(长度),char(长度)
15、约束
(1)约束的概念
规范表中数据的完整性,合法性,一致性。
(2)约束分类
主键约束:primary key
外键约束:外键是关联两张表数据之间的关系,同时用于多表查询的时候数据的完整性。
外键在子表,外键是父表的主键,如果两张表有关系,则外键是添加到子表里面
如果设置了外键,则在给子表添加数据的时候,外键中值要么在父表中存在,要么为null。
检查约束:使用check关键字来完成对某一列中数据校验,比如:判断年龄只能在18~30岁。(mysql里无用)
默认值约束: default '默认值';
非空约束: not null
唯一约束:unique
(3)约束的创建方式
在字段后面加上约束
16、修改表的结构
(1)修改表的语法
alter table 表名 操作
(2)修改表的操作可以做哪些事情
添加列
删除列
修改列数据类型
给列添加约束:约束本身从字面意思就是约束表中数据,让数据准确,完整。其实约束真正定义在列上面。
删除约束
(3)添加列的操作
语法:alter table 表名 add 列名 数据类型 约束
(4)删除列的操作
语法:alter table 表名 drop [column] 列名
(5)修改列的操作 修改泛指修改列的数据类型。
语法:alter table 表名 modify  column 列名 数据类型 
(6)添加约束
语法:alter table 表名 add constraint 约束名称 约束类型
添加主键,alter table customer add constraint pk_customer_id primary key (customer_id);
添加外键; alter table project add customer_id int;
alter table project add constraint fk_customer_id foreign key (customer_id) references customer(customer_id);
(7)删除约束
语法:alter table 表名 drop 约束类型 [约束名称];
两个表有关联,如果有外键,父表主键不能够直接删除,应先删去子表中的外键,再删除父表中的主键。

17、SQL查询
(1)SQL查询语法
select *|列名1,列名2...from 表名1,表名2...
where 条件限制语句
group by 分组语句
having 统计函数的比较语句
order by 排序语句
18、基础查询
(1)没有任何条件限制的查询
select * from 表名;
select 列名1,列名2 from 表名;
(2)跟条件查询。
语法:select *|列名1,列名2 from 表名 where 条件表达式
条件表达式:加入运算符(=,<>,<=,and,or,not)
表达式的组成:列名 运算符 列名|具体数值
select * from people where people_name = '张三';
select * from people where people_name = '张三' and people_id = 1;
(3)排序查询
语法:select *|列名1,列名2 from 表名 order by 列名 desc|asc
注意:desc关键字是降序,asc关键字是升序。
select * from people order by people_age desc,people_id asc;
排序有优先级,对第一个条件优先。
(4)模糊查询
使用关键字like来完成模糊查询
语法:select *|列名 from 表名 where 列名 like 表达式
like的表达式主要有两个字符的用法: %和_
%代表0-n个
_代表有且只有一个。
--姓张
select * from people where people_name like '张%';
--姓张 且姓名只有两个字
select * from people where people_name like '张_';
19、多表查询
(1)分组查询:将列中相同数据进行分组
关键字 group by 
语法:select * from 表名 where 条件 group by 列名
(2)统计函数:sum(求和),count(求表中有多少条记录),max,min,avg(求平均) 
--sum 应用
select sum(people_age) from people;
--count 应用 
select count(people_id) from people;
--min和max的应用
select min(people_age),max(people_age) from people;
--avg 应用
select avg(people_age) from people;
查询每个年龄所对应的人数
将相同年龄的人进行分组再求统计。
select people_age,count(people_id) from people group by people_age;

统计相同姓氏的人数有多少个。
--查询姓氏。
select substring(people_name,1,1) from people people;
--同名分组。
select substring(people_name,1,1),count(people_id) from people group by substring(people_name,1,1);

插入数据SQL操作 
insert into 表名 (列名1,列名2) valuse(数据1,数据2)
insert into 表名 valuse(数据1,数据2)
更新数据表SQL操作
update 表名 set 列名1 = 新的值...[条件限制];

constraint 约束名称 foregin key (pid) references 父表名称(pid);

20、如何将一张表的数据复制到另一张表里面
(1)首先创建一张临时表,这里的临时表是实际中存在
然后通过insert语句来给临时表里面加数据。
create table factory_temp like factory;
insert into factory_temp select * from factory;
select * from factory_temp;
insert语句后面可以跟select语句
通过查询语句去校验SQL是否执行成功。
(2)既要赋值表结构,也要复制数据到新表,  目的:通过一个SQL语句完成两个操作
create table factory_temp select * from factory;
(3)还有一种临时表的语法
mysql temporary table 它是一个逻辑上的临时表(此表不是真正永远保持到数据库里面),当操作数据库会话连接关闭,此临时表会消失
create temporary table a{}

21、约束
(1)默认约束
使用default关键字来给某一列设置一个默认值,如果添加数据的时候没有给设有默认约束列添加具体数据,则使用默认值
(2)唯一约束
(3)非空约束
22、修改表结构的操作


23、SQL查询是我们开发过程中最常用检索数据的技术
语法:select *|列名1,列名2 ... from 表名1,表名2...
  where 条件限制语句
  group by 分组语句
  having 统计函数比较语句
  order by 排序语句
24、没有条件限制的查询
(1)查询工厂表里的所有数据
select * from factory
(2)指定列的查询
select factory_id,factory_name from factory;
25、根条件方式的查询
语法:select *|列名1,列名2...from 表名1,表名2 where 条件表达式
条件表达式:在我们SQL语句里面加入运算符应用(>,<,=,>=,<=,and,or,not)
条件表达式组成结构:列名 运算符 其他列|具体值
比如: select * from factory where factory_id = 100;查询工厂编号为100的工厂信息
比如:  select * from factory where factory_id > 100;查询工厂编号大于100的工厂信息。
select * from factory where factory_id = 100 or factory_name = "上海工厂";
26、排序查询
(1)desc 关键字 代表降序,asc 代表升序 需与order by配合使用
查询工厂编号从大到小排序
select * from factory order by factory_id desc.
27、模糊查询
(1)使用like关键字完成模糊查询
like关键字主要由两个字符的用法: %和_;
%代表0-n个,_代表有且只有一个
查询工厂主任名称姓夏的数据
select * from factory where factory_leader_name like '夏%';
28、简单多表查询
(1)在from关键字的后面会出现两个表的查询,我们就叫查询是一种多表查询
(2)多表查询的应用一般都是用在关联数据的查询
(3)在多表查询中我们一般会给查询表取别名,取别名的好处是能够区分两个表中含有相同的列名
查询工厂编号为100的工厂下面的车间有哪些信息
select * from factory a,workshop b 
where a.factory_id=100 --满足工厂编号100的一个条件
and a.factory_id = b.factory_id; --满足工厂下面的车间有哪些,(主外键之间的关联)

29、查询指定行数之间
1、查询第一行记录: 
select * from table limit 1 
2、查询第n行到第m行记录 
select * from table1 limit n-1,m-n; 
SELECT * FROM table LIMIT 5,10;返回第6行到第15行的记录  第一个数是从0开始  后面的参数是显示的记录数 
select * from employee limit 3,1; // 返回第4行 
3、查询前n行记录 
select * from table1 limit 0,n; 
或 
select * from table1 limit n; 
4、查询后n行记录 
select * from table1 order by id desc dlimit n;//倒序排序,取前n行 id为自增形式 
5、查询一条记录($id)的下一条记录 
select * from table1 where id>$id order by id asc dlimit 1 
6、查询一条记录($id)的上一条记录 
select * from table1 where id<$id order by id desc dlimit 1 

30、
(1)求字母a的ASCII码值
select ASCII('a');
(2)计算数字10的二进制数
select BIN(10);
(3)计算数字10的八进制数
select Oct(10);
(4)计算数字10的十六进制
select Hex(10);
(5)求字符串长度
select * from worker
select length(worker_name) from worker;
length返回字符的字节数

char_length 返回字符的长度,这个经常用来处理中文等字符
select char_length(worker_name) from worker;
(6)返回子串在元字符串中第一次出现的位置
select instr('helloworld','hello');
(7)返回子串
select substring('helloworld',2) --从位置2开始返回到整个字符串的末尾
select substring('helloworld',2,3) --从位置2开始返回3个长度字符串
(8)返回当前系统时间
select now()
select sysdate()
select current_date() 返回年月日。

--返回当前系统时间是本周星期几
--这里面需要用到函数嵌套使用方式。
--扩展能否将数字转换成具体的“星期几”
weekday monday = 0;
select weekday(sysdate());
select case when weekday(sysdate()=4) then '星期一' end 时间(这是一个别名);
(10)求两个日期的时间差
select datediff(sysdate(),'2018-01-01')
(11)求平均值
selet avg(worker_age) from worker
(12)求总记录数count()
select count(*) from worker --可以将null的值一起计算出来
select count(worker_id) from worker --跟具体的列名则null不会一起计算
(13)求和 sum()
select sum(worker_age) from age
(14)求最大最小 max()、min()
select max(age) from worker;
select min(age) from worker;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值