自己的ASP.NET学习笔记08MySQL基础知识

mysql数据库基础知识

怎么着是数据库

数据库顾名思义,就是用来存储数据的工具,用3个比重形象的例子来比喻,就是Excel,一个Excel文件就足以看成是3个数据库。

关系型数据库

固然以行与列构成的二维数据表的样式,用来囤积数据的,并且将多张数据表存储在多少个单元中的存储方式,就叫做关系型数据库。

数据表

由行与列构成的二维结构的仓储数据的表格。

记录

尽管数据表中行,一暴行数据大家就叫做一条数据记录。

普通而言,每条数据记录都有五个ID号,大家得以把那个id精晓成是excel中的行号,用来对每条记下进行区分与标记。

主键

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

字段

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

每多个字段都急需钦命2个名称,用来申明该列数据的作用,就叫作字段名。

常用的数据库的花色

Mysql 品质大胆,可以防费使用。

MSSQL server 微软公司的数据库软件,经常用于搭配微软连串的编程语言。

Access是office的办公套件之一。

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

安装与运用mysql

安装mysql的法门很多,我们应用phpstudy这么些软件来设置php + mysql的运作环境。安装之后,大家就颇具了mysql的劳动。而且还有三款mysql客户端。

 

Mysql分为客户端与服务端。服务端仅仅用于对软件程序提供数据通讯,普通用户不能直接看到里边的数码内容。

 

客户端用来将服务端的数据,以用户可以驾驭的不二法门显示在其界面上。

 

phpMyAdmin

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

在桌面右下角的phpstudy图标上右击弹出菜单中采用phpMyAdmin就足以运行进入了。运行以后,要求输入用户与密码进行登陆,默许的用户名密码都以root。

 

新建数据库

壹 、 要钦点数据库的名目。

② 、 平日选用utf8_unicode_ci字符集,在唯有汉语的情状下,可以挑选gbk_chinese_ic或gb2312_chinese_ci 。

 

新建数据表

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

② 、 钦赐数据表的字段,也等于列。在指定字段的长河中大家要对字段添加字段名、数据类型、数据长度、是还是不是是主键、是或不是自增。(多数情形下,主键是名为id的平头类型,而且是自增的。)

叁 、 为字段指定这一列的数据类型。

自增auto_increment

自增字段中不足为奇存放的是整数类型的数码,用于表示数据库中的记录的序号。

自增字段的值不须求手动输入,其中的编号是全自动发出的,每当向那表里面添加一条新记录的时候,自增字段会自动取出上一行字段值,然后加一,作为新记录的主键值。(主键相对不会生出再一次,固然上一条记下被剔除了)。

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

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

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

③ 、主键生成的数字相对不会再也,尽管记录被剔除。

哪些设置主键

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

 

小练习:

壹 、 新建二个出品product数据库

② 、 在数据库中添加产品product表,并建立字段pId (主键)、pName(产品名称)、pModel(产品型号)、pPrice(产品价格)

叁 、 添加5条产品音信

④ 、 在数据库中再添加五个出品入库表(saveInLib),并建立字段:sid(主键)、pName(产品名称)、saveInTime(入库时间)、saveInCount(入库数量)。

⑤ 、 添加5条产品入库记录。

 

mySQL中的数据类型

在mySQL中每种字段,都必须显著它存放的多寡的项目,一旦内定了档次,该字段(列)中的数据都无法不符合那些类型的界定,否则就会滋生错误。

 

并且字符等体系要求内定内容的最大尺寸。

 

int整数类型

只好存放整数

varchar字符类型

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

Date日期

用来存储日期和岁月

数值类型

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

 

Decimal
以字符串格局储存浮点数。它的取值范围不是稳定的,取决于用户内定的尺寸。

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

unsigned属性

“整理”菜单中的unsigned选项,代表无符号,代表这一字段中的数值不可以为负数,因为无符号就是意味着没有正负号。若是“整理”菜单留空,什么都不选的话,就是表示有标志,可以为正数也足以为负数。

