您的位置:永利集团登录网址 > 永利集团登录网址 > MySql学习笔记永利游戏平台

MySql学习笔记永利游戏平台

2019-10-02 07:40

mysql数据库基础知识

mysql笔记

数据库操作(DDL)

哪些是数据库

数据库看名就能够猜到其意义,就是用来存储数据的工具,用三个比重形象的事例来比喻,正是Excel,三个Excel文件就足以看成是多少个数据库。

一,补充

数据库的始建

CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [[DEFAULT] CHARACTER SET [=] charset_name]

例如:

CREATE DATABASE IF NOT EXISTS  test_db DEFAULT CHARACTER SET utf8

关系型数据库

纵然以行与列构成的二维数据表的格局,用来储存数据的,并且将多张数据表存款和储蓄在三个单元中的存款和储蓄格局,就称为关系型数据库。

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

翻看当前服务器下的数据库列表

SHOW { DATABASES | SCHEMAS }

数据表

由行与列构成的二维结构的存款和储蓄数据的表格。

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

翻开数据库的概念

SHOW CREATE  { DATABASE | SCHEMA } db_name

记录

不畏数据表中央银行,一暴行数据大家就叫做一条数据记录。

经常说来来讲,每条数据记录都有贰个ID号,大家能够把那么些id精通成是excel中的行号,用来对每条记下进行区分与标识。

use e;使用,传进来的

查看上一步操作的警戒音信

SHOW WARNINGS

主键

有的是时候大家将id称为主键,主键那是指那张表的排列顺序的依附。

and;和

去除数据库

DROP  { DATABASE | SCHEMA } [IF EXISTS] db_name

字段

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

每三个字段都亟需钦命三个称呼,用来证实该列数据的作用,就叫作字段名。

is e;是

开发数据库

USE db_name

常用的数据库的项目

Mysql 质量大胆,可避防费使用。

MSSQL server 微软公司的数据库软件,通常用于搭配微软类其他编程语言。

Access是office的办公套件之一。

Oracel 品质非强悍,也十三分高昂。

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

修改数据库的编码格局

ALTER { DATABASE | SCHEMA }  db_name [DEFAULT] CHARACTER SET [=] charset_name

安装与利用mysql

设置mysql的法子相当多,大家利用phpstudy那么些软件来设置php + mysql的运转条件。安装之后,大家就有着了mysql的服务。何况还会有三款mysql顾客端。

 

Mysql分为用户端与服务端。服务端仅仅用于对软件程序提供数据通讯,普通客商不可能直接看看个中的多少内容。

 

顾客端用来将服务端的数量,以客户能够领悟的办法浮今后其分界面上。

 

ip

数据表操作

phpMyAdmin

phpMyAdmin是最常用的mysql客商端,它是依照php语言的。

在桌面右下角的phpstudyLogo上右击弹出菜单中接纳phpMyAdmin就能够运转踏入了。运转之后,要求输入客户与密码实行登录,暗中认可的客户名密码都以root。

 

本机ip;127.0.0.1

MYSQL中的数据类型

新建数据库

1、 要钦命数据库的名称。

2、 平常选取utf8_unicode_ci字符集,在独有中文的情况下,可以选拔gbk_chinese_ic或gb2312_chinese_ci 。

 

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

卡尺头品类

数据类型 存储范围 字节
TINYINT 有符号值-128~127;无符号值 0~255; 1
SMALLINT 有符号值-32768~32767;无符号值 0~65535; 2
MEDIUMINT 有符号值-8388608~8388607;无符号值 0~16777215; 3
INT 有符号值-2147483648~2147483647;无符号值 0~4294967295; 4
BIGINT 有符号值-9223372036854775808~9223372036854775807;无符号值 0~18446744073709551615L; 8
BOOL,BOOLEAN 等同于TINYINT(1),0为FALSE ,其余为TRUE 1

新建数据表

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

2、 钦点数据表的字段,也正是列。在钦赐字段的长河中大家要对字段增加字段名、数据类型、数据长度、是不是是主键、是或不是自增。(许多情状下,主键是名称叫id的大背头类型,并且是自增的。)

3、 为字段内定这一列的数据类型。

二,mysql基础

浮点类型

数据类型 存储范围 字节
FLOAT[(M,D)] 负数取值范围为-3.40E+38~-1.17E-38,0,1.175E-38~3.40E38;M是数字总位数,D是小数点后面的位数,若M,D被省略,根据硬件限制来保存值。 4
DOUBLE[(M,D)] -1.79E+308~2.22E-308,0,2.22E-308~1.79E308 8
DECIMAL[(M,D)] 和DOUBLE一样,内部以字符串形式存储数值 M+2

自增auto_increment

自增字段中平时寄放的是整数类型的数据,用于表示数据库中的记录的序号。

自增字段的值不必要手动输入,个中的数码是自行发出的,每当向那表里面增多一条新记录的时候,自增字段会自动收取上一行字段值,然后加一,作为新记录的主键值。(主键相对不会发生再一次,尽管上一条记下被去除了)。

1,数据库;

字符串类型

