NET学习笔记08MySQL基本功知识

NET学习笔记08MySQL基本功知识

mysql数据库幼功知识

mysql笔记

怎么样是数据库

数据库看名就能够知道意思,正是用来积累数据的工具,用一个比例形象的例子来比喻,便是Excel,多少个Excel文件就足以充当是贰个数据库。

一,补充

关系型数据库

纵使以行与列构成的二维数据表的款式,用来储存数据的,并且将多张数据表存款和储蓄在叁个单元中的存款和储蓄情势,就叫做关系型数据库。

cd
;dos窗口查看文件夹,盘与盘之间不需求cd

数据表

由行与列构成的二维布局的蕴藏数据的报表。

has
a;生命周期,具有,自身的

记录

纵然数据表中央银行,生龙活虎暴行数据大家就称为一条数据记录。

平凡来讲,每条数据记录皆有一个ID号,大家能够把这么些id通晓成是excel中的行号,用来对每条记下进行区分与标识。

use
e;使用,传进来的

主键

众多时候大家将id称为主键,主键那是指那张表的排列顺序的基于。

and;和

字段

数码字段,就是数据表中的列。

每一个字段都亟需钦定叁个称呼,用来证实该列数据的成效,就叫作字段名。

is e;是

常用的数据库的档次

Mysql 品质大胆,能够无偿应用。

MSSQL server 微软公司的数据库软件,常常用于搭配微软系统的编制程序语言。

Access是office的办公室套件之生龙活虎。

Oracel 品质非强悍,也不行高昂。

byte
;+127——-128;127+1取返=-128;

设置与行使mysql

安装mysql的艺术超多,大家应用phpstudy这些软件来设置php + mysql的运作情状。安装之后,我们就颇有了mysql的劳动。并且还恐怕有四款mysql客商端。

 

Mysql分为顾客端与服务端。服务端仅仅用于对软件程序提供数据通讯,普通客商不恐怕直接观察里面的多少内容。

 

顾客端用来将服务端的数量,以顾客能够精晓的不二诀要展现在其分界面上。

 

ip

phpMyAdmin

phpMyAdmin是最常用的mysql顾客端,它是基于php语言的。

在桌面右下角的phpstudyLogo上右击弹出菜单中选用phpMyAdmin就足以运行步入了。运转之后,需求输入顾客与密码举行登录,私下认可的客商名密码都以root。

 

本机ip;127.0.0.1

新建数据库

1、 要内定数据库的称号。

2、 平日选取utf8_unicode_ci字符集,在只有汉语的状态下,能够选用gbk_chinese_ic或gb2312_chinese_ci 。

 

mysql
–version;命令窗口询问mysql版本(管理员运维命令窗口)

新建数据表

1、 选中数据库之后,点击侧边的“新建数据表”,填写“数据表名”。

2、 钦定数据表的字段,也正是列。在钦赐字段的历程中大家要对字段增加字段名、数据类型、数据长度、是还是不是是主键、是不是自增。(大多意况下,主键是名称为id的子弹头类型,并且是自增的。)

3、 为字段钦点这一列的数据类型。

二,mysql基础

自增auto_increment

自增字段中见惯不惊贮存的是整数类型的数码,用于表示数据库中的记录的序号。

自增字段的值无需手动输入,此中的数码是机关发出的,每当向那表里面增多一条新记录的时候,自增字段会自动抽出上意气风发行字段值,然后加豆蔻年华,作为新记录的主键值。(主键相对不会生出再度,尽管上一条记下被删去了)。

1,数据库;

怎么着设置三个字段为自增

1、在创建表或在改过字段构造的时候,设置字段的数据类型为int,然后选中auto_increment上的勾。

2、当插入一条数据时,不要手动填写主键字段。

3、主键生成的数字相对不会再也,即便记录被去除。

1,储存数据以致数据构造的厂库。(db);

什么设置主键

1、在创建表或在退换字段构造的时候,在主键字段的”索引”下拉菜单中选择“primary”。(一张表只允许设置三个主键,经常它是int自增的。)

 

2,数据库是独自;

小练习:

1、 新建三个成品product数据库

2、 在数据库中增添成品product表,并树立字段pId (主键)、pName(付加物名称)、pModel(付加物型号)、pPrice(付加物价格)

3、 增添5条付加物新闻

4、 在数据库中再增添二个产品入库表(saveInLib),并树立字段:sid(主键)、pName(成品名称)、saveInTime(入库时间)、saveInCount(入库数量)。

5、 增添5条产物入库记录。

 

2,数据库是用来保管,查询,储存数据的;

mySQL中的数据类型

在mySQL中各样字段,都不得不掌握它贮存的数量的门类,后生可畏旦钦定了花色,该字段(列)中的数据都一定要相符这么些类其余范围,不然就能够挑起错误。

 

再正是字符等品种须求钦命内容的最大尺寸。

 

1,实体;表名,依据目标来划分

int整数类型

一定要寄存整数

2,属性;字段

varchar字符类型

能够累积任一字符,蕴涵符号、数字、字母,不过他们都会被当成字符为拍卖。

3,数据库连串;关系型,非关系型,档期的顺序型,网状型

Date日期

用于存款和储蓄日期和岁月

3,编码设置;

数值类型

TinyInt 超级小的卡尺头存款和储蓄格式,1字节(8位的二进制数),它的取值范围是:不带符号时0 ~ 255,带正负号时-128 ~ 127

SmallInt 小卡尺头,2字节,不带符号时0~65535,带正负号时-32768~32767

MediumInt 中等整数,3字节,不带符号时0~16777215,带正负号时-8388608 ~ 8388607

Int 标准整数,4字节,不带符号时0 ~ 4294967295 ,带正负号时-2147483648 ~ 2147483647

BigInt 大整数,8字节,不带符号时0~18446744073709551615

 

Float 单精度浮点数,4字节,最小值,正负1.175494351E-58(1.175494351*10-58)最大值,正负3.102823466E+38(3.102823466E*1038)

Double 双精度浮点数,8字节,最小值,正负2.2250738507二〇一六E-308,最大值:正负1.17976931348623157E+308。

 

Decimal
以字符串形式储存浮点数。它的取值范围不是原则性的,决定于顾客内定的长度。

gbk;中国和日本泰语言

数值类型的字段能够安装的参数:

gb1312;中文

unsigned属性

“收拾”菜单中的unsigned选项,代表无符号,代表这一字段中的数值无法为负数,因为无符号正是意味着未有正负号。如若“收拾”菜单留空,什么都不选的话,正是意味有暗记,可以为正数也得认为负数。

utf8;大型编码;

unsigned zerofill属性

当数码的上涨的幅度小于类型的最大开间时,则在多少后面自动填充0

4,默许引擎;

auto_increment

自增

INNODB;默认的

默认à定义

以此选项代表,填充数据时只要该字段为空值时,所接收的私下认可值。

数据表的斯特林发动机平时都要设成INNODB

字符串数据类型

字符类型能够积存任何值,以致是二进制方式的图像、声音、摄像。

CHAR[M] 代表M字节的字符。

varChar 常用的字符存款和储蓄格式,使用时须求钦点最大内容长度。

5,常用的一些数据库

积存大体量的文书

TinyBlob ,blob,TinyText,text

