mysql数据库功底知识

数据库操作(DDL卡塔尔国

mysql笔记

好久没梳理下Mysql根底命令了.今日苦中作乐收拾了下,纵然很简单…不过照旧有须要巩固下底蕴滴啦

什么是数据库

数据库看名就会知道意思,就是用来存款和储蓄数据的工具,用一个比重形象的事例来比喻,正是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

一,补充

1.创造表:在此以前供给use database database_name 然后create table
表名();

关系型数据库

不怕以行与列构成的二维数据表的花样,用来囤积数据的,况兼将多张数据表存储在贰个单元中的存款和储蓄格局,就称为关系型数据库。

查阅当前服务器下的数据库列表

SHOW { DATABASES | SCHEMAS }

cd
;dos窗口查看文件夹,盘与盘之间没有供给cd

例:创造职员和工人表tb_employee1,构造如下表所示

数据表

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

查看数据库的概念

SHOW CREATE  { DATABASE | SCHEMA } db_name

has
a;生命周期,具备,自个儿的

字段名称

数据类型

备注

id

int(11)

员工编号

name

varchar(25)

员工名称

depld

int(11)

所在部门编号

salary

float

工资

记录

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

不足为奇来说,每条数据记录都有二个ID号,大家能够把那一个id领悟成是excel中的行号,用来对每条记下实行区分与标识。

查看上一步操作的警戒消息

SHOW WARNINGS

use
e;使用,传进来的

mysql> create database aa;
mysql> use aa;
mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float);

主键

好些个时候我们将id称为主键,主键那是指这张表的排列顺序的基于。

删除数据库

DROP  { DATABASE | SCHEMA } [IF EXISTS] db_name

and;和

 2.主键限制:主键又称主码,是表中一列或多列的结合。主键约束必要主键列的数额唯生机勃勃,况兼不可能为空。主键能够唯大器晚成标记表中的一条记下,能够组成外键来定义分化数据表之间的关系,並且能够加快数据库查询速度。主键分为两种类型:单字段主键和多字段联合主键。

字段

数量字段,便是数据表中的列。

每三个字段都亟待钦命三个称呼,用来表达该列数据的效果,就叫作字段名。

开发数据库

USE db_name

is e;是

(1)单字段主键

常用的数据库的品类

Mysql 质量大胆,能够无需付费应用。

MSSQL server 微软集团的数据库软件,平时用于搭配微软种类的编制程序语言。

Access是office的办公室套件之少年老成。

Oracel 品质非强悍,也非常昂贵。

改进数据库的编码方式

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

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

mysql> create table tb_employee1(id int(11)primary key,name varchar(25),depld int(11),salary float);
mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id));

安装与使用mysql

设置mysql的方法超级多,大家使用phpstudy那些软件来设置php + mysql的周转条件。安装之后,大家就持有了mysql的劳务。而且还会有五款mysql客商端。

 

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

 

顾客端用来将服务端的数额,以顾客能够清楚的法子体现在其分界面上。

 

数据表操作

ip

(2)多字段联合主键

phpMyAdmin

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

在桌面右下角的phpstudyLogo上右击弹出菜单中选用phpMyAdmin就足以运转步入了。运转现在,须求输入客商与密码实行登录,默许的顾客名密码都是root。

 

MYSQL中的数据类型

本机ip;127.0.0.1

mysql> create table tb_employee1(id int(11),name varchar(25),depld int(11),salary float,primary key(id,name));

新建数据库

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

2、 平日采用utf8_unicode_ci字符集,在独有汉语的情状下,能够筛选gbk_chinese_ic或gb2312_chinese_ci 。

 

大背头系列

数据类型 存储范围 字节
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

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

 3.外键约束:外键用来在七个表之间组建联系,它能够是一列或许多列。四个表能够有三个恐怕四个外键。外键对应的是参照完整性,二个表的外键能够是空值,若不为空值,则每二个外键必需等于另二个表中主键的有个别值。

新建数据表

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

2、 钦命数据表的字段,相当于列。在钦定字段的进度中大家要对字段增多字段名、数据类型、数据长度、是否是主键、是还是不是自增。(繁多情景下,主键是名称为id的大背头类型,并且是自增的。)

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

浮点类型

数据类型 存储范围 字节
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

二,mysql基础

下边介绍多少个概念。是表中的一个字段,它能够不是本表的主键,但相应此外叁个表的主键。外键的第一意义是保证数据援用的完整性,定义外键后,不准删除在另三个表中具备关联关系的主键。比如:部分表的主键id,在表tb中有二个键deptld与那一个id关联。

自增auto_increment

自增字段中司空见惯存放的是整数类型的数目,用于表示数据库中的记录的序号。

自增字段的值无需手动输入,在那之中的数码是自行发出的,每当向这表里面加多一条新记录的时候,自增字段会自动收取上后生可畏行字段值,然后加蓬蓬勃勃,作为新记录的主键值。(主键相对不会爆发再一次,尽管上一条记下被删去了)。

字符串类型

数据类型 存储需求
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,数据库;

主表(父表):对于八个具备关联关系的表来讲,相关字段中主键所在的可怜表正是主表。

何以设置一个字段为自增

1、在开立表或在改善字段布局的时候,设置字段的数据类型为int,然后选中auto_increment上的勾。

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

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

日期时间项目

数据类型 存储范围 存储需求
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,积累数据以至数据结构的厂库。(db);

从表(自表):对于四个具备关联关系的表来讲,相关字段中外键所在的老大表正是从表。

怎么样设置主键

1、在创建表或在校正字段布局的时候,在主键字段的”索引”下拉菜单中接收“primary”。(一张表只允许设置叁个主键,日常它是int自增的。)

 

二进制类型

2,数据库是单身;

例:定义数据表tb_employee5,而且在该表中创立外键限制

小练习:

1、 新建一个出品product数据库

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

3、 增多5条产物音讯

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

5、 加多5条成品入库记录。

 

JSON类型(ver5.7新增)

2,数据库是用来治本,查询,储存数据的;

成立二个机关表tb_dept1,表结构如下表所示

mySQL中的数据类型

在mySQL中种种字段,都必需分明它存放的数码的体系,生机勃勃旦钦点了档案的次序,该字段(列)中的数据都必需切合那一个类别的限定,不然就能引起错误。

 

同期字符等品类需求内定内容的最大尺寸。

 

积攒引擎

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

字段名称

数据类型

备注

id

int(11)

部门编号

name

varchar(22)

部门名称

location

varchar(50)

部门位置

int整数类型

只好贮存整数

查看MYSQL协理的存款和储蓄引擎

SHOW ENGINES

2,属性;字段

mysql> create table tb_dept1(id int(11)primary key,name varchar(22),location varchar(50));
定义数据表tb_employee5,让它的deptld字段作为外键关联到tb_dept1的主键id:
mysql> create table tb_employee5(id int(11)primary key,name varchar(25),deptld int(11),salary float,constraint fk_emp_dept1 foreign key(deptld) references tb_dept1(id));

varchar字符类型

能够储存任一字符,包蕴符号、数字、字母,然则她们都会被当成字符为拍卖。

翻成本持的积存引擎信息

SHOW VARIABLES LIKE 'have%'

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

 4.非空束缚(not
null):是指字段的值无法为空。对于使用了非空节制的字段,倘若顾客在累计数据风还未点名值,数据库系统会报错。语准绳则:字段名
数据类型 not null

Date日期

用来存储日期和岁月

查看私下认可的贮存引擎

SHOW VARIABLES LIKE '%storage_engine%'

3,编码设置;

例:定义数据表tb_employee6,内定工作者的称号不能够为空

数值类型

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

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

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

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

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

 

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

Double 双精度浮点数,8字节,最小值,正负2.2250738507贰零壹陆E-308,最大值:正负1.17976931348623157E+308。

 

Decimal
以字符串格局储存浮点数。它的取值范围不是一定的,决计于客户钦点的长度。

常用存款和储蓄引擎(注意各引擎优劣势卡塔尔国

  • InnoDB
  • MyISAM
  • Memory

gbk;中国和东瀛斯拉维尼亚语言

mysql> create table tb_employee6(id int(11)primary key,name varchar(25)not null,deptld int(11),salary float);

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

封锁规范

三个表只能有三个主键(PMuranoIMATY KEY卡塔尔(英语:State of Qatar),然则能够有三个唯生机勃勃(UNIQUE
KEY卡塔尔(英语:State of Qatar),唯大器晚成的字段的值不准现身重复,然则NULL值不算做重新的值

  • PRIMARY KEY 主键,P猎豹CS6IMAWranglerY可省略 (注意:P奥迪Q7IMA奇骏Y KEY(a,b,c,…卡塔尔国来定义叁个主键时,由a,b,c,…全部的值技术分明三个主键,即贰个表包蕴a,b,c…等字段,当中单独的a,b,c字段相等,是能够的,但无法一切对等,全部对等表明主键相等,不可插入。)
  • AUTO_INCREMENT 自增,须求和主键(P奥迪TTSIMAMuranoY
    KEY卡塔尔搭配使用。可在开创表时自定义从有个别数开首,如CREATE TABLE
    tbl_name(id INT key
    AUTO_INCREMENT,……)AUTO_INCREMENT=数值,表示当中自增字段从今今后数值初步。(也可通过ALTER
    TABLE tbl_name AUTO_INCREMENT=数值改正卡塔尔(英语:State of Qatar)
  • FOREIGN KEY 外键
  • NOT NULL 非空
  • UNIQUE KEY 唯一,KEY 可省略
  • DEFAULT 默许值 插入数据时可应用DEFAULT

gb1312;中文

 5.唯生龙活虎性约束:需要该列唯大器晚成,允许为空,但一定要出现一个空值。唯后生可畏性限定能够确认保证一列或然多列都无法现身重复值。

unsigned属性

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

数据表的创办

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

utf8;大型编码;

(1)在概念完列之后平素钦点唯一约束

unsigned zerofill属性

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

翻开当前数据库下的数据表

SHOW TABLES;

4,默许引擎;

语法则则:字段名 数据类型 unique

auto_increment

自增

查看表布局及创立音讯

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

INNODB;默认的

mysql> create table tb_dept2(id int(11)primary key,name varchar(22)unique,location varchar(50));

默认à定义

本条选项代表,填充数据时只要该字段为空值时,所使用的默许值。

改正表构造

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

(2)在概念完全部列之后钦点唯后生可畏限制

字符串数据类型

字符类型能够积攒任何值,以致是二进制格局的图像、声音、视频。

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

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

修正表名

ALTER TABLE tbl_name RENAME [TO|AS] new_name

或者

RENAME TABLE tbl_name TO new_name

5,常用的有的数据库

语准绳则:constraint 约束名 unique(字段名)

仓库储存大容积的文本

TinyBlob ,blob,TinyText,text

前多个是意味着二进制字符串,后三个是意味非二进制字符串,都足以积存大量的公文新闻。

MediumBlob,MediumText

LongBlob,LongText

增多字段

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

若须求加上多个字段,必要多个ADD操作,以“,”号分隔

sqlserver
,access是微软的数据库

mysql> create table tb_dept3(id int(11)primary key,name varchar(22),location varchar(50),constraint sth unique(name));

枚举类型

ENUM / SET 类型

安装其默许值为(‘值1’, ‘值2’, ‘值3’,…卡塔尔,由客商钦命三个可选值,字段中的值必得是里面之风度翩翩,最四只可以有65533个可选值。

 

删除字段

ALTER TABLE tbl_name DROP 字段名称

若要求删除五个字段,必要七个DROP操作,以“,”号分隔。

注意:增加字段(ADD卡塔尔国与删除字段(DROP卡塔尔能够在同八个言辞里面(ALTE中华V TABLE
tbl_name ADD …..,DROP …..)

oracle,mysql,java都是oracle公司的

unique和primary
key的不一致:二个表中可以有三个字段注明为unique,但只好有三个primary
key申明;表明为primary
key的列不容许有空值,不过评释为unique的字段允许空值的存在。

日牛时间等级次序

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 1970-01-01 00:00:00 到2037年的之间的某二个时刻

Year 存储1901~2155年的八个寒暑。

 

校勘字段

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

dbz
是IMB公司的

 6.暗中认可节制:钦命某列的暗许值。如男子同学很多,性别就足以默以为“男”。假使插入一条新的记录时未尝为那个字段赋值,那么系统活动会为那个字段赋值为男。

小练习:

1、 创造一张职员和工人数据表,employee,富含字段:eId(标准整数,主键、自增卡塔尔(قطر‎、姓名eName(varchar,50卡塔尔(英语:State of Qatar)、年龄eAge(tinyInt,无符号)、工号eNum(smallInt,不足的位数用0填充)、教育水平(枚举:初级中学~学士)、性别(枚举:男,女)、出华诞期(DateTime)、基本薪俸(Float,私下认可:1300)、自小编吹捧text。然后输入五名职员和工人的音讯。

 

 

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

改良字段名称

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

sybase
是sybase公司的;

语法法则:字段名 数据类型 default 默许值

SQL语句

是一门特意用于数据库操作的言语,SQL语句的语法不仅适用于mysql数据库,同偶然候也适用于差相当的少具备的主流数据库。当然分裂集团出口的数据库在语法细节上依旧有一些出入。

 

增加默许值

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

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

例:mysql> create table tb_employee7(id int(11)primary key,name varchar(25)not null,deptld int(11)default 1111,salary float);

select语句

询问语句,特地用于在数量表中依据客户钦赐的尺度举行询问。

除去暗中认可值

ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT

1,基本命令

 7.设置数据表的属性值自动扩展:在数据库应用中,平常希望在历次插入新数据时,系统会自动生成字段的主键值。可感觉表主键加多auto_increment关键字来贯彻。在mysql中,默许景况下auto_increment初始值为1,每新增加一条记下,字段自动加1.三个表只能有二个字段使用auto_increment限制,且每一个字段必需为主键的生机勃勃某个。auto_increment节制的字段能够是任何整数类型(tinyint/samllint/int/bigint)。

简单易行语法描述:

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

 

增添主键

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

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

语准绳则:字段名 数据类型 auto_increment

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 中字符串用单引号表示)

删去主键

ALTER TABLE tbl_name DROP PRIMARY KEY

2,退出;exit

例:定义数据表tb_employee8,钦定工作者标号自动扩展

逻辑与and

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

 

增加唯后生可畏

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

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

mysql> create table tb_employee8(id int(11)primary key auto_increment,name varchar(25)not null,deptld int(11),salary float);

逻辑或or

SELECT * FROM product

WHERE pPrice <800 OR pId >6

 

删去唯后生可畏

ALTER TABLE tbl_name DROP  {INDEX| KEY} index_name

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

 

逻辑非not

SELECT * FROM product

WHERE not pName = '中兴z954'

 

 

改过表的储存引擎

ALTER TABLE tbl_name ENGINE=存储引擎名称

5,当前光阴;select
curtime(卡塔尔(英语:State of Qatar);

mysql> insert into tb_employee8(name,salary) values('lucy',1000),('lii',800),('cai',20000);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from tb_employee8;
+----+------+--------+--------+
| id | name | deptld | salary |
+----+------+--------+--------+
|  1 | lucy |   NULL |   1000 |
|  2 | lii  |   NULL |    800 |
|  3 | cai  |   NULL |  20000 |
+----+------+--------+--------+
3 rows in set (0.00 sec)

insert插入数据

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

更改表的自拉长值

ALTER TABLE tbl_name AUTO_INCREMENT= 值

6,打字与印刷版本音讯;select
version(卡塔尔(英语:State of Qatar);

 

语法:

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

中间,字段的岗位与值的职分必得逐项对应。

删除数据表

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

7,查看当前顾客;select
user(卡塔尔国;

 8.查看数据表的布局

示例:

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

 

 

数码操作(DML卡塔尔(英语:State of Qatar)

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

查看表基本组织:describe 表名 或 desc 表名

Update修正数据

据说钦命的基准规定需求校正的行,然后改革内定字段的多寡。

布置数据

net start
mysql;

mysql> desc tb_employee8;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| id     | int(11)     | NO   | PRI | NULL    | auto_increment |
| name   | varchar(25) | NO   |     | NULL    |                |
| deptld | int(11)     | YES  |     | NULL    |                |
| salary | float       | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+

语法:

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

虽说where是八个可选参数,可是日常处境下都急需写where条件,假诺不写正是改善整张表的具备行。

不点名具体的字段

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

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

(1)NULL:表示该列是还是不是能够积累null值

示例:

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

 

校正第1条记下的真名字为江老怪

UPDATE userinfo SET uName = '江老怪'

 

校正全部行的顾客名字为江老怪

UPDATE userinfo

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

 

 

列出钦命字段

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

net stop
mysql;

(2)key:表示该列是不是早就编写制定索引。pri为该列主键的一有的;uni表示该列是unique索引的风流洒脱有的;mul表示在列中某些给定值允许现身多次。

delete删除

依照准则删除钦赐的笔录

並且插入多条记下

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

2,操作库

 9.查看表详细布局

语法:

delete from 表名 where 条件

尽管如此where是叁个可选参数,不过普通情形下都亟需写where条件,借使不写便是剔除整张表的保有行。

通过SET方式插入记录

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

1,查看数据库;show
databases;

语准则则:show create table 表名\G

示例:

DELETE FROM userinfo WHERE uid = 2

 

 

将查询结果插入到表中

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

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

mysql> show create table tb_employee8\G
*************************** 1. row ***************************
       Table: tb_employee8
Create Table: CREATE TABLE `tb_employee8` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `deptld` int(11) DEFAULT NULL,
  `salary` float DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

小练习:

1、 回忆背诵增删改查内定的语法。

2、 手动新建一个数据库product,在内部新建数据表product,那几个表中的字段:pid(主键)、pName(成品名)、pModel(型号)、pIntro(简要介绍)、pFrom(产区卡塔尔、p普赖斯(价格) 。

3、 用insert语句增加10条分裂的制品数据

4、 查询

a卡塔尔国 查询全体付加物数量

b卡塔尔(قطر‎ 查询全数成品的成品名和价格

c卡塔尔(英语:State of Qatar) 查询全体价格在二零零二上述的成品

d卡塔尔国 查询全体付加物为菲尼克斯还要标价高于3000的制品

e卡塔尔(قطر‎ 查询全体生产地不是哈拉雷的产品

5、 将第5条记下的出品号校订为T1000

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

 

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

3、5、6每题20分。

第4题中的各样小题8分共40分

 

命令行与高等查询

履新数据

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

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

 10.改换数据表:改善数据库中已经存在的数据表构造。常用的修正表的操作有:改正表名,改过字段数据类型或字段名,增删字段,修正字段的排列地点,更正表的存款和储蓄引擎,删除表的外键限制等。

Mysql命令行

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

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

3、 倘使见到”you mysql connection”就表达您登录成功了。

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

 

去除数据

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

依然根本清空数据表

(TRUNCATE [TABLE ] tbl_name)

3,改善数据库密码账户登入密码

(1)改进表名

查阅数据库列表

show Databases

查询数据操作(DQL卡塔尔

1,用SET PASSWORD命令

alter table 旧表名 rename 新表名
例:mysql> alter table tb_dept3 rename tb_deptment3;

慎选数据库use

查询记录

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 限制显示条数]
]

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

(2)订正字段数据类型

格式:

use 数据库名

选定钦命数据库为如今暗中同意被操作的数据库。

在动用操作数据表中的多寡此前,必必要选定二个当下数据库。

 

查询表明式

各样表明式表示想要的一列,必得至稀少一列,五个列以”,”号分隔; “*”
表示具有列,tbl_name.*意味着命名表的全部列。查询表达式尚可 [AS]
alias_name 为其予以小名。

2,用mysqladmin

alter table 表名 modify 字段名 数据类型
例:mysql> alter table tb_dept1 modify name varchar(30);

位列出当下数据库中的数据表

show tables

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个字符

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

(3)增加字段

位列出多少表中的字段

格式:show columns from 表名

Describe 数据表名

 

GROUP BY 查询结果分组

暗许意况下,GROUP BY 查询结果分组得到每组的率先个值
配合GROUP_CONCAT(卡塔尔(英语:State of Qatar)得到分组实际情况
非常聚合函数

  • COUNT(卡塔尔(英语:State of Qatar) NULL值不算一条记下
  • MAX()
  • MIN()
  • AVG()
  • SUM()

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

3,用UPDATE直接编辑user表

alter table 表名 add 新字段名 数据类型
例1:mysql> alter table tb_dept1 add managerld int(20);(没有完整性约束条件的字段)
例2:mysql> alter table tb_dept1 add column1 varchar(12) not null;(添加有约束条件)
例3:mysql> alter table tb_dept1 add column2 int(11) first;(添加到第一列)
例4:mysql> alter table tb_dept1 add column3 int(11) after name;(添加到name后一列)

数据库与数量操作

5.透过HAVING子句对分组结果实行二遍筛选

配合GROUP BY 实现,比如:

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

mysql>
use mysql; 

(4)删除字段

创造叁个新的数据库

一声令下格式:create database
数据库名

透过O奥迪Q3DE福特Explorer BY 实行排序

私下认可升序排列(ASC卡塔尔(英语:State of Qatar),可粗略。降序排列(DESC卡塔尔(英语:State of Qatar),可排序七个字段通过”,”号连接

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

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

alter table 表名 drop 字段名
例:mysql> alter table tb_dept1 drop column3;

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

注意,在成立在此以前必需筛选当前数据库。

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

示例:

create table stdInfo(

sName varchar(20),

sAge int,

sSex varchar(5)

);

 

LIMIT限定查询结果呈现条数

  • LIMIT 显示条数
  • LIMIT 偏移量,呈现条数

(SELECT * FROM country LIMIT 2,1)

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

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

连年查询

mysql>
flush privileges; 

alter table 表名 modify 字段1 数据类型 first after 字段2
例1:mysql> alter table tb_dept1 modify id int(11) first;
例2:mysql> alter table tb_dept1 modify column2 int(11) after column1;

除去数据表

格式:drop table 数据表名

什么样是链接查询

连续几天查询是将几个或许五个以上的表遵照有个别条件连接起来,从当中选取需求的数码。连接查询是同不平时间询问七个只怕八个以上的表时使用的。当不一致的表中存在同样意义的字段时,可通过该字段连接那多少个表。

4,在忘记root密码的时候,能够如此

(6)校正表的数据引擎

删去数据库

格式:drop database 数据库名

内连接查询

  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;

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

alter table 表名 engine=更改后的存储引擎
例:mysql> alter table tb_dept1 engine=innodb;

改良表结构:扩大字段

丰裕四个字段

alter table student add sScore float null;

 

其中:

add 代表扩张一列

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

student 是数额表名

sScore 是新扩充的字段名,前边是数据类型。

外接连查询

(2),
打开DOS窗口,转到mysql\bin目录。 

(7)删除表的外键约束

修正表布局:删除字段

alter table student drop column sScore;

 

其中:

drop column 代表删除字段操作

sScore 要被去除的字段名

student 是表名

左外连接

(LEFT [OUTER] JOIN)

体现左表的万事记录及右表切合连接条件的记录

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

alter table 表名 drop foreign key 外键约束名

重命名数据表

rename table student to sInfo;

 

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

右外连接

(RIGHT [OUTER] JOIN)

来得右表的整个笔录及左表相符连接条件的笔录

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

(8)改进字段名

校正表构造:增多自增主键

alter table product

 add pid int

 not null

 primary key

 auto_increment

 first;

 

其中

primary key 设置新字段为主键

first 将新字段放在其余字段的前边,处于第一人。

 

外键

(4卡塔尔(英语:State of Qatar),再开叁个DOS窗口(因为刚刚不行DOS窗口已经无法动了),

mysql> alter table customers change c_contact c_phone varchar(50);

小练习:

请同学把装有SQL都写到一个SQL文件中,按“班级-姓名(能够是拼音卡塔尔(英语:State of Qatar).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_聚合函数

概览

外键是表的贰个优秀字段,被参照的表是主表,外键所在字段的表为子表。设置外键的口径须要牢牢记住,正是依附于数据库中已存在的表的主键。外键的效率是确立该表与其父表的关联关系。父表中对记录做操作时,子表中与之相应的音讯也应当相应的变动。
外键的功力是保持数据库的黄金时代致性和完整性。
能够达成意气风发对风华正茂或许部分多的关系

注意

  1. 父表和子表必需利用相仿的积存引擎,何况不许行使有的时候表。
  2. 数据库的囤积引擎只好为InnoDB。
  3. 外键列和参照列必得怀有相像的数据类型此中数字的长短或是不是有标识位必需风华正茂律:而字符的长度则能够分歧。
  4. 外键列和参照列必得创立索引。假设外键荒诞不经索引的话,MYSQL将自动制造索引。

外键约束的参照他事他说加以考察操作:

  • CASCADE:从父表删除只怕更新且活动删除大概更新子表中十一分的行。
  • SET
    NULL
    :从父表删除可能更新行,并设置子表的中的外键列为NULL。要是运用该选项必需保险子表列中尚无点名NOT
    NULL。
  • RESTRICT:谢相对父表的立异恐怕去除操作。
  • NOT ACTION: 标准SQL的主要性字,在MYSQL中与RESTLANDICT肖似

转到mysql\bin目录。 

 11.删减数据表

mysql数据库的备份与还原

创造外键(先有主表卡塔尔(英语:State of Qatar)

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}]
)

(5卡塔尔(قطر‎,输入mysql回车,假诺成功,将应时而生MySQL提醒符
>。 

drop table 表1 表2 。。。

备份

在phpmyAdmin中选拔“导出”功能将数据表的构造与数据保存为叁个.sql文件(保存格式选拔SQL)

剔除却键

(ALTER TABLE tbl_name DROP FOREIGN KEY)

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

剔除被别的表关联的主表:先删除字表,再删除主表(或注销外键限定,删除主表)

恢复

在phpmyAdmin中式茶食击“导入”,采纳.sql文件的路径(格式选择SQL),点击实行。

 

加多外键

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

(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

 

UNION

(SELECT 语句 UNION SELECT 语句)

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

 

UNION ALL

(SELECT 语句 UNION SELECT 语句)

注意:UNION 和 UNION ALL 的区分是UNION
去掉相近记录,UNION是简约的统生机勃勃到一齐

(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就是降序(从大到小)

 

 

引发子查询的场地

  • 使用 [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)

1,表的增加和删除改查

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

在查询结果中的钦赐字段中找到最大的值或比极小的值。

SELECT MAX(sScore) FROM student

//得到成绩最高分数

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

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

 

 

将查询结果写入到数据表

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

1,进入库;

求和sum()

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

SELECT SUM(sSCore) FROM student

//全班总分

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

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

 

 

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

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

use
库名称;

小练习:

1、用Create指令成立叁个产物发售记录数据表,满含字段:产物名、发售地区、出卖数额、发售金额。(10分卡塔尔(قطر‎

2、就算本集团贩卖的制品唯有三种,贩卖地区也独有八个。用insert语句插入十条产物发卖记录。(付加物与出售地区一定有双重值。)(15分卡塔尔(英语:State of Qatar)

3、总计每种成品的发卖总额(10分卡塔尔

4、总结每一种付加物的平均发卖额。(10分卡塔尔

5、总括每种产品的发售总的数量量。(10分卡塔尔

6、在各样地点出售的每一种产物的称呼,连接成二个以逗号分隔的字符串。(15分卡塔尔

7、同有的时候间计算每一个成品的最大发售额。(10分卡塔尔

8、总计产物在各种地点的最低发售额。(10分卡塔尔(英语:State of Qatar)

9、获得总贩卖额。(10分卡塔尔(英语:State of Qatar)

 

 

 

 

 

 

 

mysql_高档查询

正则表明式查询

2,创建表;

数量过滤通配符

通配符,就是指可以通用的万分其余字符的号子。

REGEXP ‘相称情势’

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

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

%通配符

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

常用相称格局

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

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值。

 

算数运算符

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

6,纠正表名称;

_(下划线)通配符

_ 通配符的机能与%近似,不过它不能不合作单个大肆字符。

 

相比较运算符

符号 形式 作用
= 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 正则表达式 判断是否正则匹配

alter table 表名称
rename 新表名称;

示例:

SELECT * FROM student WHERE sName LIKE '小_'

SELECT * FROM student WHERE sName LIKE '小__'

 

查找以“小”初叶的事后随机五个字符的数据,并且必需是七个字。

 

小心:下划线与%不一致的是前面一个不相称字符,必需得有三个字符才干相配。

 

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

 

 

逻辑运算符

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

7,查看表;

SELECT 查询中的关键字

运算符的事前级

优先级 运算符 优先级 运算符
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 ;=

注意: 能够运用(卡塔尔改动优先级

show
tables;

in关键字

在三个晤面中开展相称,只要数据与聚聚焦的任性风度翩翩项相同,就感到数据知足条件。

 

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

 

研究地址是 巴黎,西安,蒙Trey 或 湖北的学员音讯

 

MYSQL中的函数

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

limit关键字

limite后边需求跟七个数字,代表从钦定的记录初步(使用数据记录在物理上的次第并不是ID),查找多少条记下出来。

数学函数

名称 描述
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的几次方

show create table
表名称;

注意:

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

2、 这里的序号不对等ID,它只是是意味着排列次序。

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

 

SELECT * FROM student LIMIT 3,2

 

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

 

字符串函数

名称 描述
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) 返回指定位置的字符串

2,字段增加和删除改;

join关键字 – 链表

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

 

日马时间函数

名称 描述
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的间隔天数

1,加多字段;

as关键字

用来对字段段取一个外号

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

 

 

规格判定函数

名称 描述
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的值。

alter table
字段名称 add 定义列;

多表查询

系统新闻函数

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

2,修改字段;

内连接

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

 

 
   

 

加密函数

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

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

 

 

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

 

别的常用函数

名称 描述
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) 释放锁

3,
删除字段;

方法二:inner join

利用inner join相像能够做到上例中的功效,何况主表与附表、连接条件一览无遗。INNETiguan 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帕杰罗直接写JOIN关键字,也是中间连接。

 

索引

alter table 表名称
字段名;

左连接

在两张表联合查询的时候,笔者要呈现主表中回顾未有关联关系的数据在内的装有数据。

 

SELECT * FROM score

LEFT JOIN student

ON score.sid = student.sid

 

 
   

 

怎么是索引

  • 目录由数据库中一列可能多列组成,其作用是增加对表中多少的询问速度
  • 目录的优点是能够加强检索数据的进程
  • 目录的症结是创制和维护索引需求消耗费时间间
  • 目录能够进步查询速度,减慢写入速度

4,查看字段构造;

右连接

询问附表(JOIN关键字之后的表卡塔尔(英语:State of Qatar)中包涵未有涉嫌关系的数目在内的有着数据。

SELECT * FROM score

RIGHT JOIN student

ON score.sid = student.sid

 

目录分类

  • 常常说来索引
  • 独一索引(UNIQUE卡塔尔(قطر‎
  • 全文索引(FULLTEXT卡塔尔(قطر‎
  • 单列索引
  • 多列索引
  • 空间引得(数据类型为GEOMET中华VY,存储引擎为MyISAM卡塔尔国SPATIAL

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必须与(卡塔尔国内的询问结果之一相等。

 

创造表的时候创设索引

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 = 编码方式;

1,扩张对应数据;

在已存在的表上创制索引

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

或者

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

insert into
表名称(字段1,字段2……..卡塔尔(英语:State of Qatar)values(‘j138’,”红瓦寺”…….卡塔尔(قطر‎选用插入有个别列;

删除索引

(DROP INDEX 索引名称 ON tbl_name)

2,扩大某行数据

其他

insert into
classes values(null,’j139′,”红瓦寺”卡塔尔(英语:State of Qatar) 插入全数列,自增粘以null占位

注释

  • 以‘– ’ 为前缀
  • 以’#’ 为前缀
  • 字段注释通过COMMENT ‘…..’实行解说

3,扩展全部数量

INSERT INTO
t_student VALUES

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

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

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

4,
拷贝数据

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

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

insert into
className(class_name) select class_name from classes

4,更正数据;

1,改进某行的数量

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

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

2,修正某列的某部数据

UPDATE classes set
class_name=null where class_id=3

” 和null
同样啊?? 严酷意义不等同

5,删除数据;

1,删除生机勃勃行数据

delete form 表名称
where id;

2,删除年龄在18-20

DELETE FROM
t_student WHERE 年龄 BETWEEN 18 AND 20

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

6,注意

1,t_代表表名;字段
保加利亚语 田野同志

2,f_表示字段名;表格
德文 table

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

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

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

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

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

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

1,索引

1,创立索引;

create index
索引名称 on 表名称(列名称,列名称…….卡塔尔(英语:State of Qatar);三个表能够有多少个目录;

2,删除索引;

alter table
student drop index 索引名称;

3,特点;数据的更新和目录的更新是一路的

常备索引能够加到多列上

4,索引的症结;

数据与索引的更新是协作的,假若一切数量都有目录就能够降低功能;

目录是以文件情势存在的,索引过多文本会相当的大;

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

保障每行所表示的实业能相互差异,不能存两条风度翩翩抹同样的

1,主键节制(primary
key卡塔尔(英语:State of Qatar)非空不能够再度;三个表只好有叁个主键一个主键能够有多少个列

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(要把外键给那二个字段的字段名卡塔尔(英语:State of Qatar)

REFERENCES
关系表的表民(主键)

CONSTRAINT
FK_student_classId FOREIGN key(class_id)

REFERENCES
classes(class_id)

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

1,增添要连的键

alter table 表名
add 字段 类型

admin

相关文章

发表评论

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