MySQL

数据库对象:表、视图(view)、序列(sequence)、索引(index)、同义词(synonym)

DDL
data definition language 数据定义语句
create alter drop

DML
data manipulation languange 数据操作语句
insert update delete

DQL
data query language 数据查询语句
select

DCL
data control language 数据控制语句
grant revoke commit rollback

command line
mysql.exe -u -root -p
密码

1NF
每一列的都是不可分割的基本数据项

2NF
有依赖的主键字段 一只表值描述一件事

3NF
非主键字段之间没有依赖关系 直接相关而不是间接相关 不存在传递依赖

表的约束:constraint
主键约束
方式一
teamID int primary key

方式二
constraint PK_XXX primary key(字段名)

非空约束
not null

唯一约束
unique

默认约束
default 值

外键约束
方式一
teamID int nit null references 外键表名(外表主键)

方式二
constraint FK_XXX foreign key (字段) references 外表名(字段)

===========================

1. 创建数据库(注释的内容是可选的,用于指定数据库的默认字符编码,排序方式)

create database 数据库名 /DEFAULT CHARACTER SET utf8 COLLATE utf8_bin/;

2. 显示所有的数据库

show databases;

3. 显示一个数据库的创建语句

show create database 数据库名;

4. 修改数据库(修改默认的字符编码集)

alter database 数据库名 DEFAULT CHARACTER SET gb2312;

5. 删除

drop database 数据库名;

6. 创建表

create table 表的名字
(
字段名1 字段1的类型,
字段名2 字段2的类型,
)/CHARACTER SET utf8 COLLATE utf8_bin/
6.1 示例
create table 学生表
(
id int,
name varchar(32),
hight double
)

二. 操作数据表的字段

主要用到的关键字:

1. 数据对象操作关键字

1.1 show : 显示数据对象

1.2 create : 创建数据对象

1.3 alter : 修改数据对象

1.4 drop : 删除数据对象

2. 数据表操作关键字

2.1 alter .. add : 给数据表添加新列

2.2 alter .. change : 修改数据表的列的名字,数据类型,位置

2.3 alter .. drop : 删除数据表中的列

7. 显示一个数据库中的所有的数据表

show tables;

8. 显示一个数据表的创建语句

show create table 表的名字;

9. 追加一个列到数据表 (add)

ALTER TABLE 表的名字
ADD COLUMN 新列的名字 新列的数据类型 /*AFTER 新列的前一列*/;

例子: 将 新的列: age int , 插入表中的id列之后:
ALTER TABLE 用户表
ADD COLUMN age int AFTER id;

10. 修改列的类型, 列的名字, 列的顺序 (change)

ALTER TABLE `列的名字`
CHANGE COLUMN 
`旧列名` `新列列名` 新列的新数据类型 AFTER `新列的上一列`;

11. 删除一个列(drop)

alter table 表的名字
drop 列的名字;

12. 删除整张表

drop table 表的名字

三. 操作数据表的数据

  1. 插入数据(insert into .. values)
    13.1 部分插入(要在表名之后用圆括号将要插入的列的名字给出)
    insert into 用户表 (id,name)
    values(1,'小花');
    13.2 全部插入(不需要给出列名,值列表中的每个值的顺序需要和表中的列的顺序一致)
    insert into 用户表
    values(2,'小明' , 1.56,11);
    13.3 插入多行数据(可以给出多个值列表,值列表之间使用逗号分隔)
    insert into 用户表
    values(2,'小明' , 1.56,11) , (3,"小董",1.2, 8);

14. 更新表中的数据(update .. set .. [where])

14.1 更新全部的数据(将表中的所有的数据的某个的值设置为指定值)

update 表的名字
set 字段名 = 值;

14.2 精确更新某一行

update 表的名字
set 字段名 = 值 
where id = 0; # 当行的id等于0的时候,才修改

15 删除表中的数据

delete from 表的名字 [where .. ];

例子: 将用户表中名字叫做小红的记录删除掉:
delete from 用户表 where name = '小李';

16. 约束

primary key : 主键约束
not null : 非空约束
unique : 唯一约束
default : 默认值
foreign key : 外键约束

17 添加约束:

ALTER TABLE 用户表
MODIFY COLUMN name varchar(32) unique NOT NULL DEFAULT '' AFTER id;

18. 设置字段的值跟随插入而自动增加

AUTO_INCREMENT : 自动增加

19. 查询数据(select)

查询全部数据,并输出所有列

select * from 用户表;

查询全部数据, 并只输出给出的列

select name , age from 用户表;

查询全部数据, 并只输出给出的列

且将列的名字改成其它的名字输出

select name as 姓名, age as 年龄 from 用户表;

输出数据时, 将重复的数据过滤

SELECT DISTINCT FROM 用户表;

查找符合指定条件的数据

条件的运算符有: > , < , >=,<= , <>

逻辑运算符 : and , or , not

模糊匹配 : like 和通配符结合使用,

通配符有:'_'和'%'

select * from 用户表 where age < 18 and height < 1.8;

找出所有名字中第一个字符是'小'的用户

select * from 用户表 where name like '小_';

==============

mysql 高级查询

多表查询的目的:

一个表中,有一些字段属于外键, 在查询这张

表的时候, 希望能够把外键链接的信息也一并

查询出来.

内连接

如果左右两边的数据不匹配就不会这行记录输出

select * from 用户表 , classroom
where 用户表.classroomid = classroom.id
/and classroom.name = '1班'/;

左外连接

以左边的表作为主要的输出数据,会保证左边表

的所有行都会被输出, 如果右边表没有与之匹配

的数据, 右边的表就会留NULL

select * from 用户表 left join classroom
on 用户表.classroomid = classroom.id;

右外连接

以右边的表作为主要的输出数据,会保证右边表

的所有行都会被输出, 如果左边表没有与之匹配

的数据, 左边的表就会留NULL

select * from 用户表 right join classroom
on 用户表.classroomid = classroom.id;

范式理论和E-R模型

  1. 范式理论是层层递进.
  2. 只需满足前三个理论就够了
    2.1 表中每列都是不可分割的一项
    2.1.1 将包含多种信息的单列拆分成多个独立的列
    2.2 表中的每列都和主键相关(主键之外的每列都是用于描述主键)
    2.2.1 将和主键无关的列拆分到另一个表中, 使用外键与表中的数据进行关联
    2.3 表中的每列都必须和主键直接相关,不能间接相关
    2.3.1 将和主键不是直接相关的列拆分到另一个表中, 使用外键与表中的数据进行关联
  3. E-R模型
    3.1 用于描述表和表之间的关系
    3.2 表和表之间的关系
    3.2.1 一对一的关系
    3.2.2 一对多的关系
    3.2.2.1 建立第三个表来保存这种关系
    3.2.3 多对多的关系
    3.2.3.1 建立第三个表来保存这种关系
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,792评论 5 116
  • 观其大纲 page 01 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 M...
    周少言阅读 3,156评论 0 33
  • 手动不易,转发请注明出处 --Trance 数据库系统命令: (1).查看存储过程状态:show pro...
    Trance_b54c阅读 1,657评论 0 8
  • 一、MySQL优化 MySQL优化从哪些方面入手: (1)存储层(数据) 构建良好的数据结构。可以大大的提升我们S...
    宠辱不惊丶岁月静好阅读 2,422评论 1 8
  • 《豆瓣9.2分,这本书曝光了女人的所有秘密|限量抢》 拆解:“豆瓣9.2分”引发用户好奇心, “这本书曝光了女人的...
    渺儿姐阅读 155评论 0 0