内连接

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

 

 
   

 

1,查看数据库;show
databases;

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

SHOW { DATABASES | SCHEMAS }

8.查看数据表的协会

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

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    |                |
+--------+-------------+------+-----+---------+----------------+

(1)NULL:表示该列是不是足以积累null值

(2)key:表示该列是或不是早就编写制定索引。pri为该列主键的少年老成部分;uni表示该列是unique索引的生机勃勃有个别;mul表示在列中有些给定值允许现身数次。

 

恢复

在phpmyAdmin中式点心击“导入”,采纳.sql文件的途径(格式选拔SQL),点击实践。

 

4,子查询,要开销越来越长的实行时间,当数据量扩张时,实践时间会激烈加长,

运算符的优先级

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

注意: 可以使用()改造优先级

9.查看表详细结构

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

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)

 

日期时间项目

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年的四个寒暑。

 

3,字符

二进制类型

语法则则:字段名 数据类型 not null

例:定义数据表tb_employee6,钦赐工作者的名目不能够为空

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

 

Update改正数据

遵照钦赐的基准规定须要改正的行,然后改良钦赐字段的数额。

select 列 from 表
where exsits (select 列 from 表1where 列=数据);

MYSQL中的数据类型

10.改造数据表:校正数据库中早已存在的数据表结构。常用的改进表的操作有:修正表名,改正字段数据类型或字段名,增删字段,校勘字段的排列位置,改善表的储存引擎,删除表的外键节制等。

(1)更正表名

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

(2)修正字段数据类型

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

(3)添加字段

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后一列)

(4)删除字段

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

(5)改革字段排序

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;

(6)纠正表的数量引擎

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

(7)删除表的外键节制

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

(8)校订字段名

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

 

备份

在phpmyAdmin中动用“导出”功效将数据表的组织与数据保存为一个.sql文件(保存格式选用SQL)

增;先增两表,在增中间表

删去数据库

DROP  { DATABASE | SCHEMA } [IF EXISTS] db_name

2.主键节制:主键又称主码,是表中一列或多列的重新组合。主键限定须求主键列的数据唯生龙活虎,况兼不能够为空。主键能够唯黄金年代标记表中的一条记下,可以构成外键来定义不一致数据表之间的关联,而且能够加速数据库查询速度。主键分为三种档期的顺序:单字段主键和多字段联合主键。

(1)单字段主键

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

(2)多字段联合主键

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

 

右连接

查询附表(JOIN关键字之后的表)中带有未有涉及关系的数量在内的全体数据。

SELECT * FROM score

RIGHT JOIN student

ON score.sid = student.sid

 

year;1字节;格式YYYY;范围1901-2155

除去数据

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

还是根本清空数据表

(TRUNCATE [TABLE ] tbl_name)

4.非空束缚(not null):是指字段的值无法为空。对于利用了非空节制的字段,假若顾客在增加数量时未有一些名值,数据库系统会报错。

左连接

在两张表联合查询的时候,笔者要彰显主表中归纳没有关联关系的数目在内的具备数据。

 

SELECT * FROM score

LEFT JOIN student

ON score.sid = student.sid

 

 
   

 

alter table test
drop FOREIGN key FK_TEST_CLASSID

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

SHOW WARNINGS

7.安装数据表的属性值自动扩大:在数据库应用中,日常希望在每一回插入新数据时,系统会自动生成字段的主键值。可感到表主键加多auto_increment关键字来促成。在mysql中,暗中认可情状下auto_increment开端值为1,每新增加一条记下,字段自动加1.一个表只可以有一个字段使用auto_increment约束,且每一种字段必得为主键的意气风发局地。auto_increment约束的字段能够是其余整数类型(tinyint/samllint/int/bigint)。

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

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

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

 

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)

 

AVG求平均值

格式:AVG(字段名)

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

SELECT AVG(sAge) FROM student

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

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

 

 

2,逻辑相比较

累积外键

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

1.开立表:在此以前须求use database database_name 然后create table 表名();

例:创设工作者表tb_employee1,结构如下表所示

字段名称

数据类型

备注

id

int(11)

员工编号

