mysql内容总体回顾
数据类型:
数值类型: 整形 浮点型
字符串: char(定长)\varchar(不定长)
char(定长):插入数据或查询数据都快,因为char在磁盘上插入数据时的存储空间是固定的,简单粗暴,直接就是定长空间,那么就不需要考虑数据的长度,所以在进行数据查询时,速度也快,因为在读取数据时,也不需要考虑数据长度,(简单粗暴) 就按照定长的空间来取数据.
varchar(不定长):插入和查询速度相对较慢,因为它在内容 存储数据的时候,按照数据的长度进行存储的,那么每次存储数据都需要计算一下数据的长度,按照长度来开辟存储空间,那么在数据的存储空间前面还需要1-2个字节空间长度来存储数据的长度,也就是说格式大概是长度+内容,也导致了在读取数据时,首先要先读取数据的长度,然后根据长度再读取后面的内容,导致速度较慢,但是多数情况下可以节省存储空间.
日期类型:
year 2018
data 2018-01-01
time 12:10:10
datatime(*) 2019.1.22 12:10:10 *****平时工作用datatime
timestamp 范围:1970-01-01 00:00:00/2037 年某时
year:
mysql> create table t10(born_year year); #无论year指定何种宽度,最后都默认是year(4)
mysql> insert into t10 values
-> (1900),
-> (1901),
-> (2155),
-> (2156);
mysql> select * from t10;
+-----------+
| born_year |
+-----------+
| 0000 |
| 1901 |
| 2155 |
| 0000 |
+-----------+ date,time,datetime:
mysql> create table t11(d date,t time,dt datetime);
mysql> desc t11;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| d | date | YES | | NULL | |
| t | time | YES | | NULL | |
| dt | datetime | YES | | NULL | |
+-------+----------+------+-----+---------+-------+ mysql> insert into t11 values(now(),now(),now());
mysql> select * from t11;
+------------+----------+---------------------+
| d | t | dt |
+------------+----------+---------------------+
| 2017-07-25 | 16:26:54 | 2017-07-25 16:26:54 |
+------------+----------+---------------------+ timestamp:
mysql> create table t12(time timestamp);
mysql> insert into t12 values();
mysql> insert into t12 values(null);
mysql> select * from t12;
+---------------------+
| time |
+---------------------+
| 2017-07-25 16:29:17 |
| 2017-07-25 16:30:01 |
+---------------------+ ============注意啦,注意啦,注意啦===========
1. 单独插入时间时,需要以字符串的形式,按照对应的格式插入
2. 插入年份时,尽量使用4位值
3. 插入两位年份时,<=69,以20开头,比如50, 结果2050
>=70,以19开头,比如71,结果1971
mysql> create table t12(y year);
mysql> insert into t12 values
-> (50),
-> (71);
mysql> select * from t12;
+------+
| y |
+------+
| 2050 |
| 1971 |
+------+ ============综合练习===========
mysql> create table student(
-> id int,
-> name varchar(20),
-> born_year year,
-> birth date,
-> class_time time,
-> reg_time datetime); mysql> insert into student values
-> (1,'sb1',"1995","1995-11-11","11:11:11","2017-11-11 11:11:11"),
-> (2,'sb2',"1997","1997-12-12","12:12:12","2017-12-12 12:12:12"),
-> (3,'sb3',"1998","1998-01-01","13:13:13","2017-01-01 13:13:13"); mysql> select * from student;
+------+------+-----------+------------+------------+---------------------+
| id | name | born_year | birth | class_time | reg_time |
+------+------+-----------+------------+------------+---------------------+
| 1 | sb1 | 1995 | 1995-11-11 | 11:11:11 | 2017-11-11 11:11:11 |
| 2 | sb2 | 1997 | 1997-12-12 | 12:12:12 | 2017-12-12 12:12:12 |
| 3 | sb3 | 1998 | 1998-01-01 | 13:13:13 | 2017-01-01 13:13:13 |
+------+------+-----------+------------+------------+---------------------+
枚举类型:enum("1","2") 单选
枚举类型(enum)
An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)
示例:
CREATE TABLE shirts (
name VARCHAR(40),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
集合类型:set("1","2","3") 多选
集合类型(set)
A SET column can have a maximum of 64 distinct members.
示例:
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
完整性约束:
not null :不为空
在字段1处设置了not null
insert into t1(字段2,字段3.....) values(字段2的值.....)
default : 默认值
unique: 唯一,不许重复(设置默认值只能用一次)
primary key: 主见,唯一非空 not null +unique
必须有一个主键字段,且只能有一个
(1) 自动查看你所有的字段里面是否有 not null+unique,如果有默认就将这个字段设置为主键字段
(2) 如果没有,自动设置一个看不到的字段作为主键.因为所有数据根据主键进行存储
auto_increment 自增,一般加在主键后边,从1开始,每次+1,可以设置步长.
foreign key :外键 建立表之间关系用的
一对多:
t1(id) 一对多t2
t1里面的一条数据,可以对应t2 表里面的多条数据
t1 字段不为空,且唯一
t2表里面加一个字段 ,ti_id 1,1,1
建立外键关系时,t1表的id字段是被关联的字段;不为空,且唯一.
create table t2(
--字段名 数据类型(宽度 约束条件),
id int primary key auto_increment,
name char (10) not null,
sex enum("男","女") default("男") not null
id_card char(18) not null unique,
t1_id int not null ,
constraint fk_t2_t1 foreign key (t1_id) references t1(id)
)
一对一:
create table t2(
--字段名 数据类型(宽度 约束条件),
id int primary key auto_increment,
name char (10) not null,
sex enum("男","女") default("男") not null
id_card char(18) not null unique,
t1_id int not null unique,
constraint fk_t2_t1 foreign key (t1_id) references t1(id)
)
t1_id int not null unique ,constraint fk_t2_t1 foreign key (t1_id) references t1(id) ##比多对一多一个unique
多对多:
建立第三个表t3
t3 id t1_id(指向t1的id) t2_id(指向t1的id)
库的操作
增 :create database 库名
删: drop database 库名
改: alter database 库名 charset utf8;
查: show databases;
show create database 库名 \G;
\c 结束输入
表的操作:
增:
create table t2(
--字段名 数据类型(宽度) 约束条件,(字段名和数据类型是必须的))
删 :drop table 表名;
改: (表字段的修改,表结构的修改):
alter table 表名 rename 新表名
alter table 表名 modify 字段名 数据类型 完整性约束
change 旧字段名 新字段名 数据类型 完整性约束
alter table 表名 add 字段名 数据类型 完整性约束 first;
after 字段名;
alter table 表名 add foreign key (t1_id) references t1(id)
查: show tables;
行记录的操作:
增; insert into 表名 values()
删; delete from 表名 where condition 1=1 或id=10
改: update 表名 set name="'粑粑'" where id = 10;
查询:
单表查询: select *from t1 where id =1(1=1)
select distinct 字段... form 库名.表名
where condition
group by
having
order by
limit
多表查询:
笛卡尔积 :将两表的所有记录全部对应一遍
select* from emp ,dep where emp.dep_id = dep.id;
这样获得了一个包含量表所有字段对应关系数据的一张虚拟表
连表操作:
inner join left join right join union
子查询: 将子查询的结果作为另一个查询 语句的筛选条件;
mysql内容总体回顾的更多相关文章
- 省市区三级数据的MYSQL内容
省市区三级数据的MYSQL内容 省: /* Navicat MySQL Data Transfer Source Server : rm-2ze0lz594rof5nn72.mysql.rds.ali ...
- MySQL的知识回顾
经过一段时间的NodeJs开发经历,选用的数据库是MySQL,一开始以为自己对数据库的基础知识掌握还ok,因为毕竟自己以前用过Apache+PHP+MySQL做数据库课程设计,但是在开发过程中才知道在 ...
- PHP移动互联网开发笔记(7)——MySQL数据库基础回顾[1]
一.数据类型 1.整型 数据类型 存储空间 说明 取值范围 TINYINT 1字节 非常小的整数 带符号值:-128~127无符号值:0~255 SMALLINT 2字节 较小的整数 带符号值:-32 ...
- 毕业设计之zabbix---自带模板监控mysql内容
自带模板是不能直接建立连接就可以用的 必须经历一下几步: 建立用户权限: [root@mysql.quan.bbs lib]$mysql -u root -p Enter password: Welc ...
- Oracle的总体回顾
1.多表查询:一张以上的表进行查询,称为多表查询,多表查询的时候可以为表指定别名的方式以简化查询列的编写,在多表查询中,会产生笛卡尔积,就是两张表的总数相乘得到的结果,如果要想消除笛卡尔积要通过关联条 ...
- 获得mysql内容,生成xml文件,另外,为了webservice发送
<xyt> <news id> <url></url> <title></title> </news> </x ...
- 数据库 Mysql内容补充一
mysql时间函数 --获取当前日期 select current_date(); --获取当前时间 select current_time(); --获取当前的日期和时间 select now(); ...
- 数据库 Mysql内容补充二
多表查询 mysql支持的是SQL99标准的连接查询,并不支持oracle公司的外连接查询, 但是支持oracle等值查询,不等值查询,自连接查询,子查询(只要不是外连接(+)都支持) oracle也 ...
- PHP移动互联网开发笔记(8)——MySQL数据库基础回顾[2]
一.数据表 为了确保数据的完整性和一致性,在创建表时指定字段名称,字段类型和字段属性外,还需要使用约束(constraint),索引(index),主键(primary key)和外键(foregin ...
随机推荐
- transform、transition、animation 区别
Transform 在部分的test case当中,每每演示transform属性的,看起来好像都是带动画.这使得小部分直觉化思维的人(包括我)认为transform属性是动画属性.而恰恰相反,tra ...
- Kong(V1.0.2) Health Checks and Circuit Breakers Reference
介绍 您可以让Kong代理的API使用ring-balancer,通过添加包含一个或多个目标实体的 upstream 实体进行配置,每个 target指向不同的IP地址(或主机名)和端口.ring-b ...
- C#使用AppDomain时的异常分析:Object ‘XXXX.rem’ has been disconnected or does not exist at the server.
在使用C#的应用程序域的时候,碰到这么一个异常: System.Runtime.Remoting.RemotingException: Object ‘/76e7cd41_2cd2_4e89_9c03 ...
- 喜怨交加C++
作为被高中理综折磨几年立誓大学不学理工科类的文字爱好者,会学计算机是个意外.出于对理工科的不感兴趣,暑假期间也没有预习过编程知识.在对编程进行学习之前,我将它视为一门科目.一个专业.一项技能,唯独不是 ...
- 【Windows 7】发现一个奇怪的现象
最近在Windows7-32位操作系统上发现一个奇怪的现象,不知道64位操作系统上会不会发生这个现象.这个现象就是:如果系统上的一个或多个账户没有设置密码,那么在此条件下终止winlogon.exe进 ...
- Windows 10 +VS2019 编译OpenCV 4.1.0
准备环境 安装cmake 官网 获取代码 github 下载拓展库opencv_contrib github 生成Sln cmake安装完后桌面会有一个快捷方式,可打开cmakeGUI,打开它. 第一 ...
- 数据库事务的四大特性以及事务的隔离级别(mysql)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指 ...
- CVTE前端一面
1.如果不设置cookie失效时间: 关闭浏览器自动关闭. 有没有手写过cookie HttpOnly 2.跨域的几种方式 如何实现cors 2.web安全: xss,csrf 如何防范 3. ...
- Vue Input输入框两侧加减框内数字组件
NumberBox组件内容: <template> <div class="number-box" :class="{'box-disable': is ...
- SQL server 2008(Linux安装)
今天应公司的要求,需要在阿里云上安装sql server 在本地使用,由于自己原来没有涉及过这样的安装所以走了很多的弯路.现在将我的安装过程与大家分享,希望能够帮到想要学习这个方面的人.以下是我用Ce ...