网络数据

mysql数据库

来源:http://www.xtcsyb.com 作者:永利402游戏网站-永利402com官方网站 时间:2019-11-07 20:13

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

自增字段中缩手观望存放的是整数类型的数据,用于表示数据库中的记录的序号。

自增字段的值不必要手动输入,此中的号码是机动发出的,每当向这表里面增加一条新记录的时候,自增字段会自动抽出上风流倜傥行字段值,然后加风流倜傥,作为新记录的主键值。(主键绝对不会生出再度,固然上一条记下被剔除了卡塔 尔(英语:State of Qatar)。

1,数据库;

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

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

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

3、主键生成的数字相对不会再一次,尽管记录被删除。

1,积累数据以至数据结构的厂库。(db卡塔尔;

怎么设置主键

1、在创制表或在改变字段结构的时候,在主键字段的”索引”下拉菜单中选拔“primary”。(一张表只允许设置一个主键,平常它是int自增的。卡塔 尔(阿拉伯语:قطر‎

 

2,数据库是单身;

小练习:

1、 新建叁个付加物product数据库

2、 在数据库中增加成品product表,并构建字段pId (主键卡塔 尔(英语:State of Qatar)、pName(产物名称卡塔尔、pModel(成品型号卡塔尔国、pPrice(产物价格卡塔 尔(英语:State of Qatar)

3、 增多5条产物消息

4、 在数据库中再增加八个产品入库表(saveInLib卡塔尔,并创设字段:sid(主键卡塔尔国、pName(产物名称卡塔尔、saveInTime(入库时间卡塔尔、saveInCount(入库数量卡塔 尔(英语:State of Qatar)。

5、 增添5条付加物入库记录。

 

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

mySQL中的数据类型

在mySQL中种种字段,都必须旗帜分明它寄放的数码的项目,生龙活虎旦钦定了体系,该字段(列卡塔尔中的数据都必需适合这一个类型的范围,不然就能够孳生错误。

 

何况字符等种类必要钦赐内容的最大尺寸。

 

1,实体;表名,遵照目的来划分

int整数类型

唯其如此存放整数

2,属性;字段

varchar字符类型

能够积存任一字符,包罗符号、数字、字母,但是他们都会被当成字符为拍卖。

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

Date日期

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

3,编码设置;

数值类型

TinyInt 比比较小的整数存款和储蓄格式,1字节(8位的二进制数卡塔 尔(英语:State of Qatar),它的取值范围是:不带符号时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.22507385072015E-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,50)、年龄eAge(tinyInt,无符号卡塔尔、工号eNum(smallInt,不足的位数用0填充卡塔尔、教育水平(枚举:初级中学~大学生卡塔尔国、性别(枚举:男,女卡塔尔、出华诞期(DateTime卡塔 尔(英语:State of Qatar)、基本薪水(Float,暗中同意:1300卡塔 尔(英语:State of Qatar)、自告奋勇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'

 

询问付加物名称是One plusz954的成品消息(在mysql中双引号与单引号都意味着字符串,可是推荐应用单引号,因为我们现在要读书的mssql server 中字符串用单引号表示卡塔尔

2,退出;exit

逻辑与and

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

 

3,查看当今天子日期;select now();

逻辑或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();

语法:

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(型号卡塔 尔(英语:State of Qatar)、pIntro(简要介绍卡塔 尔(英语:State of Qatar)、pFrom(生产地)、pPrice(价格卡塔尔 。

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

4、 查询

a) 查询全部付加物数据

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

c) 查询全数价格在2003以上的制品

d) 查询全数成品为重庆还要标价高于3000的制品

e) 查询全体生产区不是阿比让的产物

5、 将第5条记下的出品号纠正为T1000

6、 删除全数价格低于5元的产物。

 

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

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窗口已经不能够动了卡塔 尔(英语:State of Qatar),

小练习:

请同学把具备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数据库的备份与还原

(5),输入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(字段名)

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

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分)

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('北京','西安','天津','山东')

 

搜索地址是 东京(Tokyo卡塔尔国,巴尔的摩,圣Louis 或 吉林的学子信息

 

9,查看新增加表的正规写法;

limit关键字

limite前面供给跟五个数字,代表从钦命的记录开始(使用数据记录在大意上的主次并非ID卡塔 尔(英语:State of Qatar),查找多少条记下出来。

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相近能够做到上例中的功能,何况主表与附表、连接条件不言自明。INNESportage 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

 

 

瞩目:省略INNEEscort直接写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 新表名(新字段名) 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卡塔 尔(英语:State of Qatar)钦命的数码能够更正;

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 到 +二零零零000000 范围的整数;

例如: 距离

bigint;8个字节;累积不可能用smalint 或 int描述的十分大整数。

比方: 科学/数学数据

2,浮点

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

例如:测量,温度

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

诸如:科学数据

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

3,字符

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

存储日常包罗预约义字符串的变量 举个例子: 定时航空线,国家或邮政编码

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

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

text; 没有最大尺寸约束的可变长度Variable; (存放65534个字符)

仓库储存大型文本数据

MEDIUMBLOB;(寄放2的21遍方个字符卡塔 尔(英语:State of Qatar);

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卡塔 尔(英语:State of Qatar)是对关联格局的中坚要求,

不满意第生机勃勃范式(1NF卡塔尔国的数据库就不是关周详据库。所谓第大器晚成范式(1NF卡塔尔国

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

即实体中的有些属性无法有七个值大概无法有双重的性能。

2,假如现身重复的属性,就或然须求定义三个新的实体,新的实体由重复的性质构成,

新实体与原实体之间为黄金年代对多涉及。在率先范式(1NF卡塔尔

中表的每黄金时代行只满含三个实例的新闻。

2、第二范式(2NF卡塔 尔(阿拉伯语:قطر‎

其次范式(2NF卡塔尔国是在率先范式(1NF卡塔尔的根底上树立起来的,

即满意第二范式(2NF卡塔尔必得先满意第生机勃勃范式(1NF卡塔尔国。

其次范式(2NF卡塔 尔(英语:State of Qatar)必要数据库表中的各样实例或行必需能够被唯风流倜傥地分别。

为促成区分经常供给为表加上二个列,以存款和储蓄各类实例的无出其右标记。

3、第三范式(3NF卡塔 尔(英语:State of Qatar)

满意第三范式(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版本(管理员运维命令窗口卡塔 尔(英语:State of Qatar)

二,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后台服务(管理员运转命令窗口卡塔 尔(英语:State of Qatar);

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_表示表名;字段 印度语印尼语 田野同志

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 第叁个数据格式(健名=值卡塔 尔(英语:State of Qatar))卡塔尔国

不是率先个数据必得是第三个数据,不能够有第八个数据现身

(在mysql中没用,扶助创造但没有效用卡塔尔

6,auto_increment;主键自拉长;

3,外键

1,创立三个表,在表中外键字段与上三个事关表绑定

class_id int,

CONSTRAINT 外键名 FOREIGN key(要把外键给这个字段的字段名)

REFERENCES 关系表的表民(主键卡塔 尔(英语:State of Qatar)

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(第一个主键,第2个主键);

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 到 +二〇〇一000000 范围的大背头;

例如: 距离

bigint;8个字节;积存无法用smalint 或 int描述的相当大整数。

譬喻: 科学/数学数据

2,浮点

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

例如:测量,温度

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

比方说:科学数据

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

3,字符

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

储存经常富含预订义字符串的变量 比如: 依期航线,国家或邮政编码

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

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

text; 未有最大尺寸节制的可变长度Variable; (存放655三16个字符)

存款和储蓄大型文本数据

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卡塔 尔(英语:State of Qatar)

1,在此外二个关周详据库中,第意气风发范式(1NF卡塔 尔(阿拉伯语:قطر‎是对涉及格局的主题必要,

不知足第大器晚成范式(1NF卡塔尔国的数据库就不是关周全据库。所谓第意气风发范式(1NF卡塔尔国

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

即实体中的某些属性不可能有三个值恐怕不可能有重复的属性。

2,如果现身重复的性子,就大概需求定义贰个新的实业,新的实业由重复的属性构成,

新实体与原实体之间为豆蔻梢头对多关系。在第少年老成范式(1NF卡塔 尔(阿拉伯语:قطر‎

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

2、第二范式(2NF卡塔尔国

其次范式(2NF卡塔 尔(阿拉伯语:قطر‎是在第生机勃勃范式(1NF卡塔 尔(阿拉伯语:قطر‎的底蕴上制造起来的,

即知足第二范式(2NF卡塔尔国必需先满足第意气风发范式(1NF卡塔尔。

其次范式(2NF卡塔尔供给数据库表中的各种实例或行必须可以被唯后生可畏地有别于。

为贯彻区分平时要求为表加上多个列,以存款和储蓄各类实例的必定要经过的道路标志。

3、第三范式(3NF卡塔 尔(英语:State of Qatar)

知足第三范式(3NF卡塔 尔(英语:State of Qatar)必需先满意第二范式(2NF卡塔 尔(阿拉伯语:قطر‎。同理可得,第三范式(3NF卡塔 尔(阿拉伯语:قطر‎

渴求三个数据库表中不分包已在其余表中已包括的非主关键字新闻。

本文由永利402游戏网站-永利402com官方网站发布于网络数据,转载请注明出处:mysql数据库

关键词:

上一篇:mysql 开发进阶篇系列 15 锁问题 (总结)

下一篇:没有了