name

varchar(25)

员工名称

depld

int(11)

所在部门编号

salary

float

工资

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

 

小练习:

1、 纪念背诵增加和删除改查钦命的语法。

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

3、 用insert语句加多10条差异的出品数据

4、 查询

a) 查询全体成品数量

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

c) 查询全数价格在2004之上的成品

d) 查询全部产品为瓜达拉哈拉同期标价高于3000的出品

e) 查询全体产地不是瓜达拉哈拉的出品

5、 将第5条记下的制品号修正为T1000

6、 删除全体价格低于5元的制品。

 

将第三题之后的sql语句复制到多个word文书档案中,然后首席营业官检查组员,班长检查经理。

3、5、6每题20分。

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

 

命令行与高等查询

oracle,mysql,java都是oracle公司的

GROUP BY 查询结果分组

默许境况下,GROUP BY 查询结果分组获得每组的第贰个值
配合GROUP_CONCAT()得到分组详细的情况
相称聚合函数

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

极度WITH ROLLUP记录上边装有记录的总的数量

5.唯风姿罗曼蒂克性约束:必要该列唯大器晚成,允许为空,但一定要现身叁个空值。唯意气风发性约束能够保险一列要么多列都不可能冒出重复值。

(1)在概念完列之后一向钦命唯生龙活虎限制

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

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

(2)在概念完全数列之后钦赐唯意气风发节制

语法则则:constraint 节制名 unique(字段名)

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

unique和primary
key的分裂:二个表中能够有七个字段注解为unique,但只好有叁个primary
key证明;证明为primary
key的列不允许有空值,可是表明为unique的字段允许空值的存在。

 

GROUP BY分组

在钦定字段上将数据内容重复的记录,聚合为大器晚成组。剔除重复的值。

示例:

SELECT * FROM student GROUP BY sSex

SELECT sName FROM student GROUP BY sAge

 

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

索引

11.删减数据表

drop table 表1 表2 。。。

去除被别的表关联的主表:先删除字表,再删除主表(或收回外键节制,删除主表)

在前段时间数据库中开创数据表

留意,在开立之前必需挑选当前数据库。

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

示例:

create table stdInfo(

sName varchar(20),

sAge int,

sSex varchar(5)

);

 

5,钦点有效数据(check(第二个数据
or 第二个数据格式(健名=值)))

删去字段

ALTER TABLE tbl_name DROP 字段名称

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

注意:增添字段(ADD)与删除字段(DROP)能够在同四个言语里面(ALTELacrosse TABLE
tbl_name ADD …..,DROP …..)

6.暗中同意限制:钦命某列的暗许值。如男子同学相当多,性别就足以默感到“男”。要是插入一条新的记录时未有为这一个字段赋值,那么系统活动会为这几个字段赋值为男。

语法则则:字段名 数据类型 default 私下认可值

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

 

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,要是现身重复的属性,就恐怕供给定义二个新的实业,新的实体由重复的性质构成,

加上主键

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

3.外键约束:外键用来在多个表之间建构联系,它能够是一列只怕多列。多个表能够有八个或然多少个外键。外键对应的是参照他事他说加以调查完整性,贰个表的外键能够是空值,若不为空值,则每贰个外键必需等于另贰个表中主键的某部值。

上边介绍多少个概念。是表中的七个字段,它能够不是本表的主键,但对应其它三个表的主键。外键的机要意义是保险数据援用的完整性,定义外键后,不容许删除在另一个表中具备关联关系的主键。比方:部分表的主键id,在表tb中有三个键deptld与那一个id关联。

主表(父表):对于五个有着关联关系的表来讲,相关字段中主键所在的非常表正是主表。

从表(自表):对于五个颇负关联关系的表来说,相关字段中外键所在的百般表便是从表。

例:定义数据表tb_employee5,并且在该表中创立外键约束

始建二个机关表tb_dept1,表结构如下表所示

字段名称

数据类型

备注

id

int(11)

部门编号

name

varchar(22)

部门名称

location

varchar(50)

部门位置

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

 

select语句

查询语句,特地用来在数额表中依照顾客钦命的标准化进行查询。