unsigned zerofill属性

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

auto_increment

自增

默认à定义

以此选项代表,填充数据时即便该字段为空值时,所运用的暗中认同值。

字符串数据类型

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

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

varChar 常用的字符存储格式,使用时索要指定最大内容长度。

仓储大容积的文本

TinyBlob ,blob,TinyText,text

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

MediumBlob,MediumText

LongBlob,LongText

枚举类型

ENUM / SET 类型

安装其专断认同值为(‘值1’, ‘值2’, ‘值3’,…),由用户钦命七个可选值,字段中的值必须是内部之一,最三只可以有655三十个可选值。

 

日期时间项目

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

提姆eStmp 一九六九-01-01 00:00:00 到2037年的中间的某3个时时

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

 

小练习:

① 、 创设一张员工数据表,employee,包涵字段:eId(标准整数,主键、自增)、姓名eName(varchar,50)、年龄eAge(tinyInt,无符号)、工号eNum(smallInt,不足的位数用0填充)、学历(枚举:初中~大学生)、性别(枚举:男,女)、出生日期(DateTime)、基本薪酬(Float,暗许:1300)、自我介绍text。然后输入五名职工的音信。

 

 

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

SQL语句

是一门专门用来数据库操作的语言,SQL语句的语法不仅仅适用于mysql数据库,同时也适用于大约拥有的主流数据库。当然差别公司出口的数据库在语法细节上或然略微距离。

 

select语句

询问语句,专门用于在数量表中依照用户内定的规格进行询问。

粗略语法描述:

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语句来进行数学运算

 

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'

 

询问产品名称是Motorolaz954的制品新闻(在mysql中双引号与单引号都意味字符串,然而推荐应用单引号,因为大家今后要上学的mssql server 中字符串用单引号表示)

逻辑与and

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

 

逻辑或or

SELECT * FROM product

WHERE pPrice <800 OR pId >6

 

逻辑非not

SELECT * FROM product

WHERE not pName = '中兴z954'

 

 

insert插入数据

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

语法:

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

其中,字段的任务与值的职责必须逐一对应。

示例:

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

 

 

Update修改数据

根据指定的标准化规定须求修改的行,然后修改钦定字段的数量。

语法:

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

虽说where是三个可选参数,然而平时景况下都亟待写where条件,就算不写就是修改整张表的拥有行。

示例:

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

 

修改第一条记下的人名为江老怪

UPDATE userinfo SET uName = '江老怪'

 

修改全数行的用户名为江老怪

UPDATE userinfo

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

 

 

delete删除

据悉条件删除钦定的记录

语法:

delete from 表名 where 条件

尽管如此where是两个可选参数,不过普通情况下都亟需写where条件,倘使不写就是剔除整张表的全体行。

示例:

DELETE FROM userinfo WHERE uid = 2

 

 

小练习:

① 、 回忆背诵增删改查指定的语法。

② 、 手动新建三个数据库product,在里头新建数据表product,那个表中的字段:pid(主键)、pName(产品名)、pModel(型号)、pIntro(简介)、pFrom(产地)、pPrice(价格) 。

三 、 用insert语句添加10条差其他成品数量

4、 查询

a) 查询全体成品数据

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

c) 查询全部价格在三千以上的制品

d) 查询全体产品为阿比让并且标价高于3000的制品

e) 查询全部产地不是哈拉雷的成品

伍 、 将第五条记下的出品号修改为T一千

六 、 删除全体价格低于5元的出品。

 

将第2题之后的sql语句复制到壹个word文档中,然后高管检查组员,班长检查老板。

3、5、6每题20分。

第六题中的每一个小题七分共3六分

 

命令行与高档查询

Mysql命令行

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

贰 、 弹出的指令框中指示”enter password”,输入默许密码root

叁 、 即使看到”you mysql connection”就认证你登陆成功了。

④ 、 在指令行中,每一条指令都必须以分行;甘休,否则系统会认为你那条指令还尚未形成,始终必要您继承输入。

 

翻看数据库列表