数据类型 存储需求
CHAR(M) M个字节,0<=M<=255
VARCHAR(M) L+1个字节,L<=M且0<=M<=65535
TINYTEXT L+1个字节,L<2^8
TEXT L+2个字节,L<2^16
MEDIUMTEXT L+3个字节,L<2^24
LONGTEXT L+4个字节,L<2^32
ENUM('Value1','Value2',......) 1或2个字节,取决于枚举值的个数(最多65535个值)
SET('Value1','Value2',......) 1,2,3,4或8个字节,取决于SET成员的数目(最多64个成员)

哪些设置一个字段为自增

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

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

3、主键生成的数字相对不会再也,就算记录被删去。

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

日期时间项目

数据类型 存储范围 存储需求
TIME -838:59:59 ~ 838:59:59 3
DATE 1000-1-1 ~ 9999-12-31 3
DATETIME 1000-1-1 00:00:01 UTC ~ 9999-12-31 23:59:59 8
TIMESTAMP 1970-1-1 00:00:01 UTC ~ 2038-1-19 3:14:07 4
YEAR 1901~2155 1

怎么着设置主键

1、在创制表或在修改字段结构的时候,在主键字段的”索引”下拉菜单中挑选“primary”。(一张表只允许设置一个主键,平时它是int自增的。)

 

2,数据库是单身;

二进制类型

小练习:

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

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

3、 增添5条产品音讯

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

5、 增多5条产品入库记录。

 

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

JSON类型(ver5.7新增)

mySQL中的数据类型

在mySQL中种种字段,都不能够不分明它贮存的数目标种类,一旦内定了项目,该字段(列)中的数据都不可能不符合那个类别的界定,不然就能够引起错误。

 

再正是字符等项目必要钦定内容的最大尺寸。

 

1,实体;表名,根据指标来划分

仓库储存引擎

int整数类型

只能寄放整数

2,属性;字段

翻看MYSQL帮衬的囤积引擎

SHOW ENGINES

varchar字符类型

能够储存任一字符,包涵符号、数字、字母,可是他们都会被当成字符为处理。

3,数据库种类;关系型,非关系型,等级次序型,网状型

查看支持的积存引擎音信

SHOW VARIABLES LIKE 'have%'

Date日期

用于存款和储蓄日期和时间

3,编码设置;

查阅私下认可的蕴藏引擎

SHOW VARIABLES LIKE '%storage_engine%'

数值类型

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.22507385072014E-308,最大值:正负1.17976931348623157E+308。

 

Decimal 以字符串方式积累浮点数。它的取值范围不是定点的,决计于客户钦点的尺寸。

gbk;中国和东瀛朝鲜语言

常用存款和储蓄引擎(注意各引擎优劣势)

  • InnoDB
  • MyISAM
  • Memory

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

gb1312;中文

封锁标准

叁个表只可以有多少个主键(P奥迪Q5IMATY KEY),可是能够有四个独一(UNIQUE KEY),独一的字段的值不允许出现重复,可是NULL值不算做重新的值

  • PRIMARY KEY 主键,PXC60IMA大切诺基Y可省略 (注意:PTiguanIMARAV4Y KEY(a,b,c,...) 来定义多个主键时,由a,b,c,...全数的值才具明确四个主键,即一个表满含a,b,c...等字段,个中单独的a,b,c字段相等,是能够的,但不可能全体非常,全体对等表明主键相等,不可插入。)
  • AUTO_INCREMENT 自增,供给和主键(P汉兰达IMA福睿斯Y KEY)搭配使用。可在成立表时自定义从某些数早先,如CREATE TABLE tbl_name(id INT key AUTO_INCREMENT,......)AUTO_INCREMENT=数值,表示在那之中自增字段从此数值开首。(也可由此ALTER TABLE tbl_name AUTO_INCREMENT=数值修改)
  • FOREIGN KEY 外键
  • NOT NULL 非空
  • UNIQUE KEY 唯一,KEY 可省略
  • DEFAULT 默许值 插入数据时可接纳DEFAULT

unsigned属性

“整理”菜单中的unsigned选项,代表无符号,代表这一字段中的数值无法为负数,因为无符号正是表示未有正负号。若是“整理”菜单留空,什么都不选的话,就是象征有号子,可感到正数也足以为负数。

utf8;大型编码;

数据表的开创

CREATE TABLE [IF NOT EXISTS] tbl_name (
     字段名称 字段类型 [完整性约束条件] ##完整性约束条件顺序为: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
     ......
)ENGINE = 引擎名称 CHARSET = 编码方式;

unsigned zerofill属性

当数码的升幅小于类型的最大开间时,则在数额前面自动填充0

4,暗许引擎;

查看当前数据库下的数据表

SHOW TABLES;

auto_increment

自增

INNODB;默认的

查看表结构及创建消息

DESC tbl_name
DESCRIBE tbl_name
SHOW COLUMNS FROM tbl_name
SHOW CREATE TABLE tbl_name

默认à定义

本条选项代表,填充数据时倘诺该字段为空值时,所选拔的暗中认可值。

数据表的内燃机日常都要设成INNODB

修改表结构

字符串数据类型

字符类型能够储存任何值,以至是二进制形式的图像、声音、录制。

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

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

5,常用的一些数据库

修改表名

ALTER TABLE tbl_name RENAME [TO|AS] new_name

