MYSQL高效基础学习系列1
MYSQL高效基础学习系列1
- 目录
- 数据库基本概念
- 操作库,表和记录
- 数据类型
- 为字段指定的约束条件
目录
数据库基本概念
1.数据库服务器:运行数据库管理软件的计算机
2.数据库管理软件:mysql,oracle,db2,slqserver
3.库:文件夹
4.表:文件
5.记录:事物一系列典型的特征,如egon,male,18等
6.数据:描述事物特征的符号
关系型数据库需要有表结构
非关系型数据库是key-value存储的,没有表结构
操作库,表和记录
操作文件夹(库)
**增**create database db1 charset utf8; #命名规则:唯一性 不能使用关键字如create select 不能使用纯数字 最长128位**查**show creat database db1;show databases;**改**alter database db1 charset gbk;**删**drop database db1;
操作文件(表)
切换文件夹:use db1
查看当前所在文件夹:select databse();
1.存储引擎就是表的类型
2.查看MYsql支持的存储引擎用show engines;
3.指定表类型/存储引擎
create table t1(id int)engine=innodb;
create table t2(id int)engine=memory; 重启一下mysql 就没了
create table t3(id int)engine=blackhole;
create table t4(id int)engine=myisam;
**增**create table1(id int, name char); frm格式文件就是表结构 ibd格式就是表内的数据create table 表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名3 类型[(宽度) 约束条件],);
**查**show create table t1;show tables;desc t1;
**改**alter table t1 modify name char(6);alter table t1 change name NAME char(7);1修改表名alter table 表名 rename 新表名2.增加字段alter table 表名 add 字段名 数据类型 [完整性约束条件],add 字段名 数据类型 [完整性约束条件];alter table 表名 add 字段名 数据类型 [完整性约束条件] first;alter table 表名 add 字段名 数据类型 [完整性约束条件] after 字段名;3.删除字段alter table 表名 drop 字段名4.修改字段alter table 表名 modify 字段名 数据类型 [完整性约束条件];alter table 表名 change 旧字段名 新字段名 旧数据类型 [完整性约束条件];alter table 表名 change 旧字段名 新字段名 新数据类型 [完整性约束条件];
**删**drop table t1;
复制表create table t1 select 字段名 from mysql.user;只复制表结构create table t1 select 字段名 from mysql.user where 1>5;create table t1 like mysql.user;
操作文件内容(记录)
**增**insert t1(id,name) values(1,'owen1'),(2,'owen2'),(3,'owen3');insert t1 values(1,'owen1'),(2,'owen2'),(3,'owen3');insert t1(字段1,字段2) select (字段1,字段2) from t2
**查**select id,name from db1.t1;select * from db1.t1;
**改**update db1.t1 set name='SB';update db1.t1 set name='ALEX' where id=2;
**删**delete from t1; #最好用 truncate t1;delete from t1 where id=2;
语句按功能分为:
1.DDL语句 数据库定义语言:数据库、表、视图、索引、存储过程、 例如create drop alter
2.DML语句 数据库操纵语言:插入数据insert、删除数据delete、更新数据update、查询数据select
3.DCL语句 数据库控制语言:例如控制用户的访问权限grant、remoke
数据类型
整数类型
日期类型
DATE TIME DATATIME TIMESTAMP YEAR五种日期类型
检验代码:
mysql> create table student(-> id int,-> name char(6),-> born_year year,-> birth_date date,-> class_time time,-> reg_time datetime-> );
mysql> insert into student values-> (1,'egon',now(),now(),now(),now());
\c终止运行
mysql> insert into t1 values('dd);
'> \c
'> '\c 缺少的引号要补齐方可终止
字符类型
char :定长的字符 存取速度快 但浪费空间(常用)
varchar:变长的字符 节省空间 但存取速度慢
#宽度指的是字符的个数
create table t13(name char(5)); #定长:不够5个字符则补全
create table t14(name varchar(5)); #变长:传几个就存几个insert into t13 values('李杰 '); #‘李杰 ’
insert into t14 values('李杰 '); #‘李杰 ’select name from t13;
select char_length(name) from t13;#2把末尾的空格全部去掉
select char_length(name) from t14;#3select name from t13 where name='李杰 ';#不管末尾的空格 所以可以查到
select name from t13 where name like '李杰 '; #考虑空格name char(5)
owen |alex |wxx |name varchar(5)
1bytes+egon|1bytes+owen
4+egon|4+owen
存储文件尽量精简! 定长的数据往前放
枚举类型与集合类型
字段的值只能在给定范围中选择,如单选框,多选框
enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女famale
set 多选 在给定范围内可以选一个或多个以上的值 如爱好
为字段指定的约束条件
约束条件not null与default
create table consumer(
id int,
name char(16),
sex enum('male','famale'),
hobbies set('play','music','read','run')
);
insert into consumer values
(1,'owen','male','vip2','music,run');
#不在选项范围中的传入 要么报错要么传入为空
约束条件unique key
mysql> create table ii(
-> id int unique,
-> name char(10) unique
-> );
mysql> insert into ii values
-> (1,‘IT’),
-> (2,‘IT’);
ERROR 1062 (23000): Duplicate entry ‘IT’ for key ‘name’
create table t15(
id int(11) unsigned zerofill
);
desc t15;
NULL:是否允许传入空值
default:默认值设为什么
create table t16(id int,name char(6),sex enum('male','famale') not null default 'male'
);
insert into t16(id,name) values(1,'owen');#key:唯一的主键UNI
unique key
create table department(id int,name char(10)
);
insert into department values
(1,'IT'),
(2,'IT');
#方式一:
create table ii(id int unique,name char(10) unique
);
insert into ii values
(1,'IT'),
(2,'IT');
#方式二:
```javascript
create table ii(id int,name char(10),unique(id),unique(name)
);
insert into ii values
(1,'IT'),
(2,'IT');
#联合唯一
create table services(id int ,ip char(15),port int,unique(id),#单列唯一UNIunique(ip,port) #联合唯一MUL
);
insert into services values
(1,'192.168.11.10',80),
(2,'192.168.11.10',81),
(3,'192.168.11.10',80);#联合唯一不符合 出错
primary key主键
约束:not null unique 不为空且唯一
存储引擎(innodb):对于innodb存储引擎来说,一张表内必须有一个主键
#单列主键
create table t27(id int primary key, #一般id字段设置为主键name char(16)
);
insert into t27 values
(1,'owen'),
(2,'dd');
insert into t27 values
(2,'sdkf');#主键重复 将出错
insert into t27 values
('sdkf');#id为0
#复合主键create table t27(ip char(15) , name char(16),primary key(ip,port)
);
insert into t27 values
('dddd','sdds'),
('dddd','sdds');#将出错auto_increment自动增长约束
create table t20(id int primary key auto_increment,name char(15)
);
insert into t20(name) values
('owne'),
('dsf'),
('dfds');
insert into t20(id,name) values
(7,'ddfd');#可以指定id字段
insert into t20(name) values
('owne'),
('dsf'),
('dfds'); #从末尾的id开始增长
#了解
show variables like ‘auto_inc%’;#%代表任意个数的任意字符
auto_increment_increment #步长 默认为1
auto_increment_offset #起始偏移量 默认1
#设置步长
set session auto_increment_increment=5;#会话步长
set global auto_increment_increment=5;#全局步长
#设置起始偏移量
set global auto_increment_increment=6;
强调:起始偏移量<=步长
清空表 :
drop table t20 #也删不干净
delete from t20; #删不干净 起始偏移量删不了 常与where连用 删固定范围的记录
truncate t20;#把表清空 应该用truncate
foreign key:建立表之间的关系
why?:不可能把数据存入一张表呀 存储空间和管理方便
#先建被关联的表,并保证被关联字段唯一
create table dep(id int primary key,name char(16),comment char(50)
);
#再建关联的表,删除先删此表create table emp(id int primary key,name char(10),sex enum('m','f'),dep_id int,foreign key(dep_id) references dep(id) #要慎用on delete cascade #删除关联on update cascade #更新关联
);#先往被关联表内插入记录
insert into dep values
(1,'IT','技术能力有限'),
(2,'财务','花钱多');
#再往关联表插入
insert into emp values
(1,'ww','f',1)
(2,'ww','f',2)delete from dep where id=1;#同时两个表删除成功
update dep set id=202 where id=2;
表之间的对应关系:(多换位思考)
1.多对一(一对多)
书(press_id int,foreign key(press_id) references press(id)) 出版社
create table press( #建立出版社的表(被关联表)一id int primary key auto_increment, #自动增长约束name varchar(20)
);
create table book( #建立书的表 (关联表)多id int primary key auto_increment,name varchar(20),press_id int not null,foreign key(press_id) references press(id)on delete cascadeon update cascade
);
insert into press(name) values
('我一定行出版社'),
('一定让他们知道出版社');
insert into book(name,press_id) values
("owen's life",1),
("owen's fantistic life",1),
("owen's girls",2);
2.多对多 (需要第三张表 把关系独立出来)
书 作者
create table author(
id int primary key auto_increment,
name varchar(20),
);
create table author2book( #找book_id与author_id之间的对应关系id int not null unique auto_increment,book_id int not null,author_id int not null,constraint fk_ author foreign key(author_id) references author(id)on delete cascadeon update cascade,constraint fk_ book foreign key(book_id) references book(id)on delete cascadeon update cascade,primary key(author_id,book_id)
);
insert into author2book(author_id,book_id) values
(1,1),
(1,2),
(2,1);
3.一对一 foreign key+unique
customer student
create table customer( #被关联的顾客
id int primary key auto_increment,
name varchar(20) not null,
qq varchar(10) not null,
phone char(16) not null
);
create table student(
id int primary key auto_increment,
class_name varchar(20) not null,
customer_id int unique,#该字段一定设置为唯一unique的 才是一对一
foreign key(customer_id) references customer(id) #外键的字段一定要保证唯一unique
on delete cascade
on update cascade
);
insert into customer (name,qq,phone) values
('dd',44444,123345),
('ddd',44434,1233),
('d334d',44234444,12334534);
insert into student(class_name,customer_id) values
('5class',2),
('2class',1);
·
·
·
·
创建数据库用 navicat for mysql软件 比较方便
下一节将详细介绍DDL、DML、DCL数据库语句的使用实例
MYSQL高效基础学习系列1相关推荐
- 【笔记】MySQL的基础学习(二)
[笔记]MySQL的基础学习(二) MySQL 老男孩 一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...
- Python零基础学习系列之三--Python编辑器选择
上一篇文章记录了怎么安装Python环境,同时也成功的在电脑上安装好了Python环境,可以正式开始自己的编程之旅了.但是现在又有头疼的事情,该用什么来写Python程序呢,该用什么来执行Python ...
- Mysql系统性基础学习
文章目录 1. 本文要点 2. 数据库的好处 3. 数据库相关概念 4. 数据库存储数据的特点 5. 产品的介绍和安装 5.1 MySQL服务的启动和停止 5.2 MySQL服务的登录和退出 5.3 ...
- python系列教程_python基础学习系列教程2-进阶之路中绕不开的知识点。
本文是在上一篇的基础上编写的,若要查看见:雨滴测试:python基础系列教程1-可能是你见过的最通俗易懂的教程zhuanlan.zhihu.com 五. python函数 所谓的函数,就是具有特定功 ...
- Java基础学习系列--(二)【抽象类,接口、代码块、final、单例、枚举】
第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同.那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对 ...
- MySQL数据库基础学习小终结:连接查询、表结构的修改、约束条件、MySQL与python交互
目录 一.连接查询 1.内连接 2.外连接 二.表结构的修改--alter 1.修改表名 2.修改字段名 3.修改字段类型--modify 4.添加字段 (1)添加日期字段:datetime (2)e ...
- MySQL的基础学习(四)
文章目录 一.视图 1. 单表视图 2. 多表视图 3. 视图操作语法 4. 视图更新 二.索引 1. 原理 1.1 Hash算法 1.2 二叉树 1.3 平衡二叉树 1.4 BTree 2. 操作 ...
- Java基础学习系列--(七)彻底搞懂java中的【异常、线程】的使用
第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中, ...
- Java基础学习系列--(五)【迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类】
第一章 Iterator迭代器 1.1 Iterator接口 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator. 想要遍历Coll ...
最新文章
- 【原创】sharepoint webpart COPY部署的办法
- 代码逻辑分析_入行数据分析师不得不看的10本书
- 数据中心基础设施管理的演进
- php curl 传输大文件,空白目录 · php下载大文件curl · 看云
- DOS窗口的编码页从UTF-8调回GBK
- Facebook妥协了,React回归
- 初识webpack——webpack四个基础概念
- 服务器 交换机的维护,服务器路由器交换机维护设置
- Redis 面试一定要知道的 3 个 问题!
- 自定义strcmp函数
- Tensorboard启动时面对大量文件存在内存升高问题
- [硬件选型] 工业相机之相机分类
- 如何注册一个微信公众号
- python anaconda下载包_anaconda python 2.7
- 职业高一计算机试题,信息技术教师考试题库
- c语言实现动态字符串,C语言怎么实现可变长度字符串
- EasyRecovery15电脑装机下载必备的数据恢复软件
- 2022 第15届 中国大学生计算机设计大赛,软件应用与开发类参赛作品提交要求
- 7-13 公路村村通
- java基础面试,java面试评价表评语