show Databases

采取数据库use

格式:

use 数据库名

选定内定数据库为眼下默许被操作的数据库。

在使用操作数据表中的多少以前,必需求选定多少个当下数据库。

 

陈列出目前数据库中的数据表

show tables

位列出多少表中的字段

格式:show columns from 表名

Describe 数据表名

 

数据库与数码操作

开创七个新的数据库

指令格式:create database
数据库名

在日前数据库中创制数据表

小心,在创立此前务必挑选当前数据库。

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

示例:

create table stdInfo(

sName varchar(20),

sAge int,

sSex varchar(5)

);

 

成立包涵自增主键的数据表

演示:创立客户表:

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 内定数据表的主键

剔除数据表

格式:drop table 数据表名

删去数据库

格式:drop database 数据库名

更改表结构:增添字段

添加三个字段

alter table student add sScore float null;

 

其中:

add 代表增加一列

Null 代表那么些字段允许空值。

student 是数量表名

sScore 是增创的字段名,前面是数据类型。

更改表结构:删除字段

alter table student drop column sScore;

 

其中:

drop column 代表删除字段操作

sScore 要被去除的字段名

student 是表名

重命名数据表

rename table student to sInfo;

 

在意:to后边是修改前的原表名,to后边是修改后的新表名。

更改表结构:添加自增主键

alter table product

 add pid int

 not null

 primary key

 auto_increment

 first;

 

其中

primary key 设置新字段为主键

first 将新字段放在其他字段的面前,处于第四个人。

 

小练习:

请同学把具备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. 找出全体年龄小于110周岁的学员学号、姓名、年龄。
  4. 学生张三转到化学系 111
    班,请更新相关的表。
  5. 剔除班级表的主键这一列。
  6. 将学员表改名为T_STD
  7. 为班级表添加字段CLS_COUNT人数字段
  8. 为班级表添加主键。
  9. 删除班级表

 

 

mysql_4_聚合函数

mysql数据库的备份与回复

备份

在phpmyAdmin中动用“导出”作用将数据表的布局与数码保存为一个.sql文件(保存格式采纳SQL)

恢复

在phpmyAdmin中点击“导入”,选用.sql文件的门道(格式采用SQL),点击执行。

 

mysql中的聚合函数

纵使对点名字段中的一列数据进行计算和运算的函数。

GROUP BY分组

在指定字段将官数据内容重复的记录,聚合为一组。剔除重复的值。

示例:

SELECT * FROM student GROUP BY sSex

SELECT sName FROM student GROUP BY sAge

 

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两个函数结合起来使用,按性别进行分组统计。

 

AVG求平均值

格式:AVG(字段名)

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

SELECT AVG(sAge) FROM student

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

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

 

 

GROUP_CONCAT分组连接

将一张表中的多行记录中的指定的字段值,连接成1个字符串。每种值时期以逗号举行分隔。平时用于获取聚合后的每种分组中包粟的分子。

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

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

 

 

ORDER BY排序

依照钦命的字段的值的大大小小的程序,来排列查询的结果。

SELECT * FROM student ORDER BY sScore

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

SELECT * FROM student ORDER BY sScore DESC

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

 

 

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

在查询结果中的钦点字段中找到最大的值或不大的值。

SELECT MAX(sScore) FROM student

//得到成绩最高分数

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

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

 

 

求和sum()

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

SELECT SUM(sSCore) FROM student

//全班总分

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

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

 

 

小练习:

一 、用Create指令创制一个产品销售记录数据表,包涵字段:产品名、销售地区、销售数量、销售金额。(拾分)

贰 、倘若本公司售卖的出品唯有二种,销售地区也唯有多少个。用insert语句插入十条产品销售记录。(产品与销售地区自然有再度值。)(1陆分)

叁 、计算每个产品的销售总额(十一分)

肆 、总计逐个产品的平均销售额。(十一分)

五 、总结每一个产品的销售总数量。(拾分)

陆 、在各样地点销售的各个产品的名目,连接成2个以逗号分隔的字符串。(1四分)