5,删除表;

成立表的时候创造索引

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

示例:

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

 

 

select min(all
求哪一列的最小值) from 表名称

校勘表的仓储引擎

ALTER TABLE tbl_name ENGINE=存储引擎名称

格式:

use 数据库名

选定钦点数据库为如今暗许被操作的数据库。

在采纳操作数据表中的多少此前,必定要选定三个当下数据库。

 

5,单表查询

不点名具体的字段

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

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

 

 

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

 

主键非空唯风度翩翩,

引发子查询的图景

  • 使用 [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、 创立一张职员和工人数据表,employee,富含字段:eId(标准整数,主键、自增)、姓名eName(varchar,50)、年龄eAge(tinyInt,无符号)、工号eNum(smallInt,不足的位数用0填充)、文凭(枚举:初级中学~大学生)、性别(枚举:男,女)、出诞辰期(DateTime)、基本薪酬(Float,默许:1300)、毛遂自荐text。然后输入五名职工的音信。

 

 

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

只可以查一列,多行;临时用,效用低

去除默许值

ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT

安装与行使mysql

设置mysql的点子非常多,大家利用phpstudy那个软件来安装php + mysql的周转条件。安装之后,我们就颇有了mysql的服务。并且还会有三款mysql客户端。

 

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

 

顾客端用来将服务端的多寡,以客商能够知晓的秘诀浮现在其分界面上。

 

1,数据库;

其他

何以设置三个字段为自增

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

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

3、主键生成的数字相对不会另行,纵然记录被剔除。

3,多对多,必要新建中间表来保存对应提到表,外键咋中间关系表身上

去除唯大器晚成

ALTER TABLE tbl_name DROP  {INDEX| KEY} index_name

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

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

 

 

alter table 表名称
字段名;

逻辑运算符

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

记录

哪怕数据表中行,大器晚成暴行数据我们就叫做一条数据记录。

普通来说,每条数据记录都有三个ID号,我们得以把这一个id精通成是excel中的行号,用来对每条记下举办区分与标识。

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

老是查询

多表查询

alter table test
add class_id int

校订表的自增进值

ALTER TABLE tbl_name AUTO_INCREMENT= 值

语法:

delete from 表名 where 条件

尽管where是三个可选参数,然则日常状态下都急需写where条件,假若不写便是剔除整张表的兼具行。

ip

自律原则

三个表只好有一个主键(PKugaIMATY KEY),可是能够有五个唯风华正茂(UNIQUE
KEY),唯豆蔻年华的字段的值不允许现身重复,不过NULL值不算做重新的值

  • PRIMARY KEY 主键,POdysseyIMA奥德赛Y可省略 (注意:P中华VIMA奥迪Q5Y KEY(a,b,c,…)
    来定义二个主键时,由a,b,c,…全数的值手艺分明二个主键,即二个表包蕴a,b,c…等字段,此中单独的a,b,c字段相等,是能够的,但不能后生可畏体相当于,全体约等于注解主键相等,不可插入。)
  • AUTO_INCREMENT 自增,须求和主键(PLacrosseIMAKugaY
    KEY)搭配使用。可在制造表时自定义从有些数初始,如CREATE TABLE
    tbl_name(id INT key
    AUTO_INCREMENT,……)AUTO_INCREMENT=数值,表示当中自增字段从今以往数值开首。(也可透过ALTER
    TABLE tbl_name AUTO_INCREMENT=数值匡正)
  • FOREIGN KEY 外键
  • NOT NULL 非空
  • UNIQUE KEY 唯一,KEY 可省略
  • DEFAULT 默许值 插入数据时可接受DEFAULT

limit关键字

limite后边供给跟八个数字,代表从钦命的笔录起头(使用数据记录在物理上的前后相继并非ID),查找多少条记下出来。

utf8;大型编码;

注释

  • 以‘– ’ 为前缀
  • 以’#’ 为前缀
  • 字段注释通过COMMENT ‘…..’举办讲明

剔除数据表

格式:drop table 数据表名

1,成立索引;

列出钦点字段

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

自增auto_increment

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

自增字段的值无需手动输入,个中的号码是半自动发出的,每当向那表里面加多一条新记录的时候,自增字段会自动抽出上风度翩翩行字段值,然后加大器晚成,作为新记录的主键值。(主键相对不会发生再度,即使上一条记下被剔除了)。

(别忘了最后加分号) 。 

透过OGL450DEQashqai BY 进行排序

暗中同意升序排列(ASC),可粗略。降序排列(DESC),可排序三个字段通过”,”号连接

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

小练习:

请同学把装有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_聚合函数

INNODB;默认的

翻看默认的贮存引擎

SHOW VARIABLES LIKE '%storage_engine%'

逻辑或or

SELECT * FROM product

WHERE pPrice <800 OR pId >6

 

3,加多数码;

数据库操作(DDL)

示例:

DELETE FROM userinfo WHERE uid = 2

 

 

比如说:科学数据

存款和储蓄引擎

默认à定义

其生机勃勃选项代表,填充数据时大器晚成旦该字段为空值时,所选拔的默许值。

储存大型文本数据

更改表结构

auto_increment

自增

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

REGEXP ‘匹配格局’

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

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

show tables

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

日辰时间档期的顺序

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

Date日期

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

REFERENCES
classes(class_id)

通过SET格局插入记录

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

慎选数据库use

1,sun();求和;

浮点类型

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

仓库储存大体积的文本

TinyBlob ,blob,TinyText,text

前三个是意味着二进制字符串,后多少个是意味非二进制字符串,都能够储存大批量的公文音讯。

MediumBlob,MediumText

LongBlob,LongText

2,三张表查询例子(left
join 表 on 外键拼接)

壹头查询

语法:

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

里头,字段的职分与值的职责必须逐项对应。

2,浮点

增添暗中认可值

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

数值类型

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

 

Decimal
以字符串方式储存浮点数。它的取值范围不是定点的,决议于顾客钦定的尺寸。

新实体与原实体之间为后生可畏对多关系。在第大器晚成范式(1NF)

翻开销持的累积引擎音信

SHOW VARIABLES LIKE 'have%'

陈列出多少表中的字段

格式:show columns from 表名

Describe 数据表名

 

4,
拷贝数据

询问记录

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

字符串数据类型

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

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

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

2,唯豆蔻梢头限定(unique)内定的列非空的不能够再一次

数据库的创建

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

例如:

CREATE DATABASE IF NOT EXISTS  test_db DEFAULT CHARACTER SET utf8

unsigned zerofill属性

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

2,添加CONSTRAINT

修改表名

ALTER TABLE tbl_name RENAME [TO|AS] new_name

或者

RENAME TABLE tbl_name TO new_name

注意:

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

2、 这里的序号不对等ID,它独自是象征排列次序。

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

 

SELECT * FROM student LIMIT 3,2

 

从第4条记下早先,获取之后的两条记下。

 

9,查看新扩张表的正规化写法;

什么样是链接查询

老是查询是将八个也许三个以上的表遵照有些条件连接起来,从当中筛选需求的数目。连接查询是还要询问四个可能五个以上的表时使用的。当差别的表中存在相像意义的字段时,可通过该字段连接这多少个表。

枚举类型

ENUM / SET 类型

安装其暗许值为(‘值1’, ‘值2’, ‘值3’,…),由顾客钦定多少个可选值,字段中的值必须是中间之意气风发,最七只好有655叁拾七个可选值。

 

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

纠正字段名称

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

翻开数据库列表

show Databases

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

改正字段

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

delete删除

依附准绳删除钦点的记录

or 或者

相比运算符

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

phpMyAdmin

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

在桌面右下角的phpstudyLogo上右击弹出菜单中选取phpMyAdmin就足以运营步入了。运转之后,要求输入客户与密码举行登录,暗中同意的客商名密码都以root。

 

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

LIMIT约束查询结果突显条数

  • LIMIT 突显条数
  • LIMIT 偏移量,突显条数

(SELECT * FROM country LIMIT 2,1)

方法二:inner join

动用inner join相似能够产生上例中的成效,並且主表与附表、连接条件无庸赘述。INNEPAJERO 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

 

 

留意:省略INNELX570直接写JOIN关键字,也是中间连接。

 

2,as;取别称;mysq中as能够被略去

UNION ALL

(SELECT 语句 UNION SELECT 语句)

注意:UNION 和 UNION ALL 的界别是UNION
去掉相符记录,UNION是轻易的合併到共同

SELECT 查询中的关键字

1,sun();求和;

字符串函数

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

开创多少个新的数据库

命令格式:create database
数据库名

在where前面加group by
按怎样类型分组与count联合利用

字符串类型

数据类型 存储需求
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个成员)