或者

RENAME TABLE tbl_name TO new_name

仓库储存大容积的文本

TinyBlob ,blob,TinyText,text

前五个是代表二进制字符串,后多个是意味着非二进制字符串,都得以储存大批量的公文音信。

MediumBlob,MediumText

LongBlob,LongText

sqlserver ,access是微软的数据库

加多字段

ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件]  [ FIRST | (AFTER 字段名称)] 

若供给增多多少个字段,要求几个ADD操作,以“,”号分隔

枚举类型

ENUM / SET 类型

设置其暗许值为(‘值1’, ‘值2’, ‘值3’,…),由客商钦命多个可选值,字段中的值必得是里面之一,最多只可以有655叁16个可选值。

 

oracle,mysql,java都是oracle公司的

除去字段

ALTER TABLE tbl_name DROP 字段名称

若需求删除多个字段,须要多少个DROP操作,以“,”号分隔。

注意:增加字段(ADD)与删除字段(DROP)能够在同二个说话里面(ALTELX570 TABLE tbl_name ADD .....,DROP .....)

日期时间项目

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 1966-01-01 00:00:00 到2037年的中间的某贰个时刻

Year 存储1901~2155年的多个年份。

 

dbz 是IMB公司的

修改字段

ALTER TABLE tbl_name MODIFY 字段名称 字段类型 [完整性约束条件] [FIRST | (AFTER  字段名称)]

小练习:

1、 创造一张职员和工人数据表,employee,富含字段:eId(标准整数,主键、自增)、姓名eName(varchar,50)、年龄eAge(tinyInt,无符号)、工号eNum(smallInt,不足的位数用0填充)、文凭(枚举:初级中学~博士)、性别(枚举:男,女)、出生日期(DateTime)、基本薪俸(Float,暗中认可:1300)、自己介绍text。然后输入五名职工的音讯。

 

 

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

sybase 是sybase公司的;

修改字段名称

ALTER TABLE tbl_name CHANGE 旧字段名称 新字段名称 字段类型 [完整性约束条件] [FIRST | (AFTER  字段名称)]

SQL语句

是一门特意用来数据库操作的言语,SQL语句的语法不仅适用于mysql数据库,同时也适用于大概全体的主流数据库。当然分裂店家出口的数据库在语法细节上或许稍微差别。

 

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

增添暗许值

ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值

select语句

查询语句,特意用来在多少表中依照客户钦定的标准化举办查询。

1,基本命令

去除默许值

ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT

简言之语法描述:

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

加上主键

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (字段名称,...) 

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'

 

查询产品名称是小米z954的成品音信(在mysql中双引号与单引号都意味字符串,可是推荐应用单引号,因为我们未来要读书的mssql server 中字符串用单引号表示)

2,退出;exit

除去主键

ALTER TABLE tbl_name DROP PRIMARY KEY

逻辑与and

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

 

3,查看当前时光日期;select now();

加上独一

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX | KEY] [索引名称] (字段名称,...)

逻辑或or

SELECT * FROM product

WHERE pPrice <800 OR pId >6

 

4,当前日期;select curdate();

剔除独一

ALTER TABLE tbl_name DROP  {INDEX| KEY} index_name

逻辑非not

SELECT * FROM product

WHERE not pName = '中兴z954'

 

 

5,当前时间;select curtime();

修改表的仓库储存引擎

ALTER TABLE tbl_name ENGINE=存储引擎名称

insert插入数据

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

6,打字与印刷版本音信;select version();

修改表的自增加值

ALTER TABLE tbl_name AUTO_INCREMENT= 值

语法:

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

中间,字段的地点与值的岗位必得逐条对应。

7,查看当前顾客;select user();

剔除数据表

DROP TABLE [IF EXISTS] tbl_name[,tbl_name,...]

示例:

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后台服务(管理员运营命令窗口);

数量操作(DML)

Update修改数据

根据钦定的尺度规定供给修改的行,然后修改钦命字段的数量。

net start mysql;

布署数据

语法:

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

固然如此where是三个可选参数,不过平常处境下都需求写where条件,假使不写就是修改整张表的有着行。

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

不钦点具体的字段

INSERT [INTO] tbl_name VALUE | VALUES (值,......)

示例:

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;

列出钦命字段

INSERT [INTO] tbl_name (字段名称1,......) VALUE | VALUES (值1,......)

delete删除

依照标准删除钦赐的笔录

2,操作库

并且插入多条记下

INSERT [INTO] tbl_name   [(字段名称1,......)]  VALUE | VALUES (值,......), (值,......),......

语法:

delete from 表名 where 条件

尽管where是八个可选参数,可是平日景况下都亟待写where条件,假诺不写正是剔除整张表的有所行。

1,查看数据库;show databases;

通过SET方式插入记录

INSERT [INTO] tbl_name SET 字段名称=值,......

示例:

DELETE FROM userinfo WHERE uid = 2

 

 

2,成立数据库;create database 库名 字符集;

将查询结果插入到表中

INSERT [INTO] tbl_name   [(字段名称1,......)]  SELECT 字段名称 FROM tbl_name  [WHERE 条件]

小练习:

1、 纪念背诵增删改查钦赐的语法。