柒 、同时总计各种产品的最大销售额。(十分)

⑧ 、计算产品在各类地方的最低销售额。(十二分)

玖 、拿到总销售额。(拾壹分)

 

 

 

 

 

 

 

mysql_高档查询

数量过滤通配符

通配符,就是指可以通用的协作其他字符的记号。

%通配符

%代表私下个数的任一字符,它常常是用在select语句中与LIKE关键合营使用的。

示例:

SELECT * FROM student WHERE sName LIKE '王%'

 

摸索全部姓王的学习者

LIKE关键字在那边表示模糊查询,不是像=这样必须完全合营。

 

SELECT * FROM student WHERE sName LIKE '%五'

 

检索以“五”字最终的数量

 

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

 

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

只顾:固然数额的上马或最后为空,依然得以包容到多少,因为%不但代表私自个数的任性字符,它一样也得以象征没有字符。

注意事项:

① 、%不但代表专断个数的妄动字符,它也得以空字符。

② 、数据尾部的空格或者会苦恼通配符的寻找,比如:现有数据’abc
 ’,若是它最后有2个或七个空格的话,则
%abc将不会查找到该多少,因为后边多余的空格也是字符。消除格局是前后都加上%。

三 、%不可以匹配null值。

 

_(下划线)通配符

_ 通配符的功能与%类似,可是它不得不协作单个任意字符。

 

示例:

SELECT * FROM student WHERE sName LIKE '小_'

SELECT * FROM student WHERE sName LIKE '小__'

 

查找以“小”开首的事后随机多个字符的数额,而且必须是两个字。

 

留神:下划线与%差其他是前者不匹配字符,必须得有一个字符才能匹配。

 

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

 

 

SELECT 查询中的关键字

in关键字

在二个成团中展开匹配,只要数据与聚集中的任意一项相同,就以为数据满意条件。

 

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

 

搜寻地址是 香港(Hong Kong),马尔默,明尼阿波利斯 或 新疆的学员音讯

 

limit关键字

limite后边需求跟八个数字,代表从内定的记录开头(使用数据记录在情理上的次序而不是ID),查找多少条记下出来。

注意:

① 、 次序是从0早先的,也等于说第①条记下的序号是0

贰 、 那里的序号不对等ID,它仅仅是表示排列次序。

③ 、 LIMIT关键字是mysql所独有的,比如:mssql和Oracle中就不曾Limit关键字。

 

SELECT * FROM student LIMIT 3,2

 

从第肆条记下开头,获取之后的两条记下。

 

join关键字 – 链表

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

 

as关键字

用以对字段段取二个别名

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

 

 

多表查询

内连接

就是指仅仅查询两张表中有涉及关系的数量,而从不关联关系的数目是不会被询问出来的。

 

 
   

 

方式一: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

 

 

在多表查询的时候,为了幸免由于字段名重复而发出错误,大家得以在字段名后边加上表名,以示区分。

 

方法二:inner join

接纳inner join同样可以落成上例中的成效,而且主表与附表、连接条件一目掌握。INNEPRADO 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中华V间接写JOIN关键字,也是其中连接。

 

左连接

在两张表联合查询的时候,小编要浮现主表中包罗没有提到关系的数码在内的保有数据。

 

SELECT * FROM score

LEFT JOIN student

ON score.sid = student.sid

 

 
   

 

右连接

查询附表(JOIN关键字之后的表)中富含没有涉及关系的数量在内的持有数据。

SELECT * FROM score

RIGHT JOIN student

ON score.sid = student.sid

 

多张表连接

示例:

SELECT * FROM score

INNER JOIN student ON score.sid = student.sid

INNER JOIN class ON student.cid = class.cid

 

透过重点字IN来进行关联查询

询问全数数学成就在五十六分以上的学习者的新闻。

Select * from student where

sid in

(

    SELECT sid FROM score

    WHERE score >60 And sProject = '数学'

)

 

IN在这边表示,sid必须与()内的查询结果之一相等。

 

相关文章