MySQL基础

MySql基础

1、初识Mysql

1.1 什么是数据库

数据库(DataBase):长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据“仓库”<br />数据库的作用:保存,并能安全管理数据,减少冗余<br />数据库分类

  - 关系型数据库(SQL)
     - MySQL,Oracle,SQLServer.....
     - 关系型数据库通过外键关联来建立表与表之间的联系
  - 非关系型数据库(NOSQL)->Not Only SQL
     - Redis,MongoDB...
     - 非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

1.2 什么是DBMS

数据库管理系统(DataBase Management System):数据库管理软件,科学组织和存储数据,高效的获取和维护数据。


2、操作数据库

2.1 结构化查询语句分类

名称 作用 命令
DDL(Data Definition Language)数据定义语言 定义和管理数据对象,如数据库,数据表 create,drop,alter
DML(Data Manipulation Language)数据操作语言 操作数据库对象中所包含的数据 insert,update,delete
DQL(Data Query Language)数据查询语言 查询数据库数据 select
DCL(Data Control Language)数据控制语言 管理数据库的语言,包括权限管理以及数据更改 grant,commit,rollback

2.2 数据库操作

命令行操作数据库

创建数据库:create database [if not exists] 数据库名;<br />删除数据库:drop database [if exists] 数据库名;<br />查看数据库:show database;<br />使用数据库:use 数据库名;

2.3 创建数据表

语法:

create table [if not exists] `表名`(
        ’字段名‘ 类型 [属性][索引][注释],
    ’字段名‘ 类型 [属性][索引][注释],
    ......
    ’字段名‘ 类型 [属性][索引][注释]
)[表类型][表字符集][注释]

2.4 数据值和列类型

数值类型

类型 取值范围 存储空间占用
tinyint(非常小的数据) 有符号:-2~2-1<br />无符号:0~2 8-1 1Byte
smallint(较小的数据) 有符号:-215~215-1<br />无符号:0~216-1 2Byte
mediumint(中等大小的数据) 有符号:-223~223-1<br />无符号:0~224-1 3Byte
int(标准整数) 有符号:-231 ~231 -1<br />无符号:0~232-1 4Byte ----常用
big(大整数) 有符号:-263~263-1<br />无符号:0~264-1 8Byte
float(单精度浮点数) 4Byte
double(双精度浮点数) 8Byte
decimal(字符串形式的浮点数) decimal(m,d) m个字节 ----,金融计算用,无精度问题

字符串类型

类型 说明 最大长度
char 固定长度的字符串,检索快但费空间,<br />0<=M<=255 M字符
varchar 可变字符串0<=M<=65535(2^16) 变长度 -----常用
tinytext 微型文本串M<=255 2^8-1字节
text 文本串 2^16-1字节 ----用于存储大文本

日期和时间型数值类型

类型 说明 取值范围
date YYYY-MM-DD,日期格式 1000-01-01~9999-12-31
time HH:mm:ss,时间格式 -838:59:59~838:59:59
datetime YY-MM-DD hh:mm:ss 1000-01-01 00:00:00至<br />9999-12-31 23:59:59
timestamp YYYYMMDDhhmmss格式表示的时间戳 1970-01-01 00:00:01到2038-01-19 03:14:07
year YYYY格式的年份值 1901~2155

2.5 数据字段属性

UnSigned

  - 无符号的
  - 声明该数据列不允许负数

ZEROFILL

  - 0填充
  - 不足位数的用0来填充,如int(3),5则为005  ----建立数据库时int类型的长度就是用在此处,长无影响,短则补0

Auto_InCrement

  - 自动增长的,每添一条数据,自动在上一个记录数上加一(默认)
  - 通常用于设置主键,且为整数类型
  - 可定义起始值和步长
  - 当前表设置步长(AUTO_INCREMENT=100):只影响当前表        
  - SET @@auto_increment_increment=5;影响所有使用自增的表(全局)

NULL和NOT NULL

  - 默认为NULL,即没有插入该列的数值
  - 如果设置为NOT NULL,则该列必须有值

DEFAULT

  - 默认的
  - 用于设置默认值
-- 每个表必须存在的字段 阿里规范
id 主键
`version` 乐观锁
is_delete   伪删除
gmt_crate 创建时间
gmt_update  修改时间

创建表时列的注释关键字:COMMENT

常用的逆向命令
--查看数据库的定义
show create database 数据库名;
--查看数据表的定义
show create table 表名;
--显示表结构
DESC 表名;

2.6 数据表的类型

常见类型:InnoDB,MyISAM...等对比:

名称 MyISAM(旧) InnoDB(新)
事务处理 不支持 支持
数据行锁定 不支持(表锁) 支持
外键约束 不支持 支持
全文索引 支持 支持
表空间大小 较小 较大,约2倍
适合场合 节约空间及响应速度 安全性,事务处理及多用户操作数据表
文件 .frm表结构定义文件<br />.MYD数据文件<br />s*.MYI索引文件 只有*.frm以及上一级目录的ibdata1文件

2.7 修改数据库

修改表(ALTER TABLE)

-- 修改表名
alter table 旧表名 rename sa 新表名
-- 添加字段
alter table 表名 add 字段名 列属性 [属性]
-- 修改约束
alter table 表名 modify 字段名 
-- 改名 也可同时改约束
alter table 表名 change 旧字段名 新字段名 [列类型 [属性] ]

删除数据表

-- if exists为可选用于判断是否存在该数据表 如果删除不存在的数据表会抛出错误
drop table [if exists] 表名;

其他

1 可以用反引号(`)为标识符包裹,以避免与关键字重名,中文也可以作为标识符(不推荐)
2 每个库目录存在一个保存当前数据库的选项文件db.opt中
3 sql注释
        /*    */多行注释
        -- 单行注释
4 模式通配符
    _任意单个字符
  %任意多个字符
  单引号需要进行转义 \'
5 SQL对大小写不敏感(关键字)(在Mac和Windows上大小写完全不敏感,但是在Linux上标识符大小写敏感) 

3、MySQL数据管理

3.1 外键

外键概念

将一个表的值放入第二表表示关联,所使用的的值是第一个表的主键值。此时。第二个表中保存这些值的属性被称为外键(foregin key)

外键作用

保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,约束。使两张表形成关联,外键只能引用外表中的列的值或使用空值。

创建外键

-- 方法1:创建表时创建
foreign key(子表的外键字段) references 父表的表名(父表的主键的字段名)

-- 方法2:建表后增加
alter table 子表的数据表名 add foreign key(子表的外键名称) references 父表的数据表名称(父表的主键名称)

删除外键

-- 删除具有主外键关系的表时,要先删除子表,再删除主表
alter table 表名 drop foreign key 外键名

3.2 DML语言

数据库的意义:数据存储,数据管理<br />DML语言:数据操作语言

  - insert(添加数据语句)
  - update(更新数据语句)
  - delete(删除数据语句)

3.3 添加数据

-- 添加数据可添加多条
insert into 表名[(字段1,字段2,.....)] values (值1,值2,....)[,(值1,值2,....)]

注意:

  • 字段或值之间用英文逗号隔开
  • 添加的值务必与表结构,数据列,顺序相对应且数量一致
  • 可同时插入多条数据,values后用英文逗号隔开

3.4 修改数据

update 表名 set 列名=值 [where ....]

3.5 删除数据

-- 如果无条件则删除表中所有数据
delete from 表名 [where ....]
--用于完全清空表数据,但表结构,索引,约束不变
truncate [table] 表名

两者区别:truncate重新设置计数器而delete的计数器仍会在原来基础上继续,使用truncate不会对事物有影响,truncate速度更快


4、使用DQL查询数据

DQL语言

语法

-- select 语法
select [distinct] 数据列
    from 表名 [as 别名]
    [left|right|inner join 表名] -- 连表查询
    [where ...] -- 判断条件(不能使用聚合函数
    [grouo by ...] -- 结果按那几个字段分组
    [having] -- 过滤分组的记录必须满足的次要条件(可以使用聚合函数
    [order by] -- 指定查询记录按一个或者多个条件排序 DESC降序 ASC升序
    [limit 起始条数,显示条数]
    

distinct的作用:去掉select语句查询返回的记录结果中重复的记录(所有返回列的值都相同的)只返回一条

as的作用:可以给表,列起别名,可以把经计算或总结的结果用另一个新名称来代替

where条件语句:

操作符 语法 作用
= a=b 等于
<>或!= a!=b 不等于
> a>b 大于
< a<b 小于
>= a>=b 大于等于
<= a<=b 小于等于
between between 5 and 10 在某个范围之间
and或&& 5>1 and(&&) 1>0 逻辑与,同真则真,一假为假
or或|| 5<1 or(||) 1<5 逻辑或,同假则假,一真为真
in a in (.....) a等于...中某一个则为真(具体值不能用%,_)
not或! not a或!a 逻辑非
is null a is null 为null则为真(不能用=null)
is not null a is not null 不为null则为真
like a like b 若a匹配b则为真(可以用%,)(%代表0到任意个字符。代表一个字符)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355