2、 手动新建二个数据库product,在当中新建数据表product,这几个表中的字段:pid(主键)、pName(产品名)、pModel(型号)、pIntro(简单介绍)、pFrom(产地)、p普赖斯(价格) 。

3、 用insert语句增添10条不一样的成品数量

4、 查询

a) 查询全数成品数据

b) 查询全数成品的产品名和价格

c) 查询全体价格在三千上述的成品

d) 查询全体成品为安卡拉何况价格当先三千的成品

e) 查询全数产地不是浦那的出品

5、 将第5条记下的产品号修改为T一千

6、 删除全部价格小于5元的制品。

 

将第三题之后的sql语句复制到贰个word文书档案中,然后主管检查组员,班长检查COO。

3、5、6每题20分。

第4题中的每种小题8分共40分

 

命令行与高级查询

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

改进数据

UPDATE tbl_name  SET 字段名称=值,...... [WHERE 条件] [ORDER BY 字段名称] [LIMIT 限制条件]

Mysql命令行

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

2、 弹出的通令框中提醒”enter password”,输入私下认可密码root

3、 假设看见”you mysql connection”就表达您登入成功了。

4、 在指令行中,每一条指令都必须以分行;结束,否则系统会以为你那条指令还一向不实现,始终须求你继续输入。

 

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

删除数据

(DELETE FROM tbl_name  [WHERE 条件] [ORDER BY 字段名称] [LIMIT 限制条件])

要么根本清空数据表

(TRUNCATE [TABLE ] tbl_name)

查阅数据库列表

show Databases

1,用SET PASSWORD命令

查询数据操作(DQL)

接纳数据库use

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

查询记录

SELECT select_expr[,select_expr,...]
[ 
    FROM table_reference
    [WHERE 条件]
    [GROUP BY {col_name | position } [ ASC | DESC], ... 分组]
    [HAVING 条件 对分组结果进行二次筛选]
    [ORDER BY {col_name | position } [ ASC | DESC], ... 排序]
    [LIMIT 限制显示条数]
]

格式:

use 数据库名

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

在运用操作数据表中的数量从前,必得求选定贰个当下数据库。

 

2,用mysqladmin

询问表明式

各样表明式表示想要的一列,必需最少有一列,七个列以","号分隔; "*" 表示具有列,tbl_name.*代表命名表的全部列。查询表明式能够应用 [AS] alias_name 为其授予别称。

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

show tables

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

WHERE条件

查询条件 符号 示例
比较 =,<,>,<=,>=,!=,<>,!>,!<,<=> SELECT * FROM table_name WHHERE id = 1
指定范围 BETWEEN AND,NOT BETWEEN AND SELECT * FROM table_name WHHERE id BETWEEN 1 AND 2
指定集合 IN,NOT IN SELECT * FROM table_name WHHERE id IN(1,3,5,7,9) 集合内忽略大小写
匹配字符 LIKE, NOT LIKE SELECT * FROM table_name WHHERE id LIKE '_2%'
是否为空 IS NULL,IS NOT NULL SELECT * FROM table_name WHHERE id IS NULL
多个查询条件 AND,OR SELECT * FROM table_name WHHERE user = 'admin' AND password = 'admin'

模糊查询

  • %:代表0个,1个或然多个随机字符
  • _ :代表1个字符

位列出多少表中的字段

格式:show columns from 表名

Describe 数据表名

 

3,用UPDATE间接编辑user表

GROUP BY 查询结果分组

默许情状下,GROUP BY 查询结果分组得到每组的第二个值
配合GROUP_CONCAT()获得分组实际情况
相配聚合函数

  • COUNT() NULL值不算一条记下
  • MAX()
  • MIN()
  • AVG()
  • SUM()

合作WITH ROLLUP记录上面装有记录的总和

数据库与数码操作

mysql> use mysql; 

5.通过HAVING子句对分组结果进行二回筛选

配合GROUP BY 实现,比如:

SELECT Region,COUNT(*),MAX(Population),MIN(Population),SUM(Population),AVG(Population) FROM country GROUP BY Region HAVING MAX(Population) > 1000000

创办贰个新的数据库

指令格式:create database 数据库名

mysql> update user set password=password('123') where

透过OLANDDE途锐 BY 举行排序

默许升序排列(ASC),可粗略。降序排列(DESC),可排序三个字段通过","号连接

SELECT * FROM country ORDER BY Population ASC,SurfaceArea ASC
SELECT * FROM country ORDER BY 3 ASC
SELECT * FROM country ORDER BY RAND() #随机记录

在时下数据库中创设数据表

只顾,在开立在此以前必需挑选当前数据库。

格式:create table 表名(字段1 数据类型,字段2 数据类型,……)

示例:

create table stdInfo(

sName varchar(20),

sAge int,

sSex varchar(5)

);

 

user='root' and host='localhost'; 

LIMIT限制查询结果展现条数

  • LIMIT 突显条数
  • LIMIT 偏移量,展现条数
(SELECT * FROM country LIMIT 2,1)

始建包罗自增主键的数据表

亲自过问:创造顾客表:

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服务。 

内接连查询

  1. JOIN | CROSS JOIN | INNER JOIN
  2. 经过ON 连接条件
  3. 来得三个表中切合连接条件的记录

