转发地址:

1.1 数据库的发展史

引子

mysql官方网站上向来不 windows mysql5.7
陆十五个人版本msi的装置包下载,大家能够通过zip版本解压缩后手动安装配备情况。
msi安装的话有三十五个人的,基本上就是看着图形分界面来一步步操作,未有才干含量,不在这里演说。

此外截止二零一八年12月份,mysql
8.0.11版本己经披露,可是多数集团近日照旧在行使mysql5.x版本的呢。有意思味的话能够提前攻读一下8.0.11本子的。

但是最推荐的要么mysql被oracle收购后,使用其分支MariaDB。

 

1.1.1 萌发阶段——文件系统

文件系统

条件和注意事项

  • win7及以上操作系统
  • MySQL5.7.22 zip格式安装包
  • 5.7本子和前面包车型大巴不均等:
    • 文本夹中并未有DATA目录
    • 没有mysql默认库
    • 未有暗许的my.ini或参照的my-default.ini
    • 那是因为它的最初化方法和后边的不均等了
  • Windows的路子使用了反斜杠(卡塔 尔(阿拉伯语:قطر‎,由此,配置中运用时尽量合乎标准将反斜杠改为双反斜杠(\)或直接运用斜杠(/卡塔 尔(阿拉伯语:قطر‎。(也许有间接行使\而不受影响的卡塔 尔(阿拉伯语:قطر‎

*
以下内容是自个儿在念书SQL(卡塔尔的时候的学习笔记

1.1.2 率先代数据库——档次模型、网状模型

1.1.2.1档期的顺序模型

那是后生可畏种导航构造,导航布局的亮点:分类管理;导航布局的劣点:如若保留不是毫无二致类的数据,功能异常的低。

档次构造最大主题材料是失去了多少的完整性

图片 1

 

1.1.2.2网状模型

图片 2

 

下载

  • 下载mysql5.7.22 zip安装包
    • 官方网址下载压缩包链接:
  • 基于Computer配置选取32/陆12人版本

  • 将下载回来的mysql压缩包解压至适宜渠道,相当于您准备现在选用的干活目录

 * 学习时接受的数据库软件是MySQL数据库可视化学工业具SQLyogEnt

1.1.3 其次代数据库——关系型数据库

每个存放数据的表皆以独自的,通过国有字段建设构造关系。

图片 3

 

1、 优点:

a) 每一种都独立了,查询的时候功效高

b) 对数据的牢笼作用壮大

2、 劣点:多表查询作用低。

多学风华正茂招:非关系型数据库(NoSQL卡塔尔国,这种数据库是风流倜傥种键值对方式的数据库,查询功用高,但对数据限定效率极低。(redis、mongodb卡塔 尔(英语:State of Qatar)。非关系型数据库是对关系型数据库的生机勃勃种补偿。

配备情状变量

  • 布局景况变量:调控面板->系统和平安->系统->高档系统设置-景况变量-找到Path变量-点击编辑

  • 如图,将你和睦所定的做事目录,包罗bin的路径填进去,举个例子作者的正是E:\mysql\bin,注意和其余变量值以斯拉维尼亚语的分行;分隔开。
    图片 4

  • 安插好情况变量是为着便利我们不用每回都跻身到mysql的目录下试行。接下来是布署my.ini文件,是为了局部自定义设置。
    下载回来的根目录下未有my-default.ini
    文件,必要一向在mysql文件夹下新建文本文书档案,重命名叫my.ini,my.ini配置内容如下:

[mysqld]
# 服务端配置

# 设置mysql的工作目录,安装包解压后的路径
basedir=E:\\mysql

# 数据存放目录data,需要自行新建
# 也可以使用mysqld --initialize-insecure 命令后也会自动在根目录中生成data目录
datadir=E:\\mysql\data

# 默认连接端口3306,正式环境一般都会修改
port=3306

# 设置mysql默认字符集为utf-8
character-set-server=utf8

[client]
# 客户端配置

default-character-set=utf8
#设置mysql默认字符集为utf-8

 * 要是大家有开采什么样难堪之处请告诉我。谢啦!!☆⌒(*^-゜)v

1.2 数据库系统

数据库的精气神儿正是文本

数据库系统(DBS)=数据库(DB)+数据库处理系列(DBMS)

也便是说:数据库系统饱含数据库文件和操作数据库文件的软件。

初始化mysql

  • 在mysql根目录下新建data空文件夹。(也可不见而等初步化命令自动建卡塔尔

  • 以管理人身份运维cmd命令

  • mysql初始化

    • 输入cd
      对应mysql\bin目录,举个例子笔者的是E:\mysql\bin,进入bin目录下
    • 输入mysqld –initialize(初始化)
    • 或mysqld –initialize-insecure(不安全的选料卡塔 尔(英语:State of Qatar)
    • 双面决定于你是或不是愿意服务器生成一个富有自由伊始密码的root@localhost的账户。前面一个直接是空密码创立。
    • 为了能够有助于查看开始化进度中的音讯,能够追加 --console
      参数使mysqld将出口新闻写到调整台。
    • 诚如linux系统才须要扩充--user=mysql等等来钦命客商(事前设好读写权限卡塔尔国
    • 例,如图:
      图片 5
    • 笔录最后生龙活虎行发生的随便密码。

 

1.3 SQL

SQL是Structured
Query Language(布局化查询语言卡塔 尔(阿拉伯语:قطر‎缩写,用来操作关系型数据库的言语。

SQL语句是一个规范SQL,能够用来操作全数的关系型数据库。

安装(到windwos)服务

  • 同风姿浪漫在总指挥权限的cmd中操作,安装成服务更便利开机运营。
  • 输入mysqld --install
  • 打响会如图展现Servers Successfully installed
    图片 6

    • 若需求钦命铺排文件(mysql多实例的卡塔 尔(英语:State of Qatar)则足以在--install背后跟自定义的劳务名和--defaults-file慎选来指定安顿文件。
      mysqld --install MySQL --defaults-file=E:\mysql\my.ini
      上述命令能够在装置时钦命服务名称为 MySQL
      以至钦定布署文件路线,须求小心的是:--install总得是率先个参数,
      且服务名(若需钦定的话卡塔尔国必得紧跟其后。

    • 若是不想让MySQL服务每回开机都自动运行,能够利用--install-manual
      参数取代 --install 参数。

  • 调整台下输入net start mysql 启动mysql服务。

  • 在windows的调节面板,服务分界面下也能查看见mysql服务。
    图片 7

    • 卸载mysql服务应用的指令是mysqld --remove
    • 平常退出和停业mysql服务使用net stop mysql
      图片 8
    • 也可以有应用mysqladmin自带的管理工科具来关闭的,前提是步向到bin目录下运营:mysqladmin -u root -p shutdown
      比如小编的是E:\mysql\bin>mysqladmin -u root -p shutdown
  • linux中大家有指令来查阅进程号和杀死进程,windows中也会有,查占星关进度号采纳的是tasklist | findstr mysql
    • 杀掉进程(不推荐卡塔 尔(英语:State of Qatar)的是taskkill /F /PID 进程号
      图片 9
  • 指鹿为马日志:假诺 mysqld 未能运行成功,则可以查阅 error log
    文件,该公文在配备文件中内定的 datadir 目录中,后缀名.err
    error log 文件是足以因此 --log-error
    参数钦赐的,其余,假若想让 mysqld 将错误日志输出到调整台,能够接收
    --console 参数。

第一章 SQL根基教程

1.3.1 关系型数据库

每种集团为了越来越多的挤占市镇分占的额数,在原来的正规SQL底工上扩大本人唯有的东西用来吸引顾客。

数据库

使用语言

开发公司

access

SQL

微软

SQL Server

T-SQL

微软

MySQL

MySQL

Oracle公司收购

Oracle

PL/SQL

甲骨文公司

主题素材:已知MySQL和Oracle都协助标准SQL(SQL-92卡塔尔,请问在MySQL上编写制定的MySQL语句能或无法运转在Oracle上?

答:无法,因为MySQL是MySQL增加的事物。不能运营在Oracle上。他们一定要相互运行标准SQL。

签到和重设密码

  • 启航mysql服务,登入连接到mysql服务器。
    • mysql -uroot -p输入后面记下的妄动密码登录。
      图片 10
    • 若以前您选取--initialize-insecure
      参数初步化,则利用如下命令来连接MySQL:|
      mysql -uroot --skip-password或平等运用mysql -uroot -p在提示输入密码时直接回车就能够步向。
  • mysql5.7遏抑你随意做何操作都要先将轻便密码重设成温馨定义的密码。
  • 诚如第叁次可用mysqladmin方式重设root密码,如图:
    mysqladmin -uroot -p password
    图片 11

  • 再也平常登入数据库后,也可间接在mysql内直接更改顾客权限或user表情势更改密码。

    • 例:
      mysql> update mysql.user set authentication_string=password('') where User="root " and host="localhost";
    • 5.7原先的版本是利用password字段保存密码的,5.7改成了authentication_string,不易于记念。
    • 更改密码后必要输入flush privileges;指令来刷新生效。
    • 由于authentication_string不太轻便记念,也可能有直接改权限的,例:
      ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'
      图片 12
    • 同样flush privileges;命令来刷新权限即生效。

一、SQL简介

1.4 MySQL操作进度

图片 13

强制跳过密码登陆

  • 适用于忘记密码或个体学习使用并不想每一趟连败入密码,但前面一个能够安装密码为空,所以此情况重要照旧用在忘记密码了,须要跳过密码来报到后重设密码的场合。

  • 第风姿洒脱种,临时跳过密码。

    • 执行 mysqld --skip_grant_tables 运营服务
    • 小心此时应再开多二个cmd窗口来作为客户端连接服务端,登陆的时候一贯回车不须求密码。
    • 然后就是重设密码了。设置成功后记念甘休mysqld服务,重新起动符合规律需密码的服务。
  • 其次种,需长期跳过密码(全数客户都不要密码就能够连接卡塔尔。
    • 在安插文件,my.ini中的[mysqld]下增添风度翩翩行
      skip_grant_tables意味着跳过权限表。
    • 再施行mysql服务运营,就是无权力管理的连天了。极不安全,只适用于民用测量试验或学习碰着。
    • 此安插生机勃勃打响后,客商端连接mysql只需敲mysql就直接进mysql了。如图:
      图片 14
  • 注意,skip_grant_tables 中间间距是下划线。

1:什么是SQL?

1.5 启动\关闭MySQL服务

设置友好提醒符

连接上去,使用的时候,你会发觉MySQL 顾客端的私下认可提醒符是
“mysql>”,基本上没什么实际意义。
校勘那个提醒符,让它显得一些得力的音信,比方当前所在的数据库等。
修章有各个,当中前三种只对当前连接有效,后二种则对全体连接有效。

  • 1、连接客商端时透过参数内定。
    mysql --prompt="(\u@\h) [\d]> "
    如此提醒符就能化为 (user@host) [database]>
    中间常用的字符参数有:

\D 完整的日子
\d 当前数据库
\h 服务器地址
\u 用户名

  • 2、连接上顾客端后,通过 prompt命令 PROMPT (\u@\h) [\d]>修改。
    例:

mysql> PROMPT (\u@\h)[\d]>
PROMPT set to '(\u@\h)[\d]>'
  • 3、在 MySQL 的配置文件中布署。

[mysql]  
 prompt=\\u@\\h [\\d]>\\
  • 4、通过遭逢变量配置。
    export MYSQL_PS1="\u@\h [\d]> "

【end】

A:SQL指构造化查询语句    B:SQL使大家有手艺访谈数据库
    C:SQL是大器晚成种ANSI(美利坚独资国国标化协会)的正规Computer语言

1.5.1 主意大器晚成:在劳动面板中运维或关闭

图片 15

 

 

多学大器晚成招:通过命令张开服务面板

开拓运营面板(win+Haval),在面板中输入services.msc

图片 16

 

2:SQL能做哪些?

1.5.2 主意二:通过命令行运营和停业

运转服务:net start +服务名

关门服务:net stop +服务名

图片 17

 

 

 

图片 18

 

多学风流倜傥招:net start
展现当前全数的服务列表。

*面向数据库实行查询   *从数据库中抽出数据   *向数据库插入新的记录   

1.6 MySQL客户端

 

*立异数据库中多少   *从数据库删除记录   *创制数据库   *创建表   

1.6.1 MySQL自带的指令行客商端

设置MySQL后,会自带一个MySQL 5.5 Command Line
Client命令行客户端。

图片 19

 

 

双击打开,输入密码,就一而再再三再四上服务器了。

破绽:此客户端只好接二连三本地的MySQL服务器。

*始建存款和储蓄进程   *开创视图   *安装表、存款和储蓄进程和视图的权杖

1.6.2 window分界面客商端

1、 MySQL-Front

2、 Navicat

3:RDBMS

1.6.3 web界面

phpMyAdmin

RubiconDBMS是指关系型数据库管理连串

1.6.4 windows的命令行

运行——cmd

XC90DBMS是SQL的根底,相通也是富有现代数据库系统的底工,如MS SQL Server、IBM
DB2、Oracle、MySQL以至Microsoft Access

1.7 windows命令行连接服务器

host主机-h

username用户名-u

password密码-p

port端口-P

图片 20

 

 

小心:假诺陈设了MySQL的情形变量,实施mysql命令就不要求踏入mysql.exe的目录。

127.0.0.1意味当地地址,等价于localhost

多学风华正茂招:假若老是的是地面包车型客车MySQL服务器,-h能够简单;假如使用的是3306端口,-P也得以省略

图片 21

 

能够通过密文来报到

 图片 22

 

PAJERODBMS中的数据存款和储蓄在被称为表的数据库对象中

1.8 脱离MySQL顾客端并关闭连接

1、 exit

 图片 23

2、 quit

 图片 24

 

3、 \q

图片 25

表是连锁的数据项的汇集,他由列和行组成。

1.9 数据库基本概念

1、 数据库和表

数据库用来寄放表,表里面贮存数据,叁个数据库能够存放多少个表,叁个表中存放多少个数据

图片 26

 

 

2、 关系:五个表的公共字段称为关系

3、 行:也称之为记录,也称之为实体

4、 列:也称得上字段,也号称属性

在布局上称为行和列

在数据上称作记录和字段

5、 数据冗余:相同的数额存款和储蓄在分化地方

图片 27 

眼下只顾:冗余只好削减,不能够杜绝。减弱冗余后,表的数目就增添了。

6、 数据完全性=准确性+精确性

对的:数据类型准确

精确性:数据的界定正确

观念:学子年龄是int型,输入10000岁,正确性和正确性如何?

答:正确的,但是不许确

二、SQL语法

1.10 数据库操作

只顾:SQL对大小写不明感!!!

1.10.1 成立数据库

1、语法:create
database if not
exists`数量库名` charset=字符编码

图片 28

 

2、假诺创立的数据库已经存在,则会报错

图片 29

 

 

减轻:创设时等候法庭判果决一下,数据库是或不是留存,假使不真实就创办

图片 30

 

 

3、假诺数据库名是任重(英文名:rèn zhòng卡塔尔国而道远字或非常字符会报错

图片 31

 

 

消灭净尽:是数据库名上加上反引号

图片 32

 图片 33

图片 34

 

为了确认保证开创数据库成功,能够在有着的数据库名上加上反引号

4、能够给创制的数据库钦赐字符编码

 图片 35

 

 图片 36

 

1:SQL语句前边的分局

1.10.2 MySQL数据库目录

1、 此目录在装置mysql服务器的时候选用路线

2、 能够在my.ini中查阅并转移

 图片 37

 

3、 创立多个数据库就在data文件夹下成立八个与数据库同名的文件夹,并在那文件夹下多了三个db.opt文件。db.opt文件是设置数据库的字符集和核对集。

 图片 38

 图片 39

好几数据库系统要求在每条SQL命令的前边使用分号。

1.10.3 呈现数据库

语法:show databases;

 图片 40

 

information_schema:存款和储蓄了mysql服务器的保管数据库的新闻。比方:数据库名、表名、字段名、字段的数据类型、访谈权限

performance_schema:MySQL5.5猛增的贰个数据库,主要用以搜罗数据库服务器质量参数。

mysql:mysql系统数据库,保存比方顾客名、密码

test:给客户学习测量检验用的数据库

支行是在数据库系统中分隔每条SQL语句的科班方法,那样就能够在服务器的同等须要中试行一条以上的讲话。

1.10.4 来得创制数据库的SQL语句

语法:show create database `数据名`

图片 41

借使利用的是MS Access和SQL Server
二零零零,则不用在每条SQL语句之后采用分号,不过有些数据库必要必需利用分号。

1.10.5 改进数据库

只得修改数据库字符编码

语法:alter database `多少库名` charset=字符编码

 图片 42

2:SQL DML和DDL

1.10.6 删除数据库

1、语法:drop
database [if
exists] `多少库名`

图片 43

2、若是去除的数据库一纸空文会报错

图片 44

缓慢解决:删除早先决断一下,存在就删除

 图片 45

 

能够把SQL分为多少个部分:数据操作语言(DML卡塔 尔(英语:State of Qatar)和数据库定义语言(DDL卡塔尔

1.10.7 选择数据库

语法:use `数据名`

图片 46

SQL(布局化查询语句卡塔尔国适用于实行查询的语法。不过SQL语言也暗含用于更新、插入和删除记录的语法。查询和翻新构成了SQL的DML部分:select、update、delete、insert
into 。
数据库定义语言(DDL卡塔尔部分使大家有力量创建或删除表格,我们也能够定义索引(键卡塔 尔(英语:State of Qatar),规定表之间的三回九转,以至事假表间的羁绊:

1.11 表的操作

Create database、alert database、create table、alert table、drop
table、create index、drop index

1.11.1 创建表

语法:

create
table
[if
not exists] `表名`(

字段名 数据类型 [null|not
null] [default]
[auto_increment] [primary key] [comment],

……

)[engine=存款和储蓄引擎]
[charset=字符编码]

null|not
null:是还是不是为空

Default: 默认值

Auto_increment:
自动拉长

Primary
key:
主键

Comment: 备注

Engine:存款和储蓄引擎,分化存款和储蓄引擎表示分化的多少存款和储蓄方式

Charset:设置表的字符编码

1、创设最简便的表

图片 47 

2、创造复杂的表

图片 48

 

 

三、Select

1.11.2 数据表文件

一个数据库对应二个文书夹,二个表对应贰个或几个公文。

1、引擎是myisam,三个表对应多少个公文

 图片 49图片 50

2、引擎是innodb,贰个表对应是三个文本

图片 51

 

 

 

有着的innodb的多少放在多少个集结的公文中管理,路线在data文件夹下ibdata1文书。假如数据量比较多,mysql会自行的生成ibdata2,ibdata3,…文件

多学意气风发招:myisam引擎的表彼此之间独立, Myisam的表能够随意的正片粘贴。innodb引擎的表互相之间不独立,

User表里面包车型客车数码如下

1.11.3 myisam和innodb引擎

1、 Myisam

a) 读取速度快

b) 对数码的束缚本领低(不扶助触发器,存款和储蓄进度等等卡塔 尔(阿拉伯语:قطر‎

c) 轻松发生多量零散

2、 Innodb

a) 读取速度未有myisam快

b) 对数码的封锁技艺强(帮助触发器,存款和储蓄进度等等卡塔尔

c) 不发生碎片

 图片 52

1.11.4 给钦定的数据库中创建表

图片 53

查询user表里面包车型地铁user_name字段和user_age字段的保有数据

1.11.5 显示表

语法:show tables;

图片 54

 

Select user_name,user_age from user

1.11.6 展现表的成立语句

语法:show create table
表名[\G]

图片 55

 

\G的作用:

\G是将展现的字段竖着排列

 图片 56

1.11.7 查看表布局

语法:describe[desc] 表名

图片 57

 

图片 58

 

查询user表中负有的字段数据,用 * 表示列的称谓

1.11.8 复制表

依附以往的表创立三个新表

语法一:create table
新表 select
字段1,字段2 from
旧表

图片 59

 

眼下只顾:这种措施创造表不可能从父表中复制主键,自动增加;但是父表中的数据被复制过来。

语法二:create table 新表
like 旧表

图片 60

 

时下只顾:like的方法只可以复制表布局,无法复制表数据。

Select * from user

1.11.9 修改表

语法:alter table 表名,能够对表增加字段,删除字段等等操作

1、 增添字段   add [column]

1、在终极一列后边加多字段

图片 61

 

2、将字段增多到第一列

图片 62

 

3、将拉长的字段放在钦点字段之后

图片 63

 

2、 删除字段

图片 64

不可能清空全数的字段。

3、 修正字段 modify
  change

a) 只改字段属性,不改字段段名(modify)

将name的属性改为varchar(30),并将地点移动到第一列

图片 65

能修正字段的享有属性,除了字段名和暗中同意值,备注,能够增加任性属性,

b) 改属性并改字段名

将name改名字为myname
varchar(10)并将地方坐落于id的末尾

图片 66

 

图片 67

能改改字段的保有属性,能够增多大肆属性,除了私下认可值,假如想设置 
 

4、 订正引擎

图片 68

 

5、 校订表名   rename to

图片 69

 

6、将stu1表移动到data数据库下并改名换姓为stu.

图片 70

 

 图片 71

1.11.10 删除表

语法:drop table [if
exists] 表1,表2.表3,…

去除多个表

图片 72

 

除去从前能够剖断表是不是存在

 图片 73

 

能够一次决断八个表是不是留存

图片 74

 

四、Distinct

1.12 数据操作

新建测量试验表

create
table stuinfo(

id
int auto_increment primary key comment ‘主键’,

name
varchar(20) not null comment ‘姓名’,

sex
char(1) not null default ‘男’ comment ‘性别’,

score
int comment ‘成绩’

)engine=innodb
charset=utf8;

Distinct接收全体的值的时候不会冒出重复的数码

1.12.1 安插数据

语法:insert into 表名
(字段名) values (值)

 

总结:

1、 值的个数、顺序和插入字段的个数、顺序必得生龙活虎致。

图片 75

 

2、 自动增进列能够手动输入数字,也足以经过null让MySQL自动拉长

图片 76

 

3、 插入字段和表字段顺序能够不一致等,然则插入的值必需和插入字段的各种后生可畏致。

 图片 77

 

4、 如若插入值的次第、个数和表字段的次第个数后生可畏致的话,插入字段能够回顾

 图片 78

 

5、 插入暗中认可值

a) 假设二个字段有暗中同意值,此字段上未有值的插入就能够自动的插入暗许值

 图片 79

 

b) 通过default关键字插入暗中认可值

 图片 80

 

6、 壹回插入多条数据

图片 81

7、 使用insert…set插入数据

 图片 82

 

用平时的查询,查询全部

1.12.2 校勘数据

语法:update 表名 set 字段名=值
[where
条件] [order by 排序]
[limit 限制]

将rose的性别改成“女”,成绩改成66

图片 83

将班级的前3名同学性别改成男

 图片 84

 

Select * from user

1.12.3 除去数据

语法:delete from 表
[where条件] [order by
排序 asc|desc] [limit
数量]

–删除学号是1的上学的小孩子

图片 85

 

–删除第一名

 图片 86

 

–删除战绩在80分以下的

 图片 87

 

–清空表 

图片 88

 

 

多学豆蔻梢头招:清空表的措施有五个,第三个是delete
from 表名,还会有三个是truncate table 表名。delete from
表名实践过程是将数据一条一条的顺序删除。truncate table实施进程是将总身体表面删除同期创制一个后生可畏律的表,很明朗这种格局清空表的频率高。

图片 89

 

Select
* from  表名
 删除表的时候自拉长的性能还在,在重新参加的时候会一而再一而再自增进的键值。

 图片 90

1.13 字符集

字符集:可知字符在封存和传导时对应的二进制编码群集。由概念可以知道,字符

集在多个地点选取

1、 数据存款和储蓄的时候

2、 数据传输的时候

Select distinct user_name,user_age from user

1.13.1 数码存款和储蓄的时候使用字符集

MySQL能够在服务器、数据库、表、字段上设置字符编码

图片 91

 

只顾:字符编码在数据库上安装就能够了。

注意:不能有user_id,因为五个Mary的user_id分化等,加上就不算相近数量

1.13.2 数据在传输的时候使用字符集

场景:

1、 成立表的时候只用中文就报错

图片 92

 

2、 在插入数据中冒出汉语报错

 图片 93

 

分析

图片 94

 

顾客端发送的编码有顾客端决定的。大家今天用的客商端是windows的命令行,查看命令行的编码:客户端右键——属性——

图片 95

 

查阅服务编码

图片 96

 

解决:告诉服务器通过gbk编码分析发送SQL语句。语法:set
变量名=值

图片 97

 

到现在安顿成功!

现象:查看插入的数量

图片 98

 

原因:回来的编码是utf8,客商端用gbk去深入分析的。

解决:将回来的结果编码设置为gbk;

图片 99

 

双重查询,成功

专心:我们日常只进行set
names ‘字符编码’,因为那一个SQL语句能够贰回变动3个变量。

图片 100

 

 图片 101

1.14 校对集

五、Where

1.14.1 概念

在某种字符集下,字符和字符的可比关系。比方a和B的轻重缓急关系,要是分别朗朗上口写a>B,倘使不区分朗朗上口写a<B。这种相比较的涉及是有核对集决定的。

核查集依赖于字符集,区别的字符集他们的可比法规也不平等,借使字符集发生变动,查对集也要双重定义。

昨今区别的核对集对同生机勃勃组字符相比结实不生机勃勃致的。

1:查询user_id等于1 的数据

1.14.2 定义查对集

语法:collate=校对集

概念七个表,查对集不均等

create
table t1(

name
char(1)

)charset=utf8
collate=utf8_general_ci;

 

create
table t2(

name
char(1)

)charset=utf8
collate=utf8_bin;

布署测量检验数据

insert
into t1 values (‘a’),(‘B’);

insert
into t2 values (‘a’),(‘B’);

因此排序查看结果

图片 102

 

图片 103

 

核对集名字法规

_bin:表示按二进制编码举办相比

_ci:不区分朗朗上口写

_cs:区分抑扬顿挫写

华语排序法规:依据汉字的拼音来排序

Select * from user where user_id = 1

1.14.3 来得全数的字符集

图片 104

 

 图片 105

1.14.4 展现全体的核查集

图片 106

 

2:查询user_age大于等于12的数目

Select * from user where user_age >=12

 图片 107

3:查询user_age不等于12的数据

Select * from user where user_age <> 12

 图片 108

六、ADN 和 OR

And和or在where子语句中把三个或七个标准化构成起来。假若需求七个规格都创建正是用and如若只须求中间叁个尺度创立就使用or

Select * from user where user_name = ‘mary’ and user_age = 12

急需专一的是SQL使用单引号来围绕文本值,若是是数值则没有必要引号

 图片 109

Select * from user where user_name=’mary’ or user_age =13

 图片 110

组合and和or使用圆括号来组合复杂的表达式

Select * from user where (user_name = ‘mary’ and user_age = 12)
or(user_age =13)

 图片 111

七、Order by

1:对点名列进行升序排列

Select * from user order by user_name

 图片 112

2:按照user_id逆序排列

Select * from user order by user_id DESC

 图片 113

2:依照升序排列user_id逆序排列user_age

SELECT * FROM user order by user_id ASC,user_age DESC

 图片 114

3:根据升序排列user_id逆序排列user_age

SELECT * FROM user order by user_age DESC,user_id ASC

 图片 115

注意:前边的准则优先级更加高!!

八、Insert

User表

 图片 116

安排豆蔻年华行数据 user_id为2 user_name为tom,user_age为12

专心:即使每风姿洒脱项都有插入的话就无需在前面列出列名!!

Insert into user values(2,’tom’,12)

图片 117

新插入大器晚成行数据,只供给user_name为eva

Insert into user(user_name) values(‘eva’)

瞩目:因为ID设置为自增,所以user_id不为null

 图片 118

九、Update

修改user_id为6的数据user_age为14

Update user set user_age=14 where user_id=6

 图片 119

修改user_id为1的数据user_name为ann,user_age为11

Update user set user_name=’ann’,user_age=11 where user_id=1

图片 120

十、Delete

User表中的全部数据新闻如下

 图片 121

删除user_age为12的数据

Delete from user where user_age=12

 图片 122

去除表中的全体数据

Delete from user

 图片 123

第二章 SQL高端教程

一、Top

Top子句用于再次回到要回去的笔录的数码,但实际不是独具的数据库都支持top子句

1:SQL Server

Select top 5 * from user

2:MySQL

Select * from user limit 5

3:Oracle

Select * from user where ROWNUM <= 5

二、Like

User表的初阶数据如下

图片 124

1:寻找以li起初的数目

Select * from user where user_name like ‘li%’

图片 125

2:搜索以ry结尾的数额

Select * from user where user_name like ‘%ry’

 图片 126

3:找寻含有a的多寡

Select * from user where user_name like ‘%a%’

 图片 127

4:搜索第三个字母是a第多个字母是y的数码

Select * from user where user_name like ‘_a_y’

 图片 128

三、通配符

在搜寻数据库中的数据的时候SQL通配符能够取代一个或五个字符。SQL通配符必得与like运算符一同利用

1: _ 替代一个字符

寻找第4个字母是a第多个假名是y的多寡

Select * from user where user_name like ‘_a_y’

 图片 129

2: % 代替二个或两个字符

搜索以ry结尾的数码

Select * from user where user_name like ‘%ry’

 图片 130

3: [] 字符列中的放肆二个单字符

寻找以a也许l先导的数量

Select * from user where user_name like ‘[al]%’

寻找不是a或许l开端的数码

Select * from user where user_name like ‘[!al]%’

四、In

倘使数据知足in里面包车型大巴叁个规格就足以了

找到user_age是12或者13的数据

Select * from user where user_age in (12,13)

 图片 131

找到user_name是Harry和Mary的数据

Select * from user where user_name IN (‘mary’,’harry’)

 图片 132

五、Between

选料七个值时期的数目

询问年龄在12和14之间的数额

Select * from user where user_age between 12 and 14

 图片 133

查询字母在阿丽丝和John之间的多寡

Select * from user where user_name between ‘alice’ AND’john’

 图片 134

发表评论

电子邮件地址不会被公开。 必填项已用*标注