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相关推荐

  1. 【笔记】MySQL的基础学习(二)

    [笔记]MySQL的基础学习(二) MySQL 老男孩  一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...

  2. Python零基础学习系列之三--Python编辑器选择

    上一篇文章记录了怎么安装Python环境,同时也成功的在电脑上安装好了Python环境,可以正式开始自己的编程之旅了.但是现在又有头疼的事情,该用什么来写Python程序呢,该用什么来执行Python ...

  3. Mysql系统性基础学习

    文章目录 1. 本文要点 2. 数据库的好处 3. 数据库相关概念 4. 数据库存储数据的特点 5. 产品的介绍和安装 5.1 MySQL服务的启动和停止 5.2 MySQL服务的登录和退出 5.3 ...

  4. python系列教程_python基础学习系列教程2-进阶之路中绕不开的知识点。

    本文是在上一篇的基础上编写的,若要查看见:雨滴测试:python基础系列教程1-可能是你见过的最通俗易懂的教程​zhuanlan.zhihu.com 五. python函数 所谓的函数,就是具有特定功 ...

  5. Java基础学习系列--(二)【抽象类,接口、代码块、final、单例、枚举】

    第一章 抽象类 1.1 概述 1.1.1 抽象类引入 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同.那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对 ...

  6. MySQL数据库基础学习小终结:连接查询、表结构的修改、约束条件、MySQL与python交互

    目录 一.连接查询 1.内连接 2.外连接 二.表结构的修改--alter 1.修改表名 2.修改字段名 3.修改字段类型--modify 4.添加字段 (1)添加日期字段:datetime (2)e ...

  7. MySQL的基础学习(四)

    文章目录 一.视图 1. 单表视图 2. 多表视图 3. 视图操作语法 4. 视图更新 二.索引 1. 原理 1.1 Hash算法 1.2 二叉树 1.3 平衡二叉树 1.4 BTree 2. 操作 ...

  8. Java基础学习系列--(七)彻底搞懂java中的【异常、线程】的使用

    第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是: 异常 :指的是程序在执行过程中, ...

  9. Java基础学习系列--(五)【迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类】

    第一章 Iterator迭代器 1.1 Iterator接口 在程序开发中,经常需要遍历集合中的所有元素.针对这种需求,JDK专门提供了一个接口java.util.Iterator. 想要遍历Coll ...

最新文章

  1. 【原创】sharepoint webpart COPY部署的办法
  2. 代码逻辑分析_入行数据分析师不得不看的10本书
  3. 数据中心基础设施管理的演进
  4. php curl 传输大文件,空白目录 · php下载大文件curl · 看云
  5. DOS窗口的编码页从UTF-8调回GBK
  6. Facebook妥协了,React回归
  7. 初识webpack——webpack四个基础概念
  8. 服务器 交换机的维护,服务器路由器交换机维护设置
  9. Redis 面试一定要知道的 3 个 问题!
  10. 自定义strcmp函数
  11. Tensorboard启动时面对大量文件存在内存升高问题
  12. [硬件选型] 工业相机之相机分类
  13. 如何注册一个微信公众号
  14. python anaconda下载包_anaconda python 2.7
  15. 职业高一计算机试题,信息技术教师考试题库
  16. c语言实现动态字符串,C语言怎么实现可变长度字符串
  17. EasyRecovery15电脑装机下载必备的数据恢复软件
  18. 2022 第15届 中国大学生计算机设计大赛,软件应用与开发类参赛作品提交要求
  19. 7-13 公路村村通
  20. java基础面试,java面试评价表评语

热门文章

  1. 三级pc技术_三级推广分佣模式图解
  2. unit12-mybatis框架
  3. Hadoop 中xsync集群分发脚本
  4. 【深度长文】一篇被投资圈内部转疯了的文章
  5. 2011.9.15日报
  6. html链接怎么加颜色,html怎么设置超链接颜色
  7. c#使用ModuleBus方式读取线圈的值
  8. 关于垃圾回收CollectGarbage()的使用
  9. Tp6下ueditor设置
  10. 请教大家IMEI号手机与包装上面不一致是什么状况