SQL语句

是一门特地用于数据库操作的言语,SQL语句的语法不止适用于mysql数据库,同有的时候候也适用于差不离具备的主流数据库。当然分歧公司出口的数据库在语法细节上或许略微出入。

 

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

同期插入多条记下

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

示例:

SELECT * FROM student WHERE sName LIKE '王%'

 

查找全部姓王的学员

LIKE关键字在那处代表模糊查询,不是像=那样必得完全合作。

 

SELECT * FROM student WHERE sName LIKE '%五'

 

找寻以“五”字最终的多寡

 

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

 

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

在乎:固然数额的初始或最后为空,依旧能够兼容到多少,因为%不但代表私下个数的即兴字符,它相通也能够象征未有字符。

select ( select
列名 from表1) from 表1 ;

外接连查询

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

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

SELECT MAX(sScore) FROM student

//得到成绩最高分数

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

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

 

 

1,增添对应数据;

将查询结果插入到表中

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

%通配符

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

3,分组

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

  • InnoDB
  • MyISAM
  • Memory

语法:

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

即使where是三个可选参数,不过平常状态下都亟需写where条件,假诺不写正是修正整张表的具备行。

2,用mysqladmin

何以是子查询

子查询是将二个查询语句嵌套在另二个询问语句之中。内层查询语句的询问结果,可感觉外层查询语句提供条件