只顾:三张表恐怕三张表以上查询能够直接加入更加的多的JOIN ...ON ...来连接多张表,注意找准表之间的连日条件

例如:

SELECT 
    user_info.id, user_info.name, city_info.pro_name
FROM
    user_info
        JOIN
    city_info ON user_info.pro_id = city_info.pro_id;

改造表结构:扩展字段

加上一个字段

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 回车。

左外连接

(LEFT [OUTER] JOIN)

来得左表的全部笔录及右表切合连接条件的记录

重命名数据表

rename table student to sInfo;

 

瞩目:to前面是修改前的原表名,to前面是修改后的新表名。

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

右外连接

(RIGHT [OUTER] JOIN)

来得右表的所有的事记下及左表符合连接条件的笔录

改变表结构:增多自增主键

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目录。 

概览

外键是表的贰个古怪字段,被参照的表是主表,外键所在字段的表为子表。设置外键的标准供给记住,正是重视于数据库中已存在的表的主键。外键的作用是起家该表与其父表的关系关系。父表中对记录做操作时,子表中与之相应的音讯也理应相应的改动。
外键的效应是维持数据库的一致性和完整性。
能够完结一对一依旧某些多的涉嫌

注意

  1. 永利游戏平台,父表和子表必需选拔一样的仓库储存引擎,何况不准行使临时表。
  2. 数据库的累积引擎只好为InnoDB。
  3. 外键列和参照列必得怀有相似的数据类型在那之中数字的长短或是不是有标记位必得一致:而字符的长度则能够不一样。
  4. 外键列和参照列必得成立索引。假诺外键海市蜃楼索引的话,MYSQL将自动创立索引。

外键约束的参照操作:

  • CASCADE:从父表删除只怕更新且自动删除或然更新子表中相称的行。
  • SET NULL:从父表删除恐怕更新行,并安装子表的中的外键列为NULL。如果采取该选项必需保险子表列中未有点名NOT NULL。
  • RESTRICT:拒相对父表的翻新恐怕去除操作。
  • NOT ACTION: 规范SQL的最首要字,在MYSQL中与RESTLANDICT同样

mysql数据库的备份与还原

(5),输入mysql回车,借使成功,将现出MySQL提醒符 >。 

创造外键(先有主表)

CREATE TABLE [IF NOT EXISTS] tbl_name (
 字段名称 字段类型 [完整性约束条件] ##完整性约束条件顺序为: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
...
[CONSTRAINT 外键名称] FOREIGN KEY(字段名) REFERENCES 父表(字段名) [ON {DELETE | UPDATE } {CASCADE | SET NULL }] [ON {DELETE | UPDATE } {CASCADE | SET NULL}]
)

备份

在phpmyAdmin中选拔“导出”成效将数据表的布局与数量保存为一个.sql文件(保存格式选取SQL)

(6),连接权限数据库: use mysql; 。 

删去外键

(ALTER TABLE tbl_name DROP FOREIGN KEY)

恢复

在phpmyAdmin中式茶食击“导入”,选用.sql文件的门道(格式选用SQL),点击实施。

 

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

增多外键

(ALTER TABLE tbl_name ADD [CONSTRAINT 外键名称]  FOREIGN KEY(字段名) REFERENCES 父表(字段名))

示例:

部门表(父表)

id depName
1 教学部
2 技术部
3 运营部
4 市场部
CREATE TABLE IF NOT EXISTS department (id TINYINT UNSIGNED AUTO_INCREMENT KEY,depName VARCHAR(20) NOT NULL UNIQUE)ENGINE=INNODB;

员工表(子表)

id username depId
1 King 1
2 Zhang 3
3 Ling 2
4 Jack 4
CREATE TABLE IF NOT EXISTS employee (id TINYINT UNSIGNED AUTO_INCREMENT KEY,userName VARCHAR(20) NOT NULL UNIQUE,depId TINYINT UNSIGNED)ENGINE=INNODB;

要是只删除父表中部门4,那么职员和工人表中还可能有属于部门4的职工存在,那鲜明是不正好的,那时,能够动用外键来缓慢解决

创设外键(先有主表):

CREATE TABLE IF NOT EXISTS employee (id TINYINT UNSIGNED AUTO_INCREMENT KEY,userName VARCHAR(20) NOT NULL UNIQUE,depId TINYINT UNSIGNED , FOREIGN KEY(depId) REFERENCES deparment(id) )ENGINE=INNODB;

mysql中的聚合函数

不畏对点名字段中的一列数据实行总括和平运动算的函数。

(别忘了最后加分号) 。 

一起查询

GROUP BY分组

在钦赐字段师长数据内容重复的记录,聚合为一组。剔除重复的值。

示例:

SELECT * FROM student GROUP BY sSex

SELECT sName FROM student GROUP BY sAge

 

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

UNION

(SELECT 语句 UNION SELECT 语句)

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。 

UNION ALL

(SELECT 语句 UNION SELECT 语句)

注意:UNION 和 UNION ALL 的界别是UNION 去掉一样记录,UNION是大致的联合到一齐

AVG求平均值

格式:AVG(字段名)

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

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,表的增加和删除改查