前三个是意味着二进制字符串,后七个是意味非二进制字符串,都足以积存多量的文本消息。

MediumBlob,MediumText

LongBlob,LongText

sqlserver
,access是微软的数据库

枚举类型

ENUM / SET 类型

设置其私下认可值为(‘值1’, ‘值2’, ‘值3’,…卡塔尔,由客商钦点四个可选值,字段中的值必需是个中之生龙活虎,最四只可以有655贰拾柒个可选值。

 

oracle,mysql,java都是oracle公司的

日牛时间等级次序

Date 1000-01-01 ~ 9999-12-31

TIME -838:59:59~838:59:59

DateTime 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

TimeStmp 壹玖陆捌-01-01 00:00:00 到2037年的之间的某二个每天

Year 存储1901~2155年的贰个年度。

 

dbz
是IMB公司的

小练习:

1、 成立一张工作者数据表,employee,包罗字段:eId(规范整数,主键、自增卡塔尔(قطر‎、姓名eName(varchar,50State of Qatar、年龄eAge(tinyInt,无符号)、工号eNum(smallInt,不足的位数用0填充)、文凭(枚举:初级中学~博士)、性别(枚举:男,女)、出华诞期(DateTime)、基本薪酬(Float,暗许:1300)、自笔者夸口text。然后输入五名工作者的消息。

 

 

T-SQL语言根底之增加和删除改查

sybase
是sybase公司的;

SQL语句

是一门特意用于数据库操作的语言,SQL语句的语法不仅适用于mysql数据库,同有的时候间也适用于大约具有的主流数据库。当然区别商铺出口的数据库在语法细节上照旧多远。

 

三,DDL;数据定义语句;设计语句

select语句

询问语句,特地用于在数码表中遵照客商钦命的法规进行询问。

1,基本命令

简单语法描述:

SELECT <字段1,字段2,字段3…..> FROM <数据表名> [WHERE 筛选规范]

里面字段部分代表你想要从那张数据表中询问哪些字段(列),若是要查询全部字段,能够
* 号表示。

示例:

SELECT pName FROM product

//从产品表中查询所有产品名称

SELECT pName,pPrice FROM product

//从产品表中查询所有产品名称和价格

SELECT * FROM product

//从产品表中查询中所有产品的字段

SELECT pName,pPrice-30 FROM product

//在查询时给所有产品减30元

SELECT pName as '产品名',pPrice as '价格' FROM product

//在查询时修改结果集中的字段名

SELECT 3.1415926 *12 *12

//用select语句来进行数学运算

 

1,登录;mysql -h
localhost -uroot -p

where子句

概念二个询问条件,然后在查询进程中用那些标准来筛选相符条件的笔录。

 

SELECT * FROM product WHERE pPrice >=1000

查询价格大于等于1000的产品

SELECT * FROM product WHERE pPrice <>3000

SELECT * FROM product WHERE pPrice !=3000

查询价格不等于3000的产品

SELECT * FROM product WHERE pName = '中兴z954'

 

查询付加物名称是Nokiaz954的制品音讯(在mysql中双引号与单引号都意味字符串,可是推荐使用单引号,因为我们现在要学习的mssql server 中字符串用单引号表示)

2,退出;exit

逻辑与and

SELECT * FROM product
WHERE pPrice <800 AND pId >6 AND pName ='Nokia v998'

 

3,查看当前时刻日期;select
now(State of Qatar;

逻辑或or

SELECT * FROM product

WHERE pPrice <800 OR pId >6

 

4,当明日子;select
curdate(卡塔尔国;

逻辑非not

SELECT * FROM product

WHERE not pName = '中兴z954'

 

 

5,当前时间;select
curtime(卡塔尔国;

insert插入数据

向钦命的数据表的钦命字段插入一条记下。

6,打字与印刷版本新闻;select
version(State of Qatar;

语法:

INSERT INTO 表名(字段1,字段2,字段3,……) values(值1,值2,值3,….)

在那之中,字段的义务与值的职位必得逐豆蔻梢头对应。

7,查看当前顾客;select
user(卡塔尔(قطر‎;

示例:

INSERT INTO userinfo(uName,uPhone,uIDCard)

VALUES('江小白','010-89562321','5001234567814541X')

 

向数据表中插入一条顾客消息

 

INSERT INTO userinfo(uName) VALUES(‘张小强’)

插入一条客户消息,但是唯有姓名,别的字段自动留空或利用默许值(要是内部有些字段设置为不许为null,而从未暗中同意值的话,就应该要给这几个字段赋值了)。

 

INSERT INTO userinfo VALUES

(3,'王小虎','010-89562321','5001234567814541X')

 

能够省略字段名,可是具有的字段都不得不遵照顺序来挨门挨户赋值。包括主键ID(要不成方圆顺序来填写主键值)

 

一回性插入多条语句

insert into student(sName,sAge,sSex,sPhone)

values('小黑',20,'女','010-89562314'),

('小强',20,'男','020-89562314'),

('小红',20,'女','021-89562314'),

('小黄',20,'男','019-89562314'),

('小李',20,'女','022-89562314')

 

 

8,运营mysql后台服务(管理员运营命令窗口);

Update修正数据

依据钦点的口径规定须要校订的行,然后改过钦定字段的多少。

net start
mysql;

语法:

update 数据表名 set 字段1=值1,字段2=值2,……..WHERE 条件

虽说where是三个可选参数,但是经常状态下都急需写where条件,假若不写就是纠正整张表的持有行。

9,关闭mysql后台服务(管理员运营命令窗口);

示例:

UPDATE userinfo SET uName = '江老怪' WHERE uid = 1

 

修改第1条记下的全名叫江老怪

UPDATE userinfo SET uName = '江老怪'

 

更改全部行的顾客名字为江老怪

UPDATE userinfo

SET uName = '小二黑',uPhone='111111',uIDCard='11111111' WHERE uid = 3

 

 

net stop
mysql;

delete删除

基于标准删除钦赐的记录

2,操作库

语法:

delete from 表名 where 条件

虽说where是一个可选参数,可是日常情形下都急需写where条件,假设不写正是剔除整张表的兼具行。

1,查看数据库;show
databases;

示例:

DELETE FROM userinfo WHERE uid = 2

 

 

2,创制数据库;create
database 库名 字符集;

小练习:

1、 回想背诵增加和删除改查钦定的语法。

2、 手动新建贰个数据库product,在里面新建数据表product,这些表中的字段:pid(主键)、pName(产品名)、pModel(型号)、pIntro(简要介绍)、pFrom(产区卡塔尔(قطر‎、pPrice(价格) 。

3、 用insert语句增多10条不一致的出品数据

4、 查询

aState of Qatar 查询全体产物数量

b卡塔尔 查询全数付加物的产物名和价格

cState of Qatar 查询全数价格在二〇〇一之上的出品

dState of Qatar 查询全数付加物为亚松森而且标价高于3000的出品

e卡塔尔国 查询全体产区不是亚松森的付加物

5、 将第5条记下的制品号匡正为T1000

6、 删除全数价格低于5元的成品。

 

将第三题之后的sql语句复制到一个word文书档案中,然后COO检查组员,班长检查首席施行官。

3、5、6每题20分。

第4题中的每一个小题8分共40分

 

命令行与高级查询

3;删除数据库;drop
database 库名;

Mysql命令行

1、 在phpstudy的右键菜单中,mysql工具 à mysql命令行

2、 弹出的一声令下框中提醒”enter password”,输入暗许密码root

3、 假若看见”you mysql connection”就认证你登入成功了。

4、 在命令行中,每一条指令都必得以总部;结束,不然系统会认为你那条指令还尚未成功,始终供给你世襲输入。

 

3,改过数据库密码账户登陆密码

查看数据库列表

show Databases

1,用SET PASSWORD命令

选料数据库use

set
password for 用户名@localhost = password(‘新密码’); 

格式:

use 数据库名

选定内定数据库为当下暗中认可被操作的数据库。

在利用操作数据表中的数码此前,一定要选定二个脚下数据库。

 

2,用mysqladmin

位列出近年来数据库中的数据表

show tables

mysqladmin
-u用户名 -p旧密码 password 新密码 

位列出多少表中的字段

格式:show columns from 表名

Describe 数据表名

 

3,用UPDATE直接编辑user表

数据库与数据操作

mysql>
use mysql; 

开创贰个新的数据库

命令格式:create database
数据库名

mysql>
update user set password=password(‘123’) where

在脚下数据库中开创数据表

专心,在开立早先务必选择当前数据库。

格式:create table 表名(字段1 数据类型,字段2 数据类型,……卡塔尔国

示例:

create table stdInfo(

sName varchar(20),

sAge int,

sSex varchar(5)

);

 

user=’root’
and host=’localhost’; 

创造包括自增主键的数据表

亲自过问:创制客商表:

create table customers(

 id int not null auto_increment,

 name varchar(20) not null,

 age int not null,

 address varchar(100) not null default 'empty',

 primary key(id)

);

 

说明:

not null 代表该字段区别意现身空值,正是说当你选用insert语句插入数据记录的时候,必得向那个字段赋值,不然数据操作将生出错误。

auto_increment 自增

Default 默认值

Primary key 指定数据表的主键

mysql>
flush privileges; 

去除数据表

格式:drop table 数据表名

4,在忘记root密码的时候,能够这么

删去数据库

格式:drop database 数据库名

(1卡塔尔国,
关闭正在周转的MySQL服务。 

改革表构造:扩大字段

加上三个字段

alter table student add sScore float null;

 

其中:

add 代表扩充一列

Null 代表这几个字段允许空值。

student 是多少表名

sScore 是骤增的字段名,前边是数据类型。

(2),
打开DOS窗口,转到mysqlbin目录。 

纠正表构造:删除字段

alter table student drop column sScore;

 

其中:

drop column 代表删除字段操作

sScore 要被去除的字段名

student 是表名

(3),输入mysqld
–skip-grant-tables 回车。

重命名数据表

rename table student to sInfo;

 

在乎:to前面是修正前的原表名,to后边是修正后的新表名。

–skip-grant-tables
的意味是开发银行MySQL服务的时候跳过权限表认证。 

改革表布局:增多自增主键

alter table product

 add pid int

 not null

 primary key

 auto_increment

 first;

 

其中

primary key 设置新字段为主键

first 将新字段放在其余字段的后面,处于第壹位。

 

(4卡塔尔国,再开贰个DOS窗口(因为刚刚不行DOS窗口已经不能够动了),

小练习:

请同学把富有SQL都写到三个SQL文件中,按“班级-姓名(可以是拼音卡塔尔国.SQL”的办法保存

某学园的学习者管理数据库中有学员表(T_STUDENT)、班级表(T_CLASS卡塔尔(قطر‎,表结构及积累的多少如下表所示:

学生表(T_STUDENT):

STU_ID

(int, 主键,学号)

STU_NAME

(nvarchar(10),姓名)

STU_AGE

(int,年龄)

STU_CID

(int,外键,班级号)

1

张三

18

1

2

钱四

16

2

3

王玲

17

3

5

李飞

19

4

9

赵四

18

5

10

李可

20

6

11

张飞

18

7

12

周瑜

16

8

13

王亮

17

7

14

董庆

19

1

15

赵龙

18

2

16

李丽

20

3

班级表(T_CLASS):

CLS_ID

(int, 主键, 班级号)

CLS_JOB

(nvarchar(50), 专业名)

CLS_DEPART

(nvarchar(50), 系名)

CLS_DATE

(int, 入学年份)

1

软件

计算机

2013

2

微电子

计算机

2013

3

无机化学

化学

2014

4

高分子化学

化学

2012

5

统计数学

数学

2015

6

现代语言

中文

2016

7

国际贸易

经济

2013

8

国际金融

经济

2014

 

用 SQL 语言产生以下职能

  1. 建库、建表,供给增加主键
  2. 安排钦点的多少
  3. 寻觅全体年龄低于19岁的学子学号、姓名、年龄。
  4. 学员张三转到化学系 111
    班,请更新相关的表。
  5. 删除班级表的主键这一列。
  6. 将学员表改名叫T_STD
  7. 为班级表增多字段CLS_COUNT人数字段
  8. 为班级表增多主键。
  9. 删去班级表

 

 

mysql_4_聚合函数

转到mysqlbin目录。 

mysql数据库的备份与回复

(5State of Qatar,输入mysql回车,如若成功,将面世MySQL提示符
>。 

备份

在phpmyAdmin中应用“导出”成效将数据表的协会与数码保存为贰个.sql文件(保存格式选拔SQL)

(6卡塔尔(قطر‎,连接权限数据库:
use mysql; 。 

恢复

在phpmyAdmin中式糕点击“导入”,接收.sql文件的门径(格式接收SQL),点击推行。

 

(7),
改密码:update user set password=password(“123″) where
user=”root”;

mysql中的聚合函数

纵然对点名字段中的一列数据开展计算和平运动算的函数。

(别忘了最终加分号) 。 

GROUP BY分组

在钦定字段大校数据内容重复的笔录,聚合为黄金时代组。剔除重复的值。

示例:

SELECT * FROM student GROUP BY sSex

SELECT sName FROM student GROUP BY sAge

 

(8卡塔尔(قطر‎,
刷新权力(必需步骤):flush privileges; 。 

COUNT 计算个数

用以总结(按规范)查询出聚合后的笔录或询问的结果后生可畏共有稍许条。示例:

SELECT COUNT(*) FROM student //统计表中一共有多少条记录

SELECT COUNT(1) FROM student //同上,性能更强。

SELECT COUNT(1) FROM student WHERE sAge>17 //统计符合条件的记录总数

SELECT COUNT(1),sSex FROM student GROUP BY sSex

//将GROUP BY与COUNT两个函数结合起来使用,按性别进行分组统计。

 

(9),
退出 quit。 

AVG求平均值

格式:AVG(字段名)

对点名的字段中(一列中State of Qatar 的数据值进行求平均值的运算。

SELECT AVG(sAge) FROM student

SELECT AVG(sScore) FROM student WHERE sAge<=18

SELECT AVG(sScore),sSex FROM student GROUP BY sSex

 

 

(10),
注销系统,再进来,使用客户名root和刚刚设置的新密码123记名。

GROUP_CONCAT分组连接

将一张表中的多行记录中的钦命的字段值,连接成叁个字符串。各种值时期以逗号实行分隔。常常用于获取聚合后的各种分组中玉茭的积极分子。

SELECT GROUP_CONCAT( sName ) FROM student

//连接所有学生的姓名

SELECT GROUP_CONCAT( sName ) FROM student WHERE sAge>18

//连接所有18岁以上的学生姓名

SELECT GROUP_CONCAT(sName),sSex FROM student GROUP BY sSex

//得到所有男生和女生的名单

 

 

四,DML;数据操作语句;增加和删除改

ORDER BY排序

规行矩步钦赐的字段的值的尺寸的主次,来排列查询的结果。

SELECT * FROM student ORDER BY sScore

//通过成绩来排列学生。默认为升序(从小到大)

SELECT * FROM student ORDER BY sScore DESC

//通过成绩来排列学生。添加DESC就是降序(从大到小)

 

 

1,表的增加和删除改查

最大值最小值MAX(卡塔尔(قطر‎、MIN(卡塔尔国

在询问结果中的钦点字段中找到最大的值或纤维的值。

SELECT MAX(sScore) FROM student

//得到成绩最高分数

SELECT MIN(sScore),sSex FROM student GROUP BY sSex

//分别得到男生和女生最低分

 

 

1,进入库;

求和sum()

在查询结果中对点名字段的值求和。

SELECT SUM(sSCore) FROM student

//全班总分

SELECT SUM(sSCore),sSex FROM student GROUP BY sSex

//查看男生总分和女生总分

 

 

use
库名称;

小练习:

1、用Create指令创造三个产物发卖记录数据表,满含字段:产物名、出卖地区、发售数目、出售金额。(10分卡塔尔国

2、假诺本集团贩售的成品独有三种,出卖地区也唯有四个。用insert语句插入十条产物出卖记录。(产品与发卖地区一定有双重值。)(15分卡塔尔

3、总括各种产物的发售总额(10分卡塔尔(قطر‎

4、总括每一种产物的平均出售额。(10分State of Qatar

5、总括每一个付加物的行销总的数量据。(10分卡塔尔

6、在各种地点发售的种种成品的名目,连接成一个以逗号分隔的字符串。(15分卡塔尔

7、同一时间总计每一种付加物的最大出售额。(10分卡塔尔国

8、计算成品在种种地点的最低发卖额。(10分卡塔尔(قطر‎

9、获得总发卖额。(10分卡塔尔

 

 

 

 

 

 

 

mysql_尖端查询

2,创建表;

数量过滤通配符

通配符,便是指能够通用的卓殊其余字符的标记。

create table
student(表结构 类型,表结构 类型);

%通配符

%代表私行个数的任一字符,它日常是用在select语句中与LIKE关键同盟使用的。

5,删除表;

示例:

SELECT * FROM student WHERE sName LIKE '王%'

 

查找全数姓王的上学的儿童

LIKE关键字在这里处代表模糊查询,不是像=那样必得完全相配。

 

SELECT * FROM student WHERE sName LIKE '%五'

 

探究以“五”字最终的数码

 

SELECT * FROM student WHERE sName LIKE '%老%'

 

追寻中间含有“老”字的字符。

留意:尽管数据的始发或最终为空,依旧能够宽容到多少,因为%不但代表私行个数的随机字符,它相近也能够象征未有字符。

drop table
表名称

注意事项:

1、%不但代表专断个数的轻便字符,它也能够空字符。

2、数据尾巴部分的空格恐怕会苦恼通配符的寻觅,比方:现成数据’abc
 ’,若是它最后有一个或八个空格的话,则
%abc将不会查找到该数据,因为后边多余的空格也是字符。消除方法是上下都加上%。

3、%不能够相配null值。

 

6,改善表名称;

_(下划线)通配符

_ 通配符的职能与%相近,但是它一定要同盟单个任性字符。

 

alter table 表名称
rename 新表名称;

示例:

SELECT * FROM student WHERE sName LIKE '小_'

SELECT * FROM student WHERE sName LIKE '小__'

 

寻找以“小”起初的事后自由三个字符的多寡,何况必得是四个字。

 

潜心:下划线与%差异的是前者不相称字符,必需得有二个字符本事合营。

 

SELECT * FROM student WHERE sName LIKE '_老_'

 

 

7,查看表;

SELECT 查询中的关键字

show
tables;

in关键字

在一个会集中开展相称,只要数据与聚聚集的自便大器晚成项雷同,就认为数据知足条件。

 

SELECT * FROM student WHERE sAddress IN('北京','西安','天津','山东')

 

追寻地址是 法国巴黎,罗利,丹佛 或 西藏的上学的小孩子音讯

 

9,查看新添表的正统写法;

limit关键字

limite后边需求跟多少个数字,代表从钦定的笔录初叶(使用数据记录在概略上的程序并不是ID),查找多少条记下出来。

show create table
表名称;

注意:

1、 次序是从0开首的,约等于说第一条记下的序号是0

2、 这里的序号不对等ID,它独自是象征排列次序。

3、 LIMIT关键字是mysql所独有的,例如:mssql和Oracle中就从不Limit关键字。

 

SELECT * FROM student LIMIT 3,2

 

从第4条记下开首,获取之后的两条记下。

 

2,字段增加和删除改;

join关键字 – 链表

join关键字用于在数据库中况兼询问多张存在涉嫌关系的数据表。

 

1,增多字段;

as关键字

用于对字段段取四个小名

SELECT sName as '姓名',sAge as '年龄',sAddress as '地址' FROM student

 

 

alter table
字段名称 add 定义列;

多表查询

2,修正字段;

内连接

正是指仅仅查询两张表中有涉嫌关系的数据,而并未有提到关系的数量是不会被询问出来的。

 

 
   

 

alter table 表名称
change 旧字段名称 新字段名 类型;

方式一:select同时from多张多

在select的from语句后同不经常间写入多张表的名字,然后在where条件语句中写入多表之间的接二连三条件。

 

示例:

SELECT * FROM student,score WHERE student.sid = score.sid

 

在乎:内三回九转之中,要分主表和附表,附表只是用来对主表所紧缺的情节开展抵补,比如上例中,主表是学员成绩,student学生只是在补偿主表中非常不足的上学的儿童姓名等数码。

SELECT

student.sName as '姓名',

   student.sAge as '年龄',

   score.sProject as '科目',

   score.score+10 as '成绩',

   score.sid as '编号'

FROM student,score

WHERE student.sid = score.sid

 

 

在多表查询的时候,为了防止由于字段名重复而发出错误,我们得以在字段名后面加上表名,以示区分。

 

3,
删除字段;

方法二:inner join

应用inner join同样能够形成上例中的功用,何况主表与附表、连接条件一览无余。INNE奥迪Q5 JOIN子句的前头是主表,前边是附表,ON后边是表连接的尺码。

 

SELECT

   student.sName as '姓名',

   student.sAge as '年龄',

   score.sProject as '科目',

   score.score as '成绩',

   score.sid as '编号'

FROM score INNER JOIN student

ON score.sid = student.sid

 

 

只顾:省略INNE奥迪Q7直接写JOIN关键字,也是当中连接。

 

alter table 表名称
字段名;

左连接

在两张表联合查询的时候,小编要呈现主表中包涵未有提到关系的多寡在内的富有数据。

 

SELECT * FROM score

LEFT JOIN student

ON score.sid = student.sid

 

 
   

 

4,查看字段构造;

右连接

查询附表(JOIN关键字之后的表卡塔尔中蕴藏没有关联关系的多寡在内的具有数据。

SELECT * FROM score

RIGHT JOIN student

ON score.sid = student.sid

 

desc
表名称;

多张表连接

示例:

SELECT * FROM score

INNER JOIN student ON score.sid = student.sid

INNER JOIN class ON student.cid = class.cid

 

3,增加数量;

透过重大字IN来开展关联合检查询

询问全数数学成绩在60分以上的上学的小孩子的音信。

Select * from student where

sid in

(

    SELECT sid FROM score

    WHERE score >60 And sProject = '数学'

)

 

IN在这里处表示,sid必得与(卡塔尔国内的查询结果之一相等。

 

1,扩充对应数据;

insert into
表名称(字段1,字段2……..卡塔尔国values(‘j138’,”红瓦寺”…….卡塔尔(قطر‎接受插入某个列;

2,扩大某行数据

insert into
classes values(null,’j139′,”红瓦寺”卡塔尔国 插入全部列,自增粘以null占位

3,扩充全数多少

INSERT INTO
t_student VALUES

(1,’张三’,20,’男’),

(2,’李四’,25,’男’),

(3,’王五’,19,’女’)

4,
拷贝数据

从classes表中查询全数的class_name
插入到className表中的(class_name)字段

insert into
新表名(新字段名State of Qatar select 旧字段名 from 旧表名

insert into
className(class_name) select class_name from classes

4,矫正数据;

1,改善某行的数码

update 表名称 ste
字段名,字段名=值 where id;

UPDATE 表名 SET
列1=新值1,列2=新值2 WHERE 过滤条件

2,修改某列的有些数据

UPDATE classes set
class_name=null where class_id=3

” 和null
同样吧?? 严谨意义相当小器晚成致

5,删除数据;

1,删除意气风发行数据

delete form 表名称
where id;

2,删除年龄在18-20

DELETE FROM
t_student WHERE 年龄 BETWEEN 18 AND 20

delete from
student where age>=18 and age<=20

6,注意

1,t_代表表名;字段
印度语印尼语 田野(field卡塔尔

2,f_表示字段名;表格
匈牙利(Magyarország卡塔尔语 table

3,pk_表示主键;主键约束primary
key

4,fk_意味着外键;外键格式
foreign key;

5,外键名法规;FK_本表名_与之提到的表的名字

6,有主从表的时候数据插入先插主表,在插从表;有外键的是主表

7,sql语句中也得以用true和flas,true表示1肖似代表男,flas表示0日常代表女,是int型

五,DCL;数据调节语句;调控

1,索引

1,创设索引;

create index
索引名称 on 表名称(列名称,列名称…….卡塔尔;二个表能够有三个目录;

2,删除索引;

alter table
student drop index 索引名称;

3,特点;数据的立异和目录的立异是联合的

何足为奇索引可以加到多列上

4,索引的缺欠;

数码与索引的修改是生龙活虎道的,假使整个数码都有目录就能稳中有降效能;

目录是以文件格局存在的,索引过多文本会超大;

2,数据库的数据完整性;

担保每行所表示的实体能相互不同,不能够存两条风度翩翩抹相通的

1,主键节制(primary
key卡塔尔(قطر‎非空不能够重复;贰个表只好有一个主键三个主键可以有几个列

2,唯生龙活虎限制(unique)钦定的列非空的不可能重新

3,非空约束(not
null)钦赐的列无法为空;

4,钦点数量(default)钦点的数额能够改正;

5,内定有效数据(check(第三个数据
or 第贰个数据格式(健名=值)卡塔尔(قطر‎)

不是第一个数据必得是首个数据,不可能有第三个数据出现

(在mysql中没用,援救创造但未有功能)

6,auto_increment;主键自增加;

3,外键

1,创造三个表,在表中外键字段与上一个涉及表绑定

class_id
int,

CONSTRAINT 外键名
FOREIGN key(要把外键给那一个字段的字段名卡塔尔国

REFERENCES
关系表的表民(主键)

CONSTRAINT
FK_student_classId FOREIGN key(class_id)

REFERENCES
classes(class_id)

2,怎么给已存在的表增多外键限制

1,增添要连的键

alter table 表名
add 字段 类型

alter table test
add class_id int

2,添加CONSTRAINT

alter table 表名
add CONSTRAINT 外键名

FOREIGN
key(要把外键给那多少个字段的字段名State of QatarREFERENCES 关系表的表民(主键卡塔尔国

alter table test
add CONSTRAINT FK_TEST_CLASSID

FOREIGN
key(class_id) REFERENCES classes(class_id)

3,删除此之外键

alter table 表名
drop FOREIGN key 外键名

alter table test
drop FOREIGN key FK_TEST_CLASSID

4,外键命名准则

1,风度翩翩对风姿罗曼蒂克唯豆蔻年华外键关联,风流倜傥对一一定要确认保障外键唯风姿罗曼蒂克性,加唯风华正茂性限定

增;主键在何人身上就先扩张什么人;

删;外键在什么人身上就先删哪个人;

2,大器晚成对多外键必得统筹在绝大部分身上

增;先增主表后增从表

删;先删从表在删主表

3,多对多,需求新建中间表来保存对应涉及表,外键咋中间关系表身上

增;先增两表,在增中间表

删;先删中间表,再删两表

4,注意

1,叁个外键对应二个主键,外键和外键限制是分别的,

2,外键必得链接主键(many2one)

3,联合主键写法;一个表只可以有多少个主键,但叁个组键能够有多个列

primark(第三个主键,第叁个主键卡塔尔国;

4,主键的特点

主键非空唯大器晚成,

主键不能够被涂改,

主键无法为不设有,

不能够被工作操作

六,DQL;数据查询语句;查

1,where
条件;

1,比较符号;

>,<
,>=, <= ,!=,(<>也意味不对等)

2,逻辑比较

and 并且

or 或者

between 下线 and
上线

like 模式
格式;

like
“_”下划线代表单个字符

like“1%2%3”
代表私行字符123处都足以增添关键字

in(卡塔尔(قطر‎只取(卡塔尔(قطر‎中的字符;(1,2,3State of Qatar只能取123

not in(卡塔尔国不取(卡塔尔(قطر‎中的;not;非的意思

2,排序(order
by)
,asc;代表升序,desc;代表降序

order by 排序的列
asc // 永世写在最终整个查询的最后

limit 1,3;limit
起首地点,截取长度。

3,分组

在where前边加group by
按如何项目分组与count联合利用

selsct count(*)from 表名 group by 分组的门类,按怎么样分组;

分组后也能过滤用having分组后再来筛选,where写在分组前,having写在分组后

分组后只好与与分组相关的结果级打字与印刷;

4,mysql聚合函数

1,sun();求和;

select sun(all
求哪一列的和卡塔尔(قطر‎ from 表名称

2,avg();
平均值;

select avg(all
求哪一列的平均值卡塔尔 from 表名称

3,max();最大值;

select max(all
求哪一列的最大值卡塔尔 from 表名称

4,min();最小值;

select min(all
求哪一列的最小值State of Qatar from 表名称

5,concat(卡塔尔(قطر‎;字符串拼接,平常少之又少在mysql上运用

concat(要拼接的数量卡塔尔;

6,注意

all;表示非空,也是mysql暗中同意值

*;表示整个

distinct;表示具有非空不重复的值

5,单表查询

select 列 from 表
where ID=数据 order by pk_playerid desc;

order by 列
desc;排序 desc降序,asc升序

6,子查询

1,在select后面增添子查询

select ( select
列名 from表1) from 表1 ;

只好查一列,多行;不经常用,功能低

2,在from前面加多子查询

select 某列 from
( select 列名 from表1) ;

把查出来的结果真是一张表,再查这张表的多寡;不常用,成效低

3,在where后面增多子查询

select 列 from 表
where 列=(select 列 from 表1 where 列=数据) ;

只可以查单行单列,用in时能够查单列多行,有
in 就有 not in

select 列 from 表
where 列=all (select 列 from 表1 where 列=数据);

亟待和子查询的结果和某列的结果逐个比较后拾贰分则打字与印刷

select 列 from 表
where 列=any (select 列 from 表1where 列=数据);

倘使知足二个就足以打字与印刷,无法等于它自己

select 列 from 表
where exsits (select 列 from 表1where 列=数据);

风姿洒脱经数额存在则打字与印刷,不能等于它自个儿;
not exsits;相反,假诺数量一纸空文则打字与印刷

4,子查询,要开销越来越长的实行时间,当数据量扩大时,奉行时间会激烈加长,

7,链接查询查,

1,两张表的数量;通过多张表共有的字段查找多张表共有的并集,

共有字段必定要八个表中皆有技能找到

select * from
表名1,表名2 where 外键ID=主键ID and 某生机勃勃行条的件;

2,三张表查询例子

select  a.uid,a.uname,a.upsw

 from table1 a,table2 b, table3 c 

where a.sems_role_rid=b.rid and a.udeptid=c.deptid

8,外链接查询,

1,查两张表的数量;select
* from 表1 left join 表2 on 外键ID=主键ID where 列=”数据”

2,三张表查询例子(left
join 表 on 外键拼接)

select * from t_team

left
join t_player on pk_teamid=fk_teamid

left
join t_group on pk_teamid=fk_groupid

where f_teamName=”法国队”

9,注意

1,is;是“是”的意思(is
null)=是空

2,as;取别称;mysq中as可以被总结

3,not;非空

4,select;投影,投歌后做的操作都不会变动物理数据;

5,select * from
表名

*代表列的字段名名几个用“,”隔开分离,间接用*代表查询全部;

相仿少之又少用*因为功用低;

6,distinct;去掉重重新恢复生机设置置,去重后不可能和任何数据一同呈现,

七,数据库类型;

1,整数

tinyint;1个字节;寄放128-127限量的平头;有标识

比如: 年纪

smalint;
2个字节;存放-3二〇〇三到 +32002范围的整数;

比如: 年纪,数量

int
;4个字节,存放-二零零零000000 到 +二零零四000000 范围的整数;

例如: 距离

bigint;8个字节;积攒不可能用smalint
或 int描述的一点都超大整数。

比如说: 科学/数学数据

2,浮点

afloat;4字节
单精度浮点型数据 存款和储蓄小数数据

例如:测量,温度

double;8字节
双精度浮点型数据 供给双精度存储的小数数据

例如:科学数据

decimal(m,b卡塔尔国;客户自定义精度的浮点型数据
(m长度,b精度卡塔尔(قطر‎以超级高的精度存款和储蓄小数数据.

3,字符

char(位数State of Qatar;固定长度的字符串
特定字符串长度(高达255字 符卡塔尔(قطر‎

存储日常满含预约义字符串的变量 比如: 按期航空线,国家或邮政编码

varchar(位数卡塔尔国;
具有最大面积的可变长度的字符串 变量;

实际字符串长度 (高达 255 字 符卡塔尔(قطر‎比方:名字,密码,短文标签

text;
未有最大尺寸约束的可变长度Variable; (寄存655三十八个字符卡塔尔国

仓库储存大型文本数据

MEDIUMBLOB;(存放2的21次方个字符);

enumcvall(a,b,c…….卡塔尔国;列枚举-约束有限值

4,时间

year;1字节;格式YYYY;范围1901-2155

date;3字节;格式YYYY-MM-DD;范围1000-01-9999-12-31

timestamp;4字节;

5,二进制大额,二进制大对象

1,TINYBLOB;255字节;0-255字节;

2,BLOB;5k;0-65k;

3,medfumblob;16m;0-16m;

4,longblob;4g;0-4g;

八,关周密据库的二种设计范式介绍

1、第黄金时代范式(1NF)

1,在别的三个关周详据库中,第后生可畏范式(1NF)是对关乎格局的着力要求,

不满足第意气风发范式(1NF)的数据库就不是关周详据库。所谓第豆蔻梢头范式(1NF)

是指多少库表的每一列都以不可分割的基本数据项,同一列中无法有多个值,

即实体中的某些属性不能够有多少个值或然无法有重复的属性。

2,借使现身重复的特性,就也许供给定义四个新的实体,新的实业由重复的质量构成,

新实体与原实体之间为意气风发对多关系。在首先范式(1NF)

中表的每生机勃勃行只包罗二个实例的音讯。

2、第二范式(2NF)

其次范式(2NF)是在首先范式(1NF)的底子上成立起来的,

即满意第二范式(2NF)必得先满意第风姿洒脱范式(1NF)。

其次范式(2NF)供给数据库表中的各样实例或行必需能够被唯风姿浪漫地有别于。

为促成区分平时供给为表加上四个列,以存款和储蓄各类实例的并世无两标志。

3、第三范式(3NF)

满意第三范式(3NF)必须先满意第二范式(2NF)。简单来讲,第三范式(3NF)

务求二个数据库表中不分包已在别的表中已包括的非主关键字音讯。

mysql笔记

一,补充

cd
;dos窗口查看文件夹,盘与盘之间无需cd

has
a;生命周期,具备,本身的

use
e;使用,传进来的

and;和

is e;是

byte
;+127——-128;127+1取返=-128;

ip

本机ip;127.0.0.1

mysql
–version;命令窗口询问mysql版本(管理员运维命令窗口)

二,mysql基础

1,数据库;

1,储存数据以致数据结构的厂库。(db);

2,数据库是单独;

2,数据库是用来管理,查询,积攒数据的;

1,实体;表名,依据目的来划分

2,属性;字段

3,数据库体系;关系型,非关系型,档次型,网状型

3,编码设置;

gbk;中日西班牙语言

gb1312;中文

utf8;大型编码;

4,私下认可引擎;

INNODB;默认的

数据表的引擎日常都要设成INNODB

5,常用的有个别数据库

sqlserver
,access是微软的数据库

oracle,mysql,java都是oracle公司的

dbz
是IMB公司的

sybase
是sybase公司的;

三,DDL;数据定义语句;设计语句

1,基本命令

1,登录;mysql -h
localhost -uroot -p

2,退出;exit

3,查看当前时光日期;select
now(卡塔尔(قطر‎;

4,当今日子;select
curdate(卡塔尔;

5,当前光阴;select
curtime(State of Qatar;

6,打印版本新闻;select
version(State of Qatar;

7,查看当前顾客;select
user(卡塔尔(قطر‎;

8,运营mysql后台服务(管理员运维命令窗口);

net start
mysql;

9,关闭mysql后台服务(管理员运营命令窗口);

net stop
mysql;

2,操作库

1,查看数据库;show
databases;

2,制造数据库;create
database 库名 字符集;

3;删除数据库;drop
database 库名;

3,改进数据库密码账户登陆密码

1,用SET PASSWORD命令

set
password for 用户名@localhost = password(‘新密码’); 

2,用mysqladmin

mysqladmin
-u用户名 -p旧密码 password 新密码 

3,用UPDATE直接编辑user表

mysql>
use mysql; 

mysql>
update user set password=password(‘123’) where

user=’root’
and host=’localhost’; 

mysql>
flush privileges; 

4,在忘记root密码的时候,能够那样

(1卡塔尔,
关闭正在运行的MySQL服务。 

(2),
打开DOS窗口,转到mysqlbin目录。 

(3),输入mysqld
–skip-grant-tables 回车。

–skip-grant-tables
的意思是运行MySQL服务的时候跳过权限表认证。 

(4State of Qatar,再开一个DOS窗口(因为刚刚十一分DOS窗口已经无法动了),

转到mysqlbin目录。 

(5卡塔尔国,输入mysql回车,假若成功,将现身MySQL提示符
>。 

(6卡塔尔(قطر‎,连接权限数据库:
use mysql; 。 

(7),
改密码:update user set password=password(“123″) where
user=”root”;

(别忘了末了加分号) 。 

(8State of Qatar,
刷新权力(必需步骤):flush privileges; 。 

(9),
退出 quit。 

(10State of Qatar,
注销系统,再步入,使用顾客名root和刚刚设置的新密码123报到。

四,DML;数据操作语句;增加和删除改

1,表的增加和删除改查

1,进入库;

use
库名称;

2,创建表;

create table
student(表结构 类型,表结构 类型);

5,删除表;

drop table
表名称

6,改革表名称;

alter table 表名称
rename 新表名称;

7,查看表;

show
tables;

9,查看新扩张表的标准写法;

show create table
表名称;

2,字段增加和删除改;

1,增多字段;

alter table
字段名称 add 定义列;

2,修改字段;

alter table 表名称
change 旧字段名称 新字段名 类型;

3,
删除字段;

alter table 表名称
字段名;

4,查看字段布局;

desc
表名称;

3,增加数码;

1,增添对应数据;

insert into
表名称(字段1,字段2……..卡塔尔values(‘j138’,”红瓦寺”…….State of Qatar选用插入有些列;

2,扩充某行数据

insert into
classes values(null,’j139′,”红瓦寺”State of Qatar 插入全体列,自增粘以null占位

3,扩张整个数额

INSERT INTO
t_student VALUES

(1,’张三’,20,’男’),

(2,’李四’,25,’男’),

(3,’王五’,19,’女’)

4,
拷贝数据

从classes表中询问全部的class_name
插入到className表中的(class_name)字段

insert into
新表名(新字段名卡塔尔国 select 旧字段名 from 旧表名

insert into
className(class_name) select class_name from classes

4,改正数据;

1,改良某行的数据

update 表名称 ste
字段名,字段名=值 where id;

UPDATE 表名 SET
列1=新值1,列2=新值2 WHERE 过滤条件

2,校订某列的某些数据

UPDATE classes set
class_name=null where class_id=3

” 和null
相同吧?? 严谨意义不一致

5,删除数据;

1,删除风度翩翩行数据

delete form 表名称
where id;

2,删除年龄在18-20

DELETE FROM
t_student WHERE 年龄 BETWEEN 18 AND 20

delete from
student where age>=18 and age<=20

6,注意

1,t_代表表名;字段
爱尔兰语 田野先生

2,f_代表字段名;表格
乌克兰语 table

3,pk_表示主键;主键节制primary
key

4,fk_意味着外键;外键格式
foreign key;

5,外键名准则;FK_本表名_与之提到的表的名字

6,有主从表的时候数据插入先插主表,在插从表;有外键的是主表

7,sql语句中也得以用true和flas,true表示1貌似代表男,flas表示0平常代表女,是int型

五,DCL;数据调节语句;调控

1,索引

1,成立索引;

create index
索引名称 on 表名称(列名称,列名称…….State of Qatar;一个表能够有八个目录;

2,删除索引;

alter table
student drop index 索引名称;

3,特点;数据的立异和目录的换代是同步的

平日性索引能够加到多列上

4,索引的毛病;

多少与索引的创新是一齐的,假如全勤数额都有目录就能下跌效用;

目录是以文件格局存在的,索引过多文件会非常的大;

2,数据库的数据完整性;

担保每行所代表的实业能相互不一致,不可能存两条意气风发抹相像的

1,主键限定(primary
key卡塔尔非空不可能再度;三个表只好有二个主键三个主键能够有多少个列

2,唯生龙活虎节制(unique)钦定的列非空的不可能重新

3,非空限制(not
null)钦点的列无法为空;

4,钦点数量(default)钦命的数目能够改动;

5,内定有效数据(check(第贰个数据
or 第叁个数据格式(健名=值)卡塔尔)

不是第叁个数据必需是第一个数据,无法有第八个数据出现

(在mysql中没用,扶持创造但毫无意义)

6,auto_increment;主键自增进;

3,外键

1,创立八个表,在表中外键字段与上三个涉嫌表绑定

class_id
int,

CONSTRAINT 外键名
FOREIGN key(要把外键给那些字段的字段名卡塔尔

REFERENCES
关系表的表民(主键)

CONSTRAINT
FK_student_classId FOREIGN key(class_id)

REFERENCES
classes(class_id)

2,怎么给已存在的表加多外键约束

1,增添要连的键

alter table 表名
add 字段 类型

alter table test
add class_id int

2,添加CONSTRAINT

alter table 表名
add CONSTRAINT 外键名

FOREIGN
key(要把外键给那么些字段的字段名卡塔尔(قطر‎REFERENCES 关系表的表民(主键State of Qatar

alter table test
add CONSTRAINT FK_TEST_CLASSID

FOREIGN
key(class_id) REFERENCES classes(class_id)

3,删除此之外键

alter table 表名
drop FOREIGN key 外键名

alter table test
drop FOREIGN key FK_TEST_CLASSID

4,外键命名法则

1,大器晚成对生机勃勃唯朝气蓬勃外键关联,风流倜傥对一必须要保证外键唯意气风发性,加唯风度翩翩性限制

增;主键在什么人身上就先增添哪个人;

删;外键在何人身上就先删何人;

2,豆蔻梢头对多外键必需设计在绝大部分身上

增;先增主表后增从表

删;先删从表在删主表

3,多对多,须求新建中间表来保存对应涉及表,外键咋中间关系表身上

增;先增两表,在增中间表

删;先删中间表,再删两表

4,注意

1,一个外键对应叁个主键,外键和外键约束是抽离的,

2,外键必得链接主键(many2one)

3,联合主键写法;一个表只好有贰个主键,但叁个组键可以有三个列

primark(第4个主键,第2个主键卡塔尔;

4,主键的特征

主键非空唯朝气蓬勃,

主键不能够被纠正,

主键不可能为不设有,

无法被工作操作

六,DQL;数据查询语句;查

1,where
条件;

1,比较符号;

>,<
,>=, <= ,!=,(<>也象征不对等)

2,逻辑相比

and 并且

or 或者

between 下线 and
上线

like 模式
格式;

like
“_”下划线代表单个字符

like“1%2%3”
代表私自字符123处都得以增多关键字

in(卡塔尔国只取(State of Qatar中的字符;(1,2,3卡塔尔(قطر‎只可以取123

not in(卡塔尔(قطر‎不取(卡塔尔国中的;not;非的情趣

2,排序(order
by)
,asc;代表升序,desc;代表降序

order by 排序的列
asc // 永久写在最后整个查询的末段

limit 1,3;limit
初始地点,截取长度。

3,分组

在where前边加group by
按怎么着类型分组与count联合利用

selsct count(*State of Qatarfrom 表名 group by 分组的类型,按怎么着分组;

分组后也能过滤用having分组后再来筛选,where写在分组前,having写在分组后

分组后只能与与分组相关的结果级打字与印刷;

4,mysql聚合函数

1,sun();求和;

select sun(all
求哪一列的和卡塔尔国 from 表名称

2,avg();
平均值;

select avg(all
求哪一列的平均值State of Qatar from 表名称

3,max();最大值;

select max(all
求哪一列的最大值卡塔尔国 from 表名称

4,min();最小值;

select min(all
求哪一列的最小值卡塔尔(قطر‎ from 表名称

5,concat(State of Qatar;字符串拼接,平时非常少在mysql上运用

concat(要拼接的数据卡塔尔(قطر‎;

6,注意

all;表示非空,也是mysql默许值

*;表示一切

distinct;表示全数非空不重复的值

5,单表查询

select 列 from 表
where ID=数据 order by pk_playerid desc;

order by 列
desc;排序 desc降序,asc升序

6,子查询

1,在select前边加多子查询

select ( select
列名 from表1) from 表1 ;

只好查一列,多行;不经常用,成效低

2,在from后面加多子查询

select 某列 from
( select 列名 from表1) ;

把查出来的结果真是一张表,再查那张表的多寡;一时用,功能低

3,在where前面增添子查询

select 列 from 表
where 列=(select 列 from 表1 where 列=数据) ;

只好查单行单列,用in时得以查单列多行,有
in 就有 not in

select 列 from 表
where 列=all (select 列 from 表1 where 列=数据);

亟待和子查询的结果和某列的结果逐个比较后约等于则打字与印刷

select 列 from 表
where 列=any (select 列 from 表1where 列=数据);

只要知足一个就可以打字与印刷,无法等于它本身

select 列 from 表
where exsits (select 列 from 表1where 列=数据);

设若数据存在则打字与印刷,不可能等于它本人;
not exsits;相反,假如数据荒诞不经则打字与印刷

4,子查询,要费用更加长的施行时间,当数据量扩充时,执行时间会刚烈加长,

7,链接查询查,

1,两张表的数量;通过多张表共有的字段查找多张表共有的并集,

共有字段应当要两个表中都有手艺找到

select * from
表名1,表名2 where 外键ID=主键ID and 某风流倜傥行条的件;

2,三张表查询例子

select  a.uid,a.uname,a.upsw

 from table1 a,table2 b, table3 c 

where a.sems_role_rid=b.rid and a.udeptid=c.deptid

8,外链接查询,

1,查两张表的数量;select
* from 表1 left join 表2 on 外键ID=主键ID where 列=”数据”

2,三张表查询例子(left
join 表 on 外键拼接)

select * from t_team

left
join t_player on pk_teamid=fk_teamid

left
join t_group on pk_teamid=fk_groupid

where f_teamName=”法国队”

9,注意

1,is;是“是”的意思(is
null)=是空

2,as;取外号;mysq中as能够被轻便

3,not;非空

4,select;投影,投视后做的操作都不会更改物理数据;

5,select * from
表名

*表示列的字段名名多个用“,”隔离,直接用*表示查询全部;

通常相当少用*因为效能低;

6,distinct;去掉重重新初始化置,去重后不可能和其余数据一齐显示,

七,数据库类型;

1,整数

tinyint;1个字节;存放128-127约束的卡尺头;有号子

比如: 年纪

smalint;
2个字节;存放-3二零零二到 +32002限量的整数;

比如: 年纪,数量

int
;4个字节,寄存-二零零四000000 到 +二零零零000000 范围的整数;

例如: 距离

bigint;8个字节;积攒不可能用smalint
或 int描述的超级大整数。

比如: 科学/数学数据

2,浮点

afloat;4字节
单精度浮点型数据 存款和储蓄小数数据

例如:测量,温度

double;8字节
双精度浮点型数据 须要双精度存款和储蓄的小数数据

诸如:科学数据

decimal(m,b卡塔尔;客商自定义精度的浮点型数据
(m长度,b精度卡塔尔以非常高的精度存款和储蓄小数数据.

3,字符

char(位数卡塔尔(قطر‎;固定长度的字符串
特定字符串长度(高达255字 符卡塔尔国

积累平常富含预订义字符串的变量 比方: 准时航空线,国家或邮政编码

varchar(位数卡塔尔国;
具备最大规模的可变长度的字符串 变量;

实际上字符串长度 (高达 255 字 符卡塔尔(قطر‎比如:名字,密码,短文标签

text;
未有最大尺寸节制的可变长度Variable; (存放655三拾个字符卡塔尔(قطر‎

积攒大型文本数据

MEDIUMBLOB;(贮存2的22次方个字符);

enumcvall(a,b,c…….卡塔尔(قطر‎;列枚举-约束有限值

4,时间

year;1字节;格式YYYY;范围1901-2155

date;3字节;格式YYYY-MM-DD;范围1000-01-9999-12-31

timestamp;4字节;

5,二进制大数量,二进制大对象

1,TINYBLOB;255字节;0-255字节;

2,BLOB;5k;0-65k;

3,medfumblob;16m;0-16m;

4,longblob;4g;0-4g;

八,关全面据库的三种设计范式介绍

1、第生龙活虎范式(1NF)

1,在别的多个关周密据库中,第生机勃勃范式(1NF)是对事关情势的骨干须要,

不满足第生机勃勃范式(1NF)的数据库就不是关全面据库。所谓第生龙活虎范式(1NF)

是指多少库表的每一列都以不可分割的骨干数据项,同一列中不能够有多个值,

即实体中的有些属性无法有八个值可能无法有双重的性质。

2,假如现身重复的属性,就恐怕供给定义贰个新的实体,新的实体由重复的性质构成,

新实体与原实体之间为一对多涉及。在率先范式(1NF)

中表的每风华正茂行只含有一个实例的新闻。

2、第二范式(2NF)

第二范式(2NF)是在率先范式(1NF)的根底上制造起来的,

即满足第二范式(2NF)必需先满意第大器晚成范式(1NF)。

第二范式(2NF)须求数据库表中的各样实例或行必得能够被唯生龙活虎地有别于。

为促成区分日常须要为表加上一个列,以存款和储蓄各类实例的唯风度翩翩标记。

3、第三范式(3NF)

满足第三范式(3NF)必须先满足第二范式(2NF)。简单的讲,第三范式(3NF)

务求贰个数据库表中不包蕴已在别的表中已包涵的非主关键字新闻。

admin

网站地图xml地图