mysql数据库基础知识

1,相比较符号;

查阅MYSQL援助的积累引擎

SHOW ENGINES

小练习:

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

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

3、 加多5条产品新闻

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

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

 

3,
删除字段;

日期时间函数

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

改善表结构:扩大字段

增多多个字段

alter table student add sScore float null;

 

其中:

add 代表增添一列

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

student 是数码表名

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

即实体中的某些属性不能有四个值或许不能够有重新的性子。

创办索引

insert插入数据

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

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

插入数据

数量过滤通配符

通配符,正是指可以通用的合作其余字符的记号。

3,数据库类别;关系型,非关系型,档案的次序型,网状型

删除数据表

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

int整数类型

必须要存放整数

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

左外连接

(LEFT [OUTER] JOIN)

来得左表的总体记下及右表切合连接条件的记录

小练习:

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

2、借使本集团发卖的出品只有三种,出售地区也只有多少个。用insert语句插入十条产品发卖记录。(产品与出售地区自然有双重值。)(15分)

3、总计每一种产品的出卖总额(10分)

4、计算每一个产品的平均贩卖额。(10分)

5、总结各种产品的发售总的数量量。(10分)

6、在各个区域出卖的每一个产品的称号,连接成三个以逗号分隔的字符串。(15分)

7、相同的时间计算各种产品的最大贩卖额。(10分)

8、总括产品在种种地点的最低发卖额。(10分)

9、得到总发卖额。(10分)

 

 

 

 

 

 

 

mysql_尖端查询

2,数据库是用来保管,查询,积攒数据的;

常用相配方式

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

除去数据库

格式:drop database 数据库名

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

开荒数据库

USE db_name

mysql数据库的备份与回复

1,增多要连的键

算数运算符

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

多张表连接

示例:

SELECT * FROM score

INNER JOIN student ON score.sid = student.sid

INNER JOIN class ON student.cid = class.cid

 

2,外键必需链接主键(many2one)

增加唯风度翩翩

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

varchar字符类型

可以积存任一字符,满含符号、数字、字母,不过他们都会被当成字符为管理。

3,分组

JSON类型(ver5.7新增)

as关键字