引发子查询的事态

  • 使用 [NOT] IN 的子查询
  • 选用相比较运算符的子查询 = > < >= <= <> != <=>
  • 使用 [NOT] EXISTS 的子查询
  • 使用 ANY | SOME 恐怕 ALL的子查询
符号 ANY SOME ALL
>,>= 最小值 最小值 最大值
<,<= 最大值 最大值 最小值
= 任意值 任意值
!=,<> 任意值

示例:

SELECT name FROM user where depId IN(SELECT id FROM ids)
SELECT name FROM user where depId >=(SELECT id FROM ids)
SELECT name FROM user where EXISTS(SELECT id FROM ids)

最大值最小值MAX()、MIN()

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

SELECT MAX(sScore) FROM student

//得到成绩最高分数

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

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

 

 

1,进入库;

将查询结果写入到数据表

(INSERT [INTO] tbl_name  [(col_name),......] SELECT ...)

求和sum()

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

SELECT SUM(sSCore) FROM student

//全班总分

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

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

 

 

use 库名称;

创设数据表的还要将查询结果写入到数据表

CREATE TABLE [IF NOT EXISTS] tbl_name (
  [(creat_defination)]
  select_statement

小练习:

1、用Create指令成立八个产品卖出去记录数据表,富含字段:产品名、销售地区、出售数额、贩卖金额。(10分)

2、假设本集团出卖的制品唯有三种,出卖地区也独有五个。用insert语句插入十条产品发售记录。(产品与出卖地区势必有再度值。)(15分)

3、总括各类产品的发售总额(10分)

4、总结各样产品的平均出卖额。(10分)

5、总计各类产品的贩卖总量据。(10分)

6、在各样地点发售的各类产品的名号,连接成一个以逗号分隔的字符串。(15分)

7、同不日常间计算各种产品的最大发售额。(10分)

8、总结产品在每个区域的最低出售额。(10分)

9、获得总出卖额。(10分)

 

 

 

 

 

 

 

mysql_高等查询

2,创建表;

正则表明式查询

数码过滤通配符

通配符,正是指能够通用的同盟其余字符的号子。

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

REGEXP '相配格局'

(SELECT * FROM user WHERE REGEXP '^[1-9]$')

%通配符

%代表专擅个数的任一字符,它平常是用在select语句中与LIKE关键合作使用的。

5,删除表;

常用相称格局

模式字符 含义
^ 匹配字符串开始
$ 匹配字符串结尾
. 匹配字符串任一字符,包括换行和回车
[字符集和] 匹配字符集合的任一字符
[^字符集和] 匹配除了字符集合以外的任一字符
s1 | s2 | s3 匹配s1、s2、s3任一字符串
* 代表0个、1个或者多个其前的字符
+ 代表1个或者多个其前的字符
字符串{N} 字符串出现N次
字符串{M,N} 字符串至少出现M次,最多N次

示例:

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,修改表名称;

算数运算符

符号 表达式 作用
+ X1+X2 加法
- X1-X2 减法
* X1*X2 乘法
/ X1 / X2 除法
DIV X1 DIV X2 除法
% X1 % X2 取余
MOD X1 MOD X2 取余

_(下划线)通配符

_ 通配符的机能与%类似,但是它不得不合营单个大肆字符。

 

alter table 表名称 rename 新表名称;

正如运算符

符号 形式 作用
= X1=X2 判断是否相等
!=或<> X1!=X2或X1<>X2 判断是否不相等
<=> X1<=>X2 判断是否相等,可以判断是否等于NULL
>,>= X1>X2,X1>=X2 判断是否大于等于
<,<= X1<X2,X1<=X2 判断是否小于等于
IS NULL 或 IS NOT NULL x1 IS [NOT] NULL 判断是否等于NULL
BETWEEN ... AND ... 或者 NOT BETWEEN ... AND... X1 BETWEEN m AND n 判断是否在范围内
IN 或 NOT IN X1 IN (值1,...) 判断是否在一个固定范围内
LIKE 或 NOT LIKE X1 LIKE 表达式 判断是否匹配
REGEXP REGEXP 正则表达式 判断是否正则匹配

示例:

SELECT * FROM student WHERE sName LIKE '小_'

SELECT * FROM student WHERE sName LIKE '小__'

 

追寻以“小”开端的事后自由七个字符的数额,何况必得是三个字。

 

留意:下划线与%区别的是后边一个不相配字符,必需得有二个字符才干合营。

 

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

 

 

7,查看表;

逻辑运算符

符号 形式 作用
&& 或 AND 并且
||或 OR 或者
! 或 NOT 取反
XOR 异或 不同为真

SELECT 查询中的关键字

show tables;

运算符的刚开始阶段级

优先级 运算符 优先级 运算符
1 ! 8 |
2 ~ 9 =,<=>,>>=,<,<=,!=,<>,LIKE,IN,IS NULL,REGEXP
3 ^ 10 BETWEEN AND,CASE,THEN,WHEN,ELSE
4 *,/,DIV,%,MOD 11 NOT
5 +,- 12 &&,AND
6 >>,<< 13 ||,OR,XOR
7 & 14 ;=

注意: 能够利用()更动优先级

in关键字

在一个凑合中打开相称,只要数据与聚集中的率性一项同样,就觉着数据满足条件。

 

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

 

追寻地址是 法国巴黎,莱比锡,圣萨尔瓦多 或 辽宁的学习者音信

 

9,查看新添表的科班写法;

MYSQL中的函数

limit关键字

limite后边需求跟多个数字,代表从钦定的笔录开端(使用数据记录在轮廓上的程序并非ID),查找多少条记下出来。

show create table 表名称;

数学函数

名称 描述
CELL(x) 进一取整
FLOOR(x) 舍一取整
MOD(x,y) 取余数(取模)
POWER(x,y) 幂运算
ROUND(x) 四舍五入
TRUNCATE(x,y) 数字截取
ABS() 取绝对值
PI() 圆周率
RAND()和RAND(X) 返回0~1之间的随机数,RANX(X)
SIGN(X) 返回X的符号,-1为负数,0,1为正数
EXP(X) 计算e的几次方

注意:

1、 次序是从0开端的,也正是说第一条记下的序号是0

2、 这里的序号不等于ID,它仅仅是意味排列次序。

3、 LIMIT关键字是mysql所独有的,比方:mssql和Oracle中就从未Limit关键字。

 

SELECT * FROM student LIMIT 3,2

 

从第4条记下伊始,获取之后的两条记下。

 

2,字段增加和删除改;

字符串函数

名称 描述
CHAR_LENGTH(x) 返回字符串字符数
LENGTH(x) 返回字符串长度
CONCAT(s1,s2,...) 合并字符串
CONCAT_WS(x,s1,s2,...) 以指定分隔符连接连接字符串
UPPER(x)/UCASE(x) 将字符串转化为大写
LOWER(x)/LCASE(x) 将字符串转化为小写
LEFT(S,N)/RIGHT(S,N) 返回字符串的前/后N个字符
LPAD(S1,LEN,S2)/RPAD(s1,LEN,s2) 将字符串s1用s2 填充到指定的LEN
LTRIM(s)/RTRIM(s)/TRIM(s) 去掉字符串空格
TRIM(s1 FROM s) 去掉字符串S中结尾处和开始处的s1
REPEAT(S,N) 重复字符串的指定次数
SPACE(N) 返回N个空格
REPLACE(s,s1,s2) 从字符串s中搜索s1,替换s2
STRCMP(s1,s2) 比较字符串,>=<分别返回1,0,-1
SUBSTRING(S,N,LEN) 截取字符串
REVERSE(S) 反转字符串
ELT(N,S1,S2) 返回指定位置的字符串

join关键字 – 链表

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

 

1,增添字段;

日虎时间函数

名称 描述
CURDATE(),CURRENT_DATE() 返回当前日期
CURTIME(),CURRENT_TIME() 返回当前时间
NOW() 返回当前日期时间
MONTH(D) 返回日期中月份的值
MONTHNAME(D) 返回日期中月份的名字
DAYNAME(D) 返回日期中的星期几
DAYOFWEEK(D) 返回一周内的第几天,1代表星期日
WEEKDAY(D) 返回日期是星期几,0代表星期一
WEEK(D) 一年中的多少个星期
YEAR(D) 返回日期中年份的值
HOUR(T) 返回时间中的小时
MINUTE(T) 返回时间中的分钟数
SECOND(T) 返回时间中的秒数
DATEDIFF(D1,D2) 返回D1,D2的间隔天数

as关键字

用于对字段段取叁个别称

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

 

 

alter table 字段名称 add 定义列;

条件判定函数

名称 描述
IF(EXPR,V1,V2) 如果EXPR成立,返回V1,否则V2
IFNULL(V1,V2) 如果V1 不为空,显示V1的值;否则V2
CASE WHEN expr1 THEN v1 [WHEN expr2 THEN v2 ] [ ELSE vn] END CASE表示函数开始,END表示函数结束。如果表达式expr1成立时,返回v1.如果表达式expr2成立时,返回v2.以此类推,最后遇到ELSE时,返回vn的值。

多表查询

2,修改字段;

系统音讯函数

名称 描述
VERSIOn() 返回数据库版本号
CONNECTION_ID() 返回数据库连接数
DATABASE(),SCHEMA() 返回当前数据库名
USER(),SYSTEM_USER 返回当前用户
CURRENT_USER() 返回当前用户
CHARSET(s) 返回字符串s 的字符集
COLLATION(s) 返回字符串s 的检验字符集
LAST_INSERT_ID() 返回最近生成的AUTO_INCREMENT的值

内连接

便是指仅仅查询两张表中有关系关系的多少,而从未关系关系的多寡是不会被询问出来的。

 

 
   

 

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

加密函数

名称 描述
MD5(str) 信息摘要算法
PASSWORD(str) 密码算法(ver5.6过时)
ENCODE(str,pwd_str) 加密结果是一二进制数,必须使用Blob字段保存
DECODE(crypt_str,pwd_str) 对通过ENCODE加密之后的内容解密

方式一: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, 删除字段;

另外常用函数

名称 描述
FORMAT(x,n) 将数字x进行格式化,将x保留到小数点后n位
ASCII(x) 返回字符串x的第一个字符的ASCII码
BIN(x) 返回x的二进制编码
HEX(x) 返回x的十六进制编码
OCT(X) 返回x的八进制编码
CONV(x,f1,f2) 返回将x从f1进制数变成f2进制数
INET_ATON(ip) 将ip地址转换为数字
INET_NTOA(n) 将数字转化为IP地址
GET_LOCK(name,time) 定义锁
RELEASE_LOCK(name) 释放锁

方法二:inner join

行使inner join一样能够成功上例中的功用,何况主表与附表、连接条件映器重帘。INNE科雷傲 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

 

 

在意:省略INNEENCORE直接写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 表名称;

目录分类

  • 平时索引
  • 独一索引(UNIQUE)
  • 全文索引(FULLTEXT)
  • 单列索引
  • 多列索引
  • 空间引得(数据类型为GEOMETXC60Y,存款和储蓄引擎为MyISAM)SPATIAL

多张表连接

示例:

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,增添对应数据;

创造表的时候创造索引

CREATE TABLE [IF NOT EXISTS] tbl_name (
     字段名称 字段类型 [完整性约束条件] ##完整性约束条件顺序为: [UNSIGNED | ZEROFILL] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY | UNIQUE [KEY]] AUTO_INCREMENT
     ......
 [UNIQUE | FULLTEXT | SPATIAL ] INDEX|KEY [索引名称](字段名称[(长度)] [ASC|DESC]) 
)ENGINE = 引擎名称 CHARSET = 编码方式;

insert into 表名称(字段1,字段2........)values('j138',"红瓦寺".......)选拔插入某个列;

在已存在的表上创立索引

(CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX  索引名称 ON 表名 {字段名称[(长度)]  [ASC|DESC] ) })

