1、数据库-MySql

什么是数据库

数据库(DataBase,简称DB)

概念:长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据"仓库"

作用:保存,并能安全管理数据(如:增删改查等),减少冗余…

数据库总览 :

关系型数据库 (SQL)
MySQL , Oracle , SQL Server , SQLite , DB2 , …
关系型数据库通过外键关联来建立表与表之间的关系
非关系型数据库(NOSQL)
Redis , MongoDB , …
非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

DBMS
数据库管理系统 ( DataBase Management System ):数据库管理软件 , 科学组织和存储数据 , 高效地获取和维护数据
在这里插入图片描述
Mysqly也算是数据库管理系统,这里主要介绍Mysql的安装和使用

安装Mysql

建议参考此篇博客:https://www.cnblogs.com/hellokuangshen/p/10242958.html 进行安装

安装Mysql常见问题

  • 缺少一个.dll组件
    去百度上下载相关组件
  • 发现net命名不存在 需要配置path环境变量:$SystemRoot%\system32s

Mysql常用控制台命令

在管理员模式下:

  • 启动Mysql服务:net start mysql
    若提示拒绝访问(发生系统错误5),说明没有管理员权限
  • 关闭Mysql服务:net stop mysql
  • 卸载Mysql:sc delete mysql
  • 登录(以root的身份初次登录,会进入MySql管理页面):user -uroot -p123456
    MySql初始密码为123456

在MySql管理页面下:

  • 创建名字为name的数据库:create database name;
  • 删除名字为name的数据库:drop database name;
  • 查看所有数据库:show databases;
  • 使用数据库:use database;
  • 查看数据库下的所有表:show tables;
  • 刷新数据库:flush privileges;
  • 查询名为use的命令的使用方法:? use;
  • 退出MySql管理页面:exit;

注意:
1.sql语句不区分大小写
2.每行sql语句都要以分号结尾(可以没有分号,但最好加上)

SQLyog

SQLyog,可手动操作,管理MySQL数据库的软件,建议在安装Mysql后安装此软件。
该工具特点 : 简洁 , 易用 , 图形化

打开SQLyog后,新建连接,如下图所示:
在这里插入图片描述
单击“测试连接”,出现如下图所示的弹窗,说明连接成功,再次点击“连接”即可:
在这里插入图片描述
使用SQLyog管理工具自己完成以下操作 :

  • 连接本地MySQL数据库

  • 新建MySchool数据库

    • 数据库名称myschool
      在这里插入图片描述
  • 新建数据库表(grade)
    在这里插入图片描述

    • 字段
      • gradeID:int(11) ,Primary Key (pk)
      • gradeName:varchar(50)
        在这里插入图片描述
  • 在历史记录中可以看到相对应的数据库操作的语句
    在这里插入图片描述

创建数据库、表

根据上一小节的例子,可以在“信息”选项卡中查看创建此表(grade)的sql语句
在这里插入图片描述
创建grade表的sql语句如下:

CREATE TABLE grade (
  gradeId int(11) NOT NULL COMMENT '年级Id',
  gradeName varchar(50) DEFAULT NULL COMMENT '年级名字',
  PRIMARY KEY (gradeId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

根据此段代码,创建表的sql语句如下:

#创建表格式
CREATE TABLE 表名(
	字段名 数据类型(长度) 修饰符,
	字段名 数据类型(长度) 修饰符,
	字段名 数据类型(长度) 修饰符
)

而创建数据库的sql语句如下:

#创建数据库
CREATE DATABASE 数据库名;

结构化查询语句SQL

结构化查询语句分类:

名称解释命令
DDL(数据定义语言)定义和管理数据对象,如数据库,数据表等CREATE、DROP、ALTER
DML(数据操作语言)用于操作数据库对象中所包含的数据INSERT、UPDATE、DELETE
DQL(数据查询语言)用于查询数据库数据SELECT
DCL(数据控制语言用来管理数据库的语言,包括管理权限及数据更改GRANT、COMMIT、ROLLBACK

数据值和列类型

  • 数值类型
类型说明取值范围存储需求
tinyint非常小的数据有符号值 -27 ~ 27;无符号值 0~281字节
smallint较小的数据有符号值 -215 ~215-1;无符号值 0~216-12字节
mediumint中等大小的数据有符号值 -223 ~223-1;无符号值 0~224-13字节
int标准整数有符号值 -221 ~221-1;无符号值 0~222-14字节
bigint较大的整数有符号值 -243 ~243-1;无符号值 0~244-18字节
float单精度浮点数±1.1754351e-384字节
double双精度浮点数±2.22507e-3068字节
decimal字符串形式的浮点数decimal(m,d)m字节
  • 字符串类型

类型
说明
最大长度

char
固定长字符串,检索快但浪费空间 0 <= M <= 255
M字符

varchar
可变字符串 0 <= M <= 65535
变长度

tinytext
微型文本串
28-1 字节

text
文本串
216-1 字节

日期和时间型数值类型

类型
说明
取值范围

DATE
YYYY-MM-DD,日期格式
1000-01-01~9999-12-31

TIME
Hh:mm:ss,时间格式
-838:59:59~838:59:59

DATETIME
YY-MM-DD hh:mm:ss
1000-01-01 00:00:00 至 9999-12-31 23:59:59

TIMESTAMP
YYYYMMDDhhmmss格式表示的时间戳
197010101000000~2037年的某个时刻

YEAR
YYYY格式的年份值
1901~2155

NULL值

  • 理解为"没有值"或"未知值"
  • 不要用NULL进行算术运算 , 结果仍为NULL

数据字段属性
结构化查询语句分类:
UnSigned :

无符号的
声明该数据列不允许负数

ZEROFILL :

0填充的
不足位数的用0来填充 , 如int(3),5则为005

Auto_InCrement :

自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)
通常用于设置主键 , 且为整数类型
可定义起始值和步长

  • 当前表设置步长(AUTO_INCREMENT=100):只影响当前表
  • SET @@auto_increment_increment=5:影响所有使用自增的表(全局)

NULL 和 NOT NULL :

默认为NULL , 即没有插入该列的数值
如果设置为NOT NULL,则该列必须有值

DEFAULT :

默认的
用于设置默认值

  • 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值

修改数据表

修改表名 :

ALTER TABLE 旧表名 RENAME AS 新表名
1

添加字段 :

ALTER TABLE 表名 ADD字段名 列属性[属性]
1

修改字段 :

ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
12

删除字段 :

ALTER TABLE 表名 DROP 字段名
1
外键
概念:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
在实际操作中,将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键(foreign key)。
作用:保持数据一致性,完整性,主要目的是控制存储在外键表中的数据,约束。 使两张表形成关联,外键只能引用外表中的列的值或使用空值。
创建外键有两种方式:

建表时指定外键约束

创建外键的方式一 : 创建子表同时创建外键

年级表(id\年级名称)

CREATE TABLE grade (
gradeid INT(10) NOT NULL AUTO_INCREMENT COMMENT ‘年级ID’,
gradename VARCHAR(50) NOT NULL COMMENT ‘年级名称’,
PRIMARY KEY (gradeid)
) ENGINE=INNODB DEFAULT CHARSET=utf8

学生信息表

#(学号,姓名,性别,年级,手机,地址,出生日期,邮箱,身份证号)

CREATE TABLE student (
studentno INT(4) NOT NULL COMMENT ‘学号’,
studentname VARCHAR(20) NOT NULL DEFAULT ‘匿名’ COMMENT ‘姓名’,
sex TINYINT(1) DEFAULT ‘1’ COMMENT ‘性别’,
gradeid INT(10) DEFAULT NULL COMMENT ‘年级’,
phoneNum VARCHAR(50) NOT NULL COMMENT ‘手机’,
address VARCHAR(255) DEFAULT NULL COMMENT ‘地址’,
borndate DATETIME DEFAULT NULL COMMENT ‘生日’,
email VARCHAR(50) DEFAULT NULL COMMENT ‘邮箱’,
idCard VARCHAR(18) DEFAULT NULL COMMENT ‘身份证号’,
PRIMARY KEY (studentno),
KEY FK_gradeid (gradeid),
CONSTRAINT FK_gradeid FOREIGN KEY (gradeid) REFERENCES grade (gradeid)
) ENGINE=INNODB DEFAULT CHARSET=utf8
1234567891011121314151617181920212223242526

建表后修改

创建外键方式二 : 创建子表完毕后,修改子表添加外键

ALTER TABLE student
ADD CONSTRAINT FK_gradeid FOREIGN KEY (gradeid) REFERENCES grade (gradeid);
123
增删查改

增加

INSERT INTO 表名[(字段1,字段2,字段3,…)] VALUES(‘值1’,‘值2’,‘值3’)
1
注意 :

字段或值之间用英文逗号隔开.
'字段1,字段2…'该部分可省略 , 但添加的值务必与表结构、数据列、顺序相对应,且数量一致
可同时插入多条数据,values 后用英文逗号隔开

语法 : INSERT INTO 表名[(字段1,字段2,字段3,…)] VALUES(‘值1’,‘值2’,‘值3’)

INSERT INTO grade(gradename) VALUES (‘大一’);

主键自增,那能否省略呢?

INSERT INTO grade VALUES (‘大二’);

查询:INSERT INTO grade VALUE (‘大二’)错误代码: 1136

Column count doesn`t match value count at row 1

得出结论:'字段1,字段2…'该部分可省略 , 但添加的值务必与表结构,数据列,顺序相对应,且数量一致.

一次插入多条数据

INSERT INTO grade(gradename) VALUES (‘大三’),(‘大四’);
12345678910111213

删除

DELETE FROM 表名 [WHERE condition];
1
注意 : condition为筛选条件 , 如不指定则删除该表的所有列数据
或者
TRUNCATE [TABLE] table_name;
1
用于完全清空表数据 , 但表结构 , 索引 , 约束等不变 ;
注意 : 区别于DELETE命令

相同 : 都能删除数据 , 不删除表结构 , 但TRUNCATE速度更快

不同 :

  • 使用TRUNCATE TABLE 重新设置AUTO_INCREMENT计数器
  • 使用TRUNCATE TABLE不会对事务有影响

创建一个测试表

CREATE TABLE test (
id INT(4) NOT NULL AUTO_INCREMENT,
coll VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8

插入几个测试数据

INSERT INTO test(coll) VALUES(‘row1’),(‘row2’),(‘row3’);

删除表数据(不带where条件的delete)

DELETE FROM test;

结论:如不指定Where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志.

删除表数据(truncate)

TRUNCATE TABLE test;

结论:truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.

同样使用DELETE清空不同引擎的数据库表数据.重启数据库服务后

InnoDB : 自增列从初始值重新开始 (因为是存储在内存中,断电即失)

MyISAM : 自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)

123456789101112131415161718192021

修改

UPDATE 表名 SET column_name=value [,column_name2=value2,…] [WHERE condition];
1
注意 :

column_name:为要更改的数据列

value:为修改后的数据 , 可以为变量 , 具体指 , 表达式或者嵌套的SELECT结果

condition:为筛选条件 , 如不指定则修改该表的所有列数据

查询

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,…]]}
FROM table_name [as table_alias]
[left | right | inner join table_name2] #联合查询
[WHERE …] #指定结果需满足的条件
[GROUP BY …] #指定结果按照哪几个字段来分组
[HAVING] #过滤分组的记录必须满足的次要条件
[ORDER BY …] #指定查询记录按一个或多个条件排序
[LIMIT {[offset,]row_count | row_countOFFSET offset}];
# 指定查询的记录从哪条至哪条
1234567891011
以接下来的sql语句作为模板,运用select可以实现三种功能:
/*
SQLyog Ultimate v10.00 Beta1
MySQL - 5.7.19 : Database - school


*/

/*!40101 SET NAMES utf8 */;

/!40101 SET SQL_MODE=’’/;

/!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 /;
/
!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 /;
/
!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=‘NO_AUTO_VALUE_ON_ZERO’ /;
/
!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 /;
CREATE DATABASE /
!32312 IF NOT EXISTS
/school /*!40100 DEFAULT CHARACTER SET utf8 */;

USE school;

/*Table structure for table grade */

DROP TABLE IF EXISTS grade;

CREATE TABLE grade (
GradeID INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘年级编号’,
GradeName VARCHAR(50) NOT NULL COMMENT ‘年级名称’,
PRIMARY KEY (GradeID)
) ENGINE=INNODB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

/*Data for the table grade */

INSERT INTO grade(GradeID,GradeName) VALUES (1,‘大一’),(2,‘大二’),(3,‘大三’),(4,‘大四’),(5,‘预科班’);

/*Table structure for table result */

DROP TABLE IF EXISTS result;

CREATE TABLE result (
StudentNo INT(4) NOT NULL COMMENT ‘学号’,
SubjectNo INT(4) NOT NULL COMMENT ‘课程编号’,
ExamDate DATETIME NOT NULL COMMENT ‘考试日期’,
StudentResult INT(4) NOT NULL COMMENT ‘考试成绩’,
KEY SubjectNo (SubjectNo)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

/*Data for the table result */

INSERT INTO result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES (1000,1,‘2013-11-11 16:00:00’,94),(1000,2,‘2012-11-10 10:00:00’,75),(1000,3,‘2011-12-19 10:00:00’,76),(1000,4,‘2010-11-18 11:00:00’,93),(1000,5,‘2013-11-11 14:00:00’,97),(1000,6,‘2012-09-13 15:00:00’,87),(1000,7,‘2011-10-16 16:00:00’,79),(1000,8,‘2010-11-11 16:00:00’,74),(1000,9,‘2013-11-21 10:00:00’,69),(1000,10,‘2012-11-11 12:00:00’,78),(1000,11,‘2011-11-11 14:00:00’,66),(1000,12,‘2010-11-11 15:00:00’,82),(1000,13,‘2013-11-11 14:00:00’,94),(1000,14,‘2012-11-11 15:00:00’,98),(1000,15,‘2011-12-11 10:00:00’,70),(1000,16,‘2010-09-11 10:00:00’,74),(1001,1,‘2013-11-11 16:00:00’,76),(1001,2,‘2012-11-10 10:00:00’,93),(1001,3,‘2011-12-19 10:00:00’,65),(1001,4,‘2010-11-18 11:00:00’,71),(1001,5,‘2013-11-11 14:00:00’,98),(1001,6,‘2012-09-13 15:00:00’,74),(1001,7,‘2011-10-16 16:00:00’,85),(1001,8,‘2010-11-11 16:00:00’,69),(1001,9,‘2013-11-21 10:00:00’,63),(1001,10,‘2012-11-11 12:00:00’,70),(1001,11,‘2011-11-11 14:00:00’,62),(1001,12,‘2010-11-11 15:00:00’,90),(1001,13,‘2013-11-11 14:00:00’,97),(1001,14,‘2012-11-11 15:00:00’,89),(1001,15,‘2011-12-11 10:00:00’,72),(1001,16,‘2010-09-11 10:00:00’,90),(1002,1,‘2013-11-11 16:00:00’,61),(1002,2,‘2012-11-10 10:00:00’,80),(1002,3,‘2011-12-19 10:00:00’,89),(1002,4,‘2010-11-18 11:00:00’,88),(1002,5,‘2013-11-11 14:00:00’,82),(1002,6,‘2012-09-13 15:00:00’,91),(1002,7,‘2011-10-16 16:00:00’,63),(1002,8,‘2010-11-11 16:00:00’,84),(1002,9,‘2013-11-21 10:00:00’,60),(1002,10,‘2012-11-11 12:00:00’,71),(1002,11,‘2011-11-11 14:00:00’,93),(1002,12,‘2010-11-11 15:00:00’,96),(1002,13,‘2013-11-11 14:00:00’,83),(1002,14,‘2012-11-11 15:00:00’,69),(1002,15,‘2011-12-11 10:00:00’,89),(1002,16,‘2010-09-11 10:00:00’,83),(1003,1,‘2013-11-11 16:00:00’,91),(1003,2,‘2012-11-10 10:00:00’,75),(1003,3,‘2011-12-19 10:00:00’,65),(1003,4,‘2010-11-18 11:00:00’,63),(1003,5,‘2013-11-11 14:00:00’,90),(1003,6,‘2012-09-13 15:00:00’,96),(1003,7,‘2011-10-16 16:00:00’,97),(1003,8,‘2010-11-11 16:00:00’,77),(1003,9,‘2013-11-21 10:00:00’,62),(1003,10,‘2012-11-11 12:00:00’,81),(1003,11,‘2011-11-11 14:00:00’,76),(1003,12,‘2010-11-11 15:00:00’,61),(1003,13,‘2013-11-11 14:00:00’,93),(1003,14,‘2012-11-11 15:00:00’,79),(1003,15,‘2011-12-11 10:00:00’,78),(1003,16,‘2010-09-11 10:00:00’,96),(1004,1,‘2013-11-11 16:00:00’,84),(1004,2,‘2012-11-10 10:00:00’,79),(1004,3,‘2011-12-19 10:00:00’,76),(1004,4,‘2010-11-18 11:00:00’,78),(1004,5,‘2013-11-11 14:00:00’,81),(1004,6,‘2012-09-13 15:00:00’,90),(1004,7,‘2011-10-16 16:00:00’,63),(1004,8,‘2010-11-11 16:00:00’,89),(1004,9,‘2013-11-21 10:00:00’,67),(1004,10,‘2012-11-11 12:00:00’,100),(1004,11,‘2011-11-11 14:00:00’,94),(1004,12,‘2010-11-11 15:00:00’,65),(1004,13,‘2013-11-11 14:00:00’,86),(1004,14,‘2012-11-11 15:00:00’,77),(1004,15,‘2011-12-11 10:00:00’,82),(1004,16,‘2010-09-11 10:00:00’,87),(1005,1,‘2013-11-11 16:00:00’,82),(1005,2,‘2012-11-10 10:00:00’,92),(1005,3,‘2011-12-19 10:00:00’,80),(1005,4,‘2010-11-18 11:00:00’,92),(1005,5,‘2013-11-11 14:00:00’,97),(1005,6,‘2012-09-13 15:00:00’,72),(1005,7,‘2011-10-16 16:00:00’,84),(1005,8,‘2010-11-11 16:00:00’,79),(1005,9,‘2013-11-21 10:00:00’,76),(1005,10,‘2012-11-11 12:00:00’,87),(1005,11,‘2011-11-11 14:00:00’,65),(1005,12,‘2010-11-11 15:00:00’,67),(1005,13,‘2013-11-11 14:00:00’,63),(1005,14,‘2012-11-11 15:00:00’,64),(1005,15,‘2011-12-11 10:00:00’,99),(1005,16,‘2010-09-11 10:00:00’,97),(1006,1,‘2013-11-11 16:00:00’,82),(1006,2,‘2012-11-10 10:00:00’,73),(1006,3,‘2011-12-19 10:00:00’,79),(1006,4,‘2010-11-18 11:00:00’,63),(1006,5,‘2013-11-11 14:00:00’,97),(1006,6,‘2012-09-13 15:00:00’,83),(1006,7,‘2011-10-16 16:00:00’,78),(1006,8,‘2010-11-11 16:00:00’,88),(1006,9,‘2013-11-21 10:00:00’,89),(1006,10,‘2012-11-11 12:00:00’,82),(1006,11,‘2011-11-11 14:00:00’,70),(1006,12,‘2010-11-11 15:00:00’,69),(1006,13,‘2013-11-11 14:00:00’,64),(1006,14,‘2012-11-11 15:00:00’,80),(1006,15,‘2011-12-11 10:00:00’,90),(1006,16,‘2010-09-11 10:00:00’,85),(1007,1,‘2013-11-11 16:00:00’,87),(1007,2,‘2012-11-10 10:00:00’,63),(1007,3,‘2011-12-19 10:00:00’,70),(1007,4,‘2010-11-18 11:00:00’,74),(1007,5,‘2013-11-11 14:00:00’,79),(1007,6,‘2012-09-13 15:00:00’,83),(1007,7,‘2011-10-16 16:00:00’,86),(1007,8,‘2010-11-11 16:00:00’,76),(1007,9,‘2013-11-21 10:00:00’,65),(1007,10,‘2012-11-11 12:00:00’,87),(1007,11,‘2011-11-11 14:00:00’,69),(1007,12,‘2010-11-11 15:00:00’,69),(1007,13,‘2013-11-11 14:00:00’,90),(1007,14,‘2012-11-11 15:00:00’,84),(1007,15,‘2011-12-11 10:00:00’,95),(1007,16,‘2010-09-11 10:00:00’,92),(1008,1,‘2013-11-11 16:00:00’,96),(1008,2,‘2012-11-10 10:00:00’,62),(1008,3,‘2011-12-19 10:00:00’,97),(1008,4,‘2010-11-18 11:00:00’,84),(1008,5,‘2013-11-11 14:00:00’,86),(1008,6,‘2012-09-13 15:00:00’,72),(1008,7,‘2011-10-16 16:00:00’,67),(1008,8,‘2010-11-11 16:00:00’,83),(1008,9,‘2013-11-21 10:00:00’,86),(1008,10,‘2012-11-11 12:00:00’,60),(1008,11,‘2011-11-11 14:00:00’,61),(1008,12,‘2010-11-11 15:00:00’,68),(1008,13,‘2013-11-11 14:00:00’,99),(1008,14,‘2012-11-11 15:00:00’,77),(1008,15,‘2011-12-11 10:00:00’,73),(1008,16,‘2010-09-11 10:00:00’,78),(1009,1,‘2013-11-11 16:00:00’,67),(1009,2,‘2012-11-10 10:00:00’,70),(1009,3,‘2011-12-19 10:00:00’,75),(1009,4,‘2010-11-18 11:00:00’,92),(1009,5,‘2013-11-11 14:00:00’,76),(1009,6,‘2012-09-13 15:00:00’,90),(1009,7,‘2011-10-16 16:00:00’,62),(1009,8,‘2010-11-11 16:00:00’,68),(1009,9,‘2013-11-21 10:00:00’,70),(1009,10,‘2012-11-11 12:00:00’,83),(1009,11,‘2011-11-11 14:00:00’,88),(1009,12,‘2010-11-11 15:00:00’,65),(1009,13,‘2013-11-11 14:00:00’,91),(1009,14,‘2012-11-11 15:00:00’,99),(1009,15,‘2011-12-11 10:00:00’,65),(1009,16,‘2010-09-11 10:00:00’,83),(1010,1,‘2013-11-11 16:00:00’,83),(1010,2,‘2012-11-10 10:00:00’,87),(1010,3,‘2011-12-19 10:00:00’,89),(1010,4,‘2010-11-18 11:00:00’,99),(1010,5,‘2013-11-11 14:00:00’,91),(1010,6,‘2012-09-13 15:00:00’,96),(1010,7,‘2011-10-16 16:00:00’,72),(1010,8,‘2010-11-11 16:00:00’,72),(1010,9,‘2013-11-21 10:00:00’,98),(1010,10,‘2012-11-11 12:00:00’,73),(1010,11,‘2011-11-11 14:00:00’,68),(1010,12,‘2010-11-11 15:00:00’,62),(1010,13,‘2013-11-11 14:00:00’,67),(1010,14,‘2012-11-11 15:00:00’,69),(1010,15,‘2011-12-11 10:00:00’,71),(1010,16,‘2010-09-11 10:00:00’,66),(1011,1,‘2013-11-11 16:00:00’,62),(1011,2,‘2012-11-10 10:00:00’,72),(1011,3,‘2011-12-19 10:00:00’,96),(1011,4,‘2010-11-18 11:00:00’,64),(1011,5,‘2013-11-11 14:00:00’,89),(1011,6,‘2012-09-13 15:00:00’,91),(1011,7,‘2011-10-16 16:00:00’,95),(1011,8,‘2010-11-11 16:00:00’,96),(1011,9,‘2013-11-21 10:00:00’,89),(1011,10,‘2012-11-11 12:00:00’,73),(1011,11,‘2011-11-11 14:00:00’,82),(1011,12,‘2010-11-11 15:00:00’,98),(1011,13,‘2013-11-11 14:00:00’,66),(1011,14,‘2012-11-11 15:00:00’,69),(1011,15,‘2011-12-11 10:00:00’,91),(1011,16,‘2010-09-11 10:00:00’,69),(1012,1,‘2013-11-11 16:00:00’,86),(1012,2,‘2012-11-10 10:00:00’,66),(1012,3,‘2011-12-19 10:00:00’,97),(1012,4,‘2010-11-18 11:00:00’,69),(1012,5,‘2013-11-11 14:00:00’,70),(1012,6,‘2012-09-13 15:00:00’,74),(1012,7,‘2011-10-16 16:00:00’,91),(1012,8,‘2010-11-11 16:00:00’,97),(1012,9,‘2013-11-21 10:00:00’,84),(1012,10,‘2012-11-11 12:00:00’,82),(1012,11,‘2011-11-11 14:00:00’,90),(1012,12,‘2010-11-11 15:00:00’,91),(1012,13,‘2013-11-11 14:00:00’,91),(1012,14,‘2012-11-11 15:00:00’,97),(1012,15,‘2011-12-11 10:00:00’,85),(1012,16,‘2010-09-11 10:00:00’,90),(1013,1,‘2013-11-11 16:00:00’,73),(1013,2,‘2012-11-10 10:00:00’,69),(1013,3,‘2011-12-19 10:00:00’,91),(1013,4,‘2010-11-18 11:00:00’,72),(1013,5,‘2013-11-11 14:00:00’,76),(1013,6,‘2012-09-13 15:00:00’,87),(1013,7,‘2011-10-16 16:00:00’,61),(1013,8,‘2010-11-11 16:00:00’,77),(1013,9,‘2013-11-21 10:00:00’,83),(1013,10,‘2012-11-11 12:00:00’,99),(1013,11,‘2011-11-11 14:00:00’,91),(1013,12,‘2010-11-11 15:00:00’,84),(1013,13,‘2013-11-11 14:00:00’,98),(1013,14,‘2012-11-11 15:00:00’,74),(1013,15,‘2011-12-11 10:00:00’,92),(1013,16,‘2010-09-11 10:00:00’,90),(1014,1,‘2013-11-11 16:00:00’,64),(1014,2,‘2012-11-10 10:00:00’,81),(1014,3,‘2011-12-19 10:00:00’,79),(1014,4,‘2010-11-18 11:00:00’,74),(1014,5,‘2013-11-11 14:00:00’,65),(1014,6,‘2012-09-13 15:00:00’,88),(1014,7,‘2011-10-16 16:00:00’,86),(1014,8,‘2010-11-11 16:00:00’,77),(1014,9,‘2013-11-21 10:00:00’,86),(1014,10,‘2012-11-11 12:00:00’,85),(1014,11,‘2011-11-11 14:00:00’,86),(1014,12,‘2010-11-11 15:00:00’,75),(1014,13,‘2013-11-11 14:00:00’,89),(1014,14,‘2012-11-11 15:00:00’,79),(1014,15,‘2011-12-11 10:00:00’,73),(1014,16,‘2010-09-11 10:00:00’,68),(1015,1,‘2013-11-11 16:00:00’,99),(1015,2,‘2012-11-10 10:00:00’,60),(1015,3,‘2011-12-19 10:00:00’,60),(1015,4,‘2010-11-18 11:00:00’,75),(1015,5,‘2013-11-11 14:00:00’,78),(1015,6,‘2012-09-13 15:00:00’,78),(1015,7,‘2011-10-16 16:00:00’,84),(1015,8,‘2010-11-11 16:00:00’,95),(1015,9,‘2013-11-21 10:00:00’,93),(1015,10,‘2012-11-11 12:00:00’,79),(1015,11,‘2011-11-11 14:00:00’,74),(1015,12,‘2010-11-11 15:00:00’,65),(1015,13,‘2013-11-11 14:00:00’,63),(1015,14,‘2012-11-11 15:00:00’,74),(1015,15,‘2011-12-11 10:00:00’,67),(1015,16,‘2010-09-11 10:00:00’,65),(1016,1,‘2013-11-11 16:00:00’,97),(1016,2,‘2012-11-10 10:00:00’,90),(1016,3,‘2011-12-19 10:00:00’,77),(1016,4,‘2010-11-18 11:00:00’,75),(1016,5,‘2013-11-11 14:00:00’,75),(1016,6,‘2012-09-13 15:00:00’,97),(1016,7,‘2011-10-16 16:00:00’,96),(1016,8,‘2010-11-11 16:00:00’,92),(1016,9,‘2013-11-21 10:00:00’,62),(1016,10,‘2012-11-11 12:00:00’,83),(1016,11,‘2011-11-11 14:00:00’,98),(1016,12,‘2010-11-11 15:00:00’,94),(1016,13,‘2013-11-11 14:00:00’,62),(1016,14,‘2012-11-11 15:00:00’,97),(1016,15,‘2011-12-11 10:00:00’,76),(1016,16,‘2010-09-11 10:00:00’,82),(1017,1,‘2013-11-11 16:00:00’,100),(1017,2,‘2012-11-10 10:00:00’,88),(1017,3,‘2011-12-19 10:00:00’,86),(1017,4,‘2010-11-18 11:00:00’,73),(1017,5,‘2013-11-11 14:00:00’,96),(1017,6,‘2012-09-13 15:00:00’,64),(1017,7,‘2011-10-16 16:00:00’,81),(1017,8,‘2010-11-11 16:00:00’,66),(1017,9,‘2013-11-21 10:00:00’,76),(1017,10,‘2012-11-11 12:00:00’,95),(1017,11,‘2011-11-11 14:00:00’,73),(1017,12,‘2010-11-11 15:00:00’,82),(1017,13,‘2013-11-11 14:00:00’,85),(1017,14,‘2012-11-11 15:00:00’,68),(1017,15,‘2011-12-11 10:00:00’,99),(1017,16,‘2010-09-11 10:00:00’,76);

/*Table structure for table student */

DROP TABLE IF EXISTS student;

CREATE TABLE student (
StudentNo INT(4) NOT NULL COMMENT ‘学号’,
LoginPwd VARCHAR(20) DEFAULT NULL,
StudentName VARCHAR(20) DEFAULT NULL COMMENT ‘学生姓名’,
Sex TINYINT(1) DEFAULT NULL COMMENT ‘性别,取值0或1’,
GradeId INT(11) DEFAULT NULL COMMENT ‘年级编号’,
Phone VARCHAR(50) NOT NULL COMMENT ‘联系电话,允许为空,即可选输入’,
Address VARCHAR(255) NOT NULL COMMENT ‘地址,允许为空,即可选输入’,
BornDate DATETIME DEFAULT NULL COMMENT ‘出生时间’,
Email VARCHAR(50) NOT NULL COMMENT ‘邮箱账号,允许为空,即可选输入’,
IdentityCard VARCHAR(18) DEFAULT NULL COMMENT ‘身份证号’,
PRIMARY KEY (StudentNo),
UNIQUE KEY IdentityCard (IdentityCard),
KEY Email (Email)
) ENGINE=MYISAM DEFAULT CHARSET=utf8;

/*Data for the table student */

INSERT INTO student(StudentNo,LoginPwd,StudentName,Sex,GradeId,Phone,Address,BornDate,Email,IdentityCard) VALUES (1000,‘111111’,‘郭靖’,1,1,‘13500000001’,‘北京海淀区中关村大街1号’,‘1986-12-11 00:00:00’,‘test1@bdqn.cn’,‘450323198612111234’),(1001,‘123456’,‘李文才’,1,2,‘13500000002’,‘河南洛阳’,‘1981-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198112311234’),(1002,‘111111’,‘李斯文’,1,1,‘13500000003’,‘天津市和平区’,‘1986-11-30 00:00:00’,‘test1@bdqn.cn’,‘450323198611301234’),(1003,‘123456’,‘武松’,1,3,‘13500000004’,‘上海卢湾区’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612314234’),(1004,‘123456’,‘张三’,1,4,‘13500000005’,‘北京市通州’,‘1989-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311244’),(1005,‘123456’,‘张秋丽 ‘,2,1,‘13500000006’,‘广西桂林市灵川’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311214’),(1006,‘123456’,‘肖梅’,2,4,‘13500000007’,‘地址不详’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311134’),(1007,‘111111’,‘欧阳峻峰’,1,1,‘13500000008’,‘北京东城区’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311133’),(1008,‘111111’,‘梅超风’,1,1,‘13500000009’,‘河南洛阳’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311221’),(1009,‘123456’,‘刘毅’,1,2,‘13500000011’,‘安徽’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311231’),(1010,‘111111’,‘大凡’,1,1,‘13500000012’,‘河南洛阳’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311044’),(1011,‘111111’,‘奥丹斯’,1,1,‘13500000013’,‘北京海淀区中关村大街号’,‘1984-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198412311234’),(1012,‘123456’,‘多伦’,2,3,‘13500000014’,‘广西南宁中央大街’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311334’),(1013,‘123456’,‘李梅’,2,1,‘13500000015’,‘上海卢湾区’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311534’),(1014,‘123456’,‘张得’,2,4,‘13500000016’,'北京海淀区中关村大街号’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311264’),(1015,‘123456’,‘李东方’,1,4,‘13500000017’,‘广西桂林市灵川’,‘1976-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323197612311234’),(1016,‘111111’,‘刘奋斗’,1,1,‘13500000018’,‘上海卢湾区’,‘1986-12-31 00:00:00’,‘test1@bdqn.cn’,‘450323198612311251’),(1017,‘123456’,‘可可’,2,3,‘13500000019’,‘北京长安街1号’,‘1981-09-10 00:00:00’,‘test1@bdqn.cn’,‘450323198109108311’),(10066,’’,‘Tom’,1,1,‘13500000000’,’’,‘0000-00-00 00:00:00’,‘email@22.com’,‘33123123123123123’);

/*Table structure for table subject */

DROP TABLE IF EXISTS subject;

CREATE TABLE subject (
SubjectNo INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘课程编号’,
SubjectName VARCHAR(50) DEFAULT NULL COMMENT ‘课程名称’,
ClassHour INT(4) DEFAULT NULL COMMENT ‘学时’,
GradeID INT(4) DEFAULT NULL COMMENT ‘年级编号’,
PRIMARY KEY (SubjectNo)
) ENGINE=INNODB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

/*Data for the table subject */

INSERT INTO subject(SubjectNo,SubjectName,ClassHour,GradeID) VALUES (1,‘高等数学-1’,110,1),(2,‘高等数学-2’,110,2),(3,‘高等数学-3’,100,3),(4,‘高等数学-4’,130,4),(5,‘C语言-1’,110,1),(6,‘C语言-2’,110,2),(7,‘C语言-3’,100,3),(8,‘C语言-4’,130,4),(9,‘JAVA第一学年’,110,1),(10,‘JAVA第二学年’,110,2),(11,‘JAVA第三学年’,100,3),(12,‘JAVA第四学年’,130,4),(13,‘数据库结构-1’,110,1),(14,‘数据库结构-2’,110,2),(15,‘数据库结构-3’,100,3),(16,‘数据库结构-4’,130,4),(17,‘C#基础’,130,1);

/*!40101 SET SQL_MODE=@OLD_SQL_MODE /;
/
!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS /;
/
!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS /;
/
!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
指定查询字段
查询表结果时 , 可指定查询结果的数据列

查询表中所有的数据列结果 , 采用 " * " 符号;
如 : SELECT * FROM student;
但是效率低 , 不推荐

查询所有学生信息

SELECT * FROM student;

查询指定列(学号 , 姓名)

SELECT studentno,studentname FROM student;
12345
AS子句作为别名
AS子句作用 :

可给数据列取一个新别名
可给表去一个新别名
可把经计算或总结的结果用另一个新名称来代替

这里是为列取别名(当然as关键词可以省略)

SELECT studentno AS 学号,studentname AS 姓名 FROM student;

使用as也可以为表取别名

SELECT studentno AS 学号,studentname AS 姓名 FROM student AS s;

使用as,为查询结果取一个新名字

CONCAT()函数拼接字符串

SELECT CONCAT(‘姓名:’,studentname) AS 新姓名 FROM student;
123456789
DISTINCT关键字的使用
作用 : 去掉SELECT查询返回的记录结果中重复的记录(返回所有列的值都相同),只返回一条

查看哪些同学参加了考试(学号)–去除重复项

SELECT * FROM result; # 查看考试成绩
SELECT studentno FROM result; # 查看哪些同学参加了考试
SELECT DISTINCT studentno FROM result;

了解:DISTINCT 去除重复项 , (默认是ALL)

12345
SELECT基本语法
#1.[ALL | DISTINCT] 全部/去重复 【+】
#2.选择的字段可以是表,可以是列,通过as取别名 【+】
#3.从哪个表选择 通过as 取别名
#4.连接查询(左连接,右连接,内连接)【+】
#5.where 条件子句【+】
#6.GROUP BY 通过什么列分组,返回每个列的数量
#7.HAVING 次条件子句
#8 ORDER BY 通过什么列进行排序,升序ASC 降序DESC
#9.Limit startRows,PagesRows 【+】
SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,…]]}
FROM table_name [as table_alias]
[left | right | inner join table_name2] #联合查询
[WHERE …] #指定结果需满足的条件
[GROUP BY …] #指定结果按照哪几个字段来分组
[HAVING] #过滤分组的记录必须满足的次要条件
[ORDER BY …] #指定查询记录按一个或多个条件排序
[LIMIT {[offset,]row_count | row_countOFFSET offset}];
# 指定查询的记录从哪条至哪条
12345678910111213141516171819
where条件语句

用于检索数据表中 符合条件 的记录
搜索条件可由一个或多个逻辑表达式组成 , 结果一般为真或假.
用于模糊查询
逻辑操作符

操作符名称
语法
描述

AND 或 &&
a and b 或 a && b
逻辑与,同时为真结果才为真

OR 或 ||
a OR b 或 a||b
逻辑或,只要一个为真,则结果为真

NOT或!
NOT a 或 !a
逻辑非,若操作数为假,结果则为真

比较操作符

操作符名称
语法
描述

IS NULL
a IS NULL
若操作符为NULL,则结果为真

IS NOT NULL
a IS NOT NULL
若操作符不为NULL,则结果为真

BETWEEN
a BETWEEN b AND c
若a范围在b与c之间则结果为真

LIKE
a LIKE b
SQL模式匹配,若a匹配b,则结果为真

IN
a IN (a1,a2,a3,…,)
若a等于a1,a2…中的某一个,则结果为真

以上面的查询小节的sql语句为例子,where的运用示例l如下:

满足条件的查询(where)

SELECT Studentno,StudentResult FROM result;

查询考试成绩在95-100之间的

SELECT Studentno,StudentResult
FROM result
WHERE StudentResult>=95 AND StudentResult<=100;

AND也可以写成 &&

SELECT Studentno,StudentResult
FROM result
WHERE StudentResult>=95 && StudentResult<=100;

模糊查询(对应的词:精确查询)

SELECT Studentno,StudentResult
FROM result
WHERE StudentResult BETWEEN 95 AND 100;

除了1000号同学,要其他同学的成绩

SELECT studentno,studentresult
FROM result
WHERE studentno!=1000;

使用NOT

SELECT studentno,studentresult
FROM result
WHERE NOT studentno=1000;
1234567891011121314151617181920212223
注意:

数值数据类型的记录之间才能进行算术运算
相同数据类型的数据之间才能进行比较

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值