用于对字段段取三个别名

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

 

 

6,auto_increment;主键自增进;

翻看数据库的概念

SHOW CREATE  { DATABASE | SCHEMA } db_name

ORDER BY排序

遵从钦命的字段的值的抑扬顿挫的前后相继,来排列查询的结果。

SELECT * FROM student ORDER BY sScore

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

SELECT * FROM student ORDER BY sScore DESC

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

 

 

select 列 from 表
where 列=any (select 列 from 表1where 列=数据);

外键

字段

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

每二个字段都亟需内定一个名号,用来证实该列数据的法力,就叫作字段名。

1、第风流倜傥范式(1NF)

法则剖断函数

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

求和sum()

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

SELECT SUM(sSCore) FROM student

//全班总分

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

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

 

 

” 和null
同样吗?? 严谨意义不相近

任何常用函数

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

unsigned属性

“收拾”菜单中的unsigned选项,代表无符号,代表这一字段中的数值无法为负数,因为无符号正是意味未有正负号。假若“收拾”菜单留空,什么都不选的话,正是象征有标识,可认为正数也可以为负数。

alter table
student drop index 索引名称;

查看表结构及创造消息

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

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

 

7,查看表;

询问数据操作(DQL)

常用的数据库的档期的顺序

Mysql 品质大胆,能够无需付费使用。

MSSQL server 微软集团的数据库软件,日常用于搭配微软系统的编制程序语言。

Access是office的办公套件之豆蔻梢头。

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

转到mysql\bin目录。 

正则表达式查询

示例:

SELECT * FROM student WHERE sName LIKE '小_'

SELECT * FROM student WHERE sName LIKE '小__'

 

查找以“小”开首的以后自由几个字符的数据,并且必得是七个字。

 

注意:下划线与%差别的是前面二个不相配字符,必得得有一个字符才干相配。

 

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

 

 

比如: 年纪,数量

数据表的创立

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

逻辑非not

SELECT * FROM product

WHERE not pName = '中兴z954'

 

 

中表的每意气风发行只含有贰个实例的音讯。

运算符

示例:

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

 

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

UPDATE userinfo SET uName = '江老怪'

 

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

UPDATE userinfo

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

 

 

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

查询表明式

种种表明式表示想要的一列,必须至稀少一列,八个列以”,”号分隔; “*”
表示全数列,tbl_name.*代表命名表的全部列。查询表明式能够运用 [AS]
alias_name 为其付与小名。

join关键字 – 链表

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

 

select * from
表名1,表名2 where 外键ID=主键ID and 某风流洒脱行条的件;

增添字段

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

若供给加上三个字段,须要五个ADD操作,以“,”号分隔

mysql中的聚合函数

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

timestamp;4字节;

UNION

(SELECT 语句 UNION SELECT 语句)

Mysql命令行

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

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

3、 倘使见到”you mysql connection”就表明你登入成功了。

4、 在命令行中,每一条指令都不得不以根据地;停止,不然系统会感到你那条指令还没瓜熟蒂落,始终须要您承接输入。

 

四,DML;数据操作语句;增加和删除改

加密函数

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

纠正表结构:删除字段

alter table student drop column sScore;

 

其中:

drop column 代表删除字段操作

sScore 要被删除的字段名

student 是表名

1,增多字段;

5.经过HAVING子句对分组结果开展一回筛选

配合GROUP BY 实现,比如:

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

大约语法描述:

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

 

3,pk_表示主键;主键约束primary
key

将查询结果写入到数据表

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

in关键字

在二个聚聚焦开展匹配,只要数据与聚集中的大肆生龙活虎项肖似,就觉着数据满意条件。

 

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

 

搜寻地址是 新加坡,德雷斯顿,成都 或 新疆的上学的小孩子新闻

 

selsct count(*)
from 表名 group by 分组的花色,按怎么样分组;

成立外键(先有主表)

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

数据表

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

6,注意

在已存在的表上成立索引

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

或者

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

主键

成都百货上千时候咱们将id称为主键,主键那是指那张表的排列顺序的基于。

REFERENCES
classes(class_id)

右外连接

(RIGHT [OUTER] JOIN)

展现右表的全部笔录及左表符合连接条件的笔录

新建数据库

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

2、 经常采取utf8_unicode_ci字符集,在唯有普通话的景色下,能够筛选gbk_chinese_ic或gb2312_chinese_ci 。

 

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

内一而再再而三查询

  1. JOIN | CROSS JOIN | INNER JOIN
  2. 透过ON 连接条件
  3. 展现多少个表中切合连接条件的笔录

注意:三张表只怕三张表以上查询能够直接踏向越来越多的JOIN …ON
…来三番五回多张表,注意找准表之间的连续几日条件

例如:

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

数据库与数码操作

主键无法为不设有,

去除主键

ALTER TABLE tbl_name DROP PRIMARY KEY

通过首要字IN来进展关联合检查询

询问全数数学成就在60分以上的学习者的音信。

Select * from student where

sid in

(

    SELECT sid FROM score

    WHERE score >60 And sProject = '数学'

)

 

IN在这里地球表面示,sid必得与()内的询问结果之一相等。

 

(在mysql中没用,援助创造但未有效果)

除去外键

(ALTER TABLE tbl_name DROP FOREIGN KEY)

数值类型的字段能够设置的参数:

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

履新数据

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

什么是数据库

数据库从名称想到所富含的意义,就是用来存款和储蓄数据的工具,用七个比例形象的例子来比喻,正是Excel,三个Excel文件就足以用作是多个数据库。

5,concat();字符串拼接,平时超少在mysql上使用

概览

外键是表的五个非正规字段,被参照的表是主表,外键所在字段的表为子表。设置外键的规格需求记住,正是凭仗于数据库中已存在的表的主键。外键的职能是立业成家该表与其父表的关联关系。父表中对记录做操作时,子表中与之相应的音讯也应有相应的更改。
外键的机能是维持数据库的少年老成致性和完整性。
能够落成大器晚成对风流罗曼蒂克只怕部分多的关系

注意

  1. 父表和子表必需运用相近的囤积引擎,并且不许使用不时表。
  2. 数据库的贮存引擎只可以为InnoDB。
  3. 外键列和参照列必得持有相仿的数据类型当中数字的尺寸或是或不是有标识位必得黄金年代致:而字符的长度则可以差异。
  4. 外键列和参照列必需成立索引。假设外键不设有索引的话,MYSQL将电动创制索引。

外键限定的参照操作:

  • CASCADE:从父表删除大概更新且活动删除或许更新子表中相称的行。
  • SET
    NULL
    :从父表删除可能更新行,并安装子表的中的外键列为NULL。假设运用该选项必须保险子表列中向来不点名NOT
    NULL。
  • RESTRICT:屏相对父表的翻新可能去除操作。
  • NOT ACTION: 规范SQL的关键字,在MYSQL中与REST揽胜ICT相符

创制富含自增主键的数据表

身体力行:创造顾客表:

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 钦命数据表的主键

insert into
className(class_name) select class_name from classes

数码操作(DML)

注意事项:

1、%不但代表私行个数的专断字符,它也得以空字符。

2、数据尾巴部分的空格大概会忧愁通配符的探求,比如:现有数量’abc
 ’,假设它聊到底有二个或多少个空格的话,则
%abc将不会查找到该数据,因为后边多余的空格也是字符。撤除办法是左右都加上%。

3、%不能够匹配null值。

 

2,改善某列的有个别数据

大背头类型

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

重命名数据表

rename table student to sInfo;

 

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

1,t_代表表名;字段
希腊语 田野同志

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

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

mySQL中的数据类型

在mySQL中各种字段,都必得旗帜显然它寄存的数据的花色,风姿洒脱旦钦命了花色,该字段(列)中的数据都必须契合那一个类型的节制,不然就能够挑起错误。

 

而且字符等门类须要钦赐内容的最大尺寸。

 

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

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

新建数据表

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

2、 内定数据表的字段,也便是列。在内定字段的进度中大家要对字段加多字段名、数据类型、数据长度、是或不是是主键、是否自增。(超级多景观下,主键是名称叫id的大背头类型,何况是自增的。)

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

诚如比超级少用*因为效能低;

校勘数据库的编码形式

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

何以设置主键

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

 

不可能被职业操作

怎么样是索引

  • 目录由数据库中一列或然多列组成,其意义是抓实对表中多少的查询速度
  • 目录的亮点是足以拉长检索数据的过程
  • 目录的毛病是创办和掩护索引必要消耗费时间间
  • 目录可以拉长查询速度,减慢写入速度

逻辑与and

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

 

删;外键在哪个人身上就先删什么人;

子查询

关系型数据库

纵使以行与列构成的二维数据表的款型,用来积累数据的,并且将多张数据表存款和储蓄在叁个单元中的存款和储蓄格局,就叫做关系型数据库。

select 某列 from
( select 列名 from表1) ;

目录分类

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

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

alter table product

 add pid int

 not null

 primary key

 auto_increment

 first;

 

其中

primary key 设置新字段为主键

first 将新字段放在别的字段的前头,处于首个人。

 

1,在select前面增加子查询

除去索引

(DROP INDEX 索引名称 ON tbl_name)

_(下划线)通配符

_ 通配符的法力与%相似,可是它只好协作单个任意字符。

 

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

数据表操作

4,在忘记root密码的时候,能够这么

系统音信函数

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

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

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

SHOW TABLES;

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

数学函数

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

primark(第一个主键,第3个主键);

MYSQL中的函数

3,查看当前岁月日期;select
now();

mysql>
flush privileges; 

insert into
表名称(字段1,字段2……..)values(‘j138’,”红瓦寺”…….)选拔插入有些列;

select * from t_team

数据表的斯特林发动机常常都要设成INNODB

not in()
不取()中的;not;非的意味

show create table
表名称;

仓库储存日常包涵预约义字符串的变量 例如: 准期航线,国家或邮政编码

(别忘了最后加分号) 。 

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

2,添加CONSTRAINT

7,链接查询查,

多少与索引的立异是联合的,假若全勤数目都有目录就能回退功效;

共有字段应当要八个表中都有能力找到

3、第三范式(3NF)

六,DQL;数据查询语句;查

八,关周密据库的两种设计范式介绍

CONSTRAINT
FK_student_classId FOREIGN key(class_id)

第二范式(2NF)须求数据库表中的每一种实例或行必需能够被唯生机勃勃地分别。

不是首先个数据必需是第叁个数据,不能有第两个数据现身

select ( select
列名 from表1) from 表1 ;

2,操作库

enumcvall(a,b,c…….);列枚举-节制有限值

distinct;表示具有非空不重复的值

4,min();最小值;

2,唯风度翩翩约束(unique)钦定的列非空的无法重新

4,fk_表示外键;外键格式
foreign key;

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

1,is;是“是”的意思(is
null)=是空

增;先增两表,在增中间表

select 某列 from
( select 列名 from表1) ;

CONSTRAINT
FK_student_classId FOREIGN key(class_id)

2,BLOB;5k;0-65k;

1,两张表的数目;通过多张表共有的字段查找多张表共有的并集,

9,注意

5,删除表;

主键不可能被退换,

1,两张表的数量;通过多张表共有的字段查找多张表共有的并集,

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

2,三张表查询例子(left
join 表 on 外键拼接)

between 下线 and
上线

FOREIGN
key(要把外键给那多少个字段的字段名)REFERENCES 关系表的表民(主键)

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

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

” 和null
同样啊?? 严厉意义不意气风发致

4,索引的败笔;

5,常用的部分数据库

万后生可畏数量存在则打字与印刷,不可能等于它自个儿;
not exsits;相反,倘诺数据不真实则打字与印刷

需求和子查询的结果和某列的结果逐风流洒脱相比后相当于则打字与印刷

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

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

1,积累数据以致数据结构的厂库。(db);

4,内定数量(default)钦点的多少能够变动;

2,删除年龄在18-20

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

4,默许引擎;

比如: 年纪,数量

2,数据库是单身;

1,成立索引;

八,关周全据库的二种设计范式介绍

Author

发表评论

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