或者

(ALTER TABLE tbl_name ADD [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名称(字段名称[(长度)] [ASC|DESC]) )

2,扩展某行数据

删去索引

(DROP INDEX 索引名称 ON tbl_name)

insert into classes values(null,'j139',"红瓦寺") 插入全体列,自增粘以null占位

其他

3,增添整个数量

注释

  • 以‘-- ’ 为前缀
  • 以'#' 为前缀
  • 字段注释通过COMMENT '.....'进行讲授

INSERT INTO t_student VALUES

MySql学习笔记永利游戏平台。(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 表名称(列名称,列名称.......);一个表能够有三个目录;

2,删除索引;

alter table student drop index 索引名称;

3,特点;数据的更新和目录的更新是手拉手的

平日索引可以加到多列上

4,索引的隐疾;

数据与索引的更新是一路的,若是一切多少皆有目录就能够下滑效能;

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

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

担保每行所表示的实体能相互不同,不可能存两条一抹同样的

1,主键约束(primary key)非空不能再一次;贰个表只可以有一个主键三个主键能够有多个列

2,独一约束(unique)内定的列非空的无法重复

3,非空约束(not null)内定的列不可能为空;

4,内定数量(default)钦定的数码足以改造;

5,钦定有效数据(check(第一个数据 or 第3个数据格式(健名=值)))

不是第叁个数据必需是第三个数据,不可能有第多少个数据出现

(在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 关系表的表民(主键)

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,3)只可以取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 求哪一列的最小值) 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两千到 +3三千限量的卡尺头;

比如: 年纪,数量

int ;4个字节,存放-三千000000 到 +2000000000 范围的整数;

例如: 距离

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)

供给一个数据库表中不含有已在其余表中已满含的非主关键字新闻。

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();

6,打印版本音信;select version();

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服务的时候跳过权限表认证。 

(4),再开二个DOS窗口(因为刚刚可怜DOS窗口已经无法动了),

转到mysqlbin目录。 

(5),输入mysql回车,假设成功,将应时而生MySQL提醒符 >。 

(6),连接权限数据库: use mysql; 。 

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

(别忘了最终加分号) 。 

(8), 刷新权力(必得步骤):flush privileges; 。 

(9), 退出 quit。 

(10), 注销系统,再进来,使用客户名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',"红瓦寺".......)选择插入有个别列;

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 新表名(新字段名) 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_表示表名;字段 匈牙利(Magyarország)语 田野同志

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 表名称(列名称,列名称.......);一个表能够有四个目录;

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 关系表的表民(主键)

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,3)只可以取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 求哪一列的最小值) 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三千到 +3三千限制的大背头;

比如: 年纪,数量

int ;4个字节,贮存-三千000000 到 +3000000000 范围的整数;

例如: 距离

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

比方说: 科学/数学数据

2,浮点

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

例如:测量,温度

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

例如:科学数据

decimal(m,b);客户自定义精度的浮点型数据 (m长度,b精度)以专门高的精度存款和储蓄小数数据.

3,字符

char(位数);固定长度的字符串 特定字符串长度(高达255字 符)

仓库储存经常包蕴预约义字符串的变量 举个例子: 定期航空线,国家或邮政编码

varchar(位数); 具备最大面积的可变长度的字符串 变量;

实则字符串长度 (高达 255 字 符) 举例:名字,密码,短文标签

text; 未有最大尺寸限制的可变长度Variable; (贮存655三十二个字符)

储存大型文本数据

MEDIUMBLOB;(寄存2的二十四次方个字符);

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学习笔记永利游戏平台

关键词: