(1)MySQL 数据库开发技术
学习目标:
MySQL数据库数据库基础、编写简单的查询语句、限制数据和对数据排序、单行函数、多表查询、分组函数、子查询、DML、表和约束
(2)JavaSE 核心技术
主要包括:认识Java、变量和运算符、流程控制语句、数组、方法、面向对象基础、面向对象高级特性、异常处理。工具类、集合、IO/NIO、多线程编程、JDK8.0新技术,JDBC数据库编程技术。
学习正式开始:
需安装软件:
–1. MySQL数据库数据库基础:
1、什么是数据库 ?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
主流的数据库有:sqlserver,mysql(本章重点学习),Oracle、SQLite、Access、MS SQL Server等,本文主要讲述的是mysql
2、数据库管理是干什么用的?
a. 将数据保存到文件或内存
b. 接收特定的命令,然后对文件进行相应的操作
PS:如果有了以上管理系统,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作,他们统称为数据库管理系统(DBMS,Database Management System)
mysql安装
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
使用mysql必须具备一下条件
a. 安装MySQL服务端
b. 安装MySQL客户端
c. 【客户端】连接【服务端】
d. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)
1、下载地址:http://dev.mysql.com/downloads/mysql/
2、安装
windows安装请参考:http://www.cnblogs.com/lonelywolfmoutain/p/4547115.html
linux下安装:http://www.cnblogs.com/chenjunbiao/archive/2011/01/24/1940256.html
注:以上两个链接有完整的安装方式,撸主也是参考他的安装的,安装完以后mysql.server start启动mysql服务
mysql操作
一、连接数据库
mysql -u user -p 例:mysql -u root -p
常见错误如下:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running.
退出连接:
QUIT 或者 Ctrl+D
二、查看数据库,创建数据库,使用数据库查看数据库: show databases;
默认数据库:
mysql - 用户权限相关数据
test - 用于用户测试数据
information_schema - MySQL本身架构相关数据
创建数据库:
create database db1 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; # utf8编码 create database db1 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; # gbk编码
使用数据库: use db1;
显示当前使用的数据库中所有表:SHOW TABLES;
三、用户管理
创建用户
create user '用户名'@'IP地址' identified by '密码';
删除用户
drop user '用户名'@'IP地址';
修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
修改密码
set password for '用户名'@'IP地址' = Password('新密码')
注:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议)
四、权限管理
mysql对于权限这块有以下限制:
对于数据库及内部其他权限如下:
数据库名.* 数据库中的所有
数据库名.表 指定数据库中的某张表
数据库名.存储过程 指定数据库中的存储过程
*.* 所有数据库
对于用户和IP的权限如下:
用户名@IP地址 用户只能在改IP下才能访问
用户名@192.168.1.% 用户只能在改IP段下才能访问(通配符%表示任意)
用户名@% 用户可以再任意IP下访问(默认IP地址为%)
1、查看权限:
show grants for ‘用户’@‘IP地址’
2、授权
grant 权限 on 数据库.表 to ‘用户’@‘IP地址’
3、取消授权
revoke 权限 on 数据库.表 from ‘用户’@‘IP地址’
授权实例如下:
grant all privileges on db1.tb1 TO ‘用户名’@‘IP’
grant select on db1.* TO ‘用户名’@‘IP’
grant select,insert on . TO ‘用户名’@‘IP’
revoke select on db1.tb1 from ‘用户名’@‘IP’
mysql表操作
1、查看表
show tables; # 查看数据库全部表
select * from 表名; # 查看表所有内容
2、创建表
create table 表名(
列名 类型 是否可以为空,
列名 类型 是否可以为空
)ENGINE=InnoDB DEFAULT CHARSET=utf8
来一个实例好详解
CREATE TABLE tab1
(
nid
int(11) NOT NULL auto_increment, # not null表示不能为空,auto_increment表示自增
name
varchar(255) DEFAULT zhangyanlin, # default 表示默认值
email
varchar(255),
PRIMARY KEY (nid
) # 把nid列设置成主键
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
注:
默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值
自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)注意:1、对于自增列,必须是索引(含主键)2、对于自增可以设置步长和起始值
主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。
3、删除表
drop table 表名
4、清空表内容
delete from 表名
truncate table 表名
5、修改表
添加列: alter table 表名 add 列名 类型
删除列: alter table 表名 drop column 列名
修改列:
alter table 表名 modify column 列名 类型; -- 类型
alter table 表名 change 原列名 新列名 类型; -- 列名,类型
添加主键:
alter table 表名 add primary key(列名);
删除主键:
alter table 表名 drop primary key;
alter table 表名 modify 列名 int, drop primary key;
添加外键: alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);
删除外键: alter table 表名 drop foreign key 外键名称
修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
对于上述这些操作是不是看起来很麻烦,很浪费时间,别慌!有专门的软件能提供这些功能,操作起来非常简单,这个软件名字叫Navicat Premium ,大家自行在网上下载,练练手,但是下面的即将讲到表内容操作还是建议自己写命令来进行
6、基本数据类型
MySQL的数据类型大致分为:数值、时间和字符串
bit[(M)]
二进制位(101001),m表示二进制位的长度(1-64),默认m=1
tinyint[(m)] [unsigned] [zerofill]
小整数,数据类型用于保存一些范围的整数数值范围:
有符号:
-128 ~ 127.
无符号:
0 ~ 255
特别的: MySQL中无布尔值,使用tinyint(1)构造。
int[(m)][unsigned][zerofill]
整数,数据类型用于保存一些范围的整数数值范围:
有符号:
-2147483648 ~ 2147483647
无符号:
0 ~ 4294967295
特别的:整数类型中的m仅用于显示,对存储范围无限制。例如: int(5),当插入数据2时,select 时数据显示为:00002
bigint[(m)][unsigned][zerofill]
大整数,数据类型用于保存一些范围的整数数值范围:
有符号:
-9223372036854775808 ~ 9223372036854775807
无符号:
0 ~ 18446744073709551615
decimal[(m[,d])] [unsigned] [zerofill]
准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。
特别的:对于精确数值计算时需要用此类型
decaimal能够存储精确值的原因在于其内部按照字符串存储。
FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
无符号:
-3.402823466E+38 to -1.175494351E-38,
0
1.175494351E-38 to 3.402823466E+38
有符号:
0
1.175494351E-38 to 3.402823466E+38
**** 数值越大,越不准确 ****
DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]
双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。
无符号:
-1.7976931348623157E+308 to -2.2250738585072014E-308
0
2.2250738585072014E-308 to 1.7976931348623157E+308
有符号:
0
2.2250738585072014E-308 to 1.7976931348623157E+308
**** 数值越大,越不准确 ****
char (m)
char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。
PS: 即使数据小于m长度,也会占用m长度
varchar(m)
varchars数据类型用于变长的字符串,可以包含最多达255个字符。其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。
注:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡
text
text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。
mediumtext
A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.
longtext
A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1) characters.
enum
枚举类型,
An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)
示例:
CREATE TABLE shirts (
name VARCHAR(40),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);
INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
set
集合类型
A SET column can have a maximum of 64 distinct members.
示例:
CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');
DATE
YYYY-MM-DD(1000-01-01/9999-12-31)
TIME
HH:MM:SS('-838:59:59'/'838:59:59')
YEAR
YYYY(1901/2155)
DATETIME
YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y)
TIMESTAMP
YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
mysql表内容操作
表内容操作无非就是增删改查,当然用的最多的还是查,而且查这一块东西最多,用起来最难,当然对于大神来说那就是so easy了,对于我这种小白还是非常难以灵活运用的,下面咱来一一操作一下
1、增
insert into 表 (列名,列名…) values (值,值,…)
insert into 表 (列名,列名…) values (值,值,…),(值,值,值…)
insert into 表 (列名,列名…) select (列名,列名…) from 表
例:
insert into tab1(name,email) values('zhangyanlin','zhangyanlin8851@163.com')
2、删
delete from 表 # 删除表里全部数据
delete from 表 where id=1 and name=’zhangyanlin’ # 删除ID =1 和name=‘zhangyanlin’ 那一行数据
3、改
update 表 set name = ‘zhangyanlin’ where id>1
4、查
select * from 表
select * from 表 where id > 1
select nid,name,gender as gg from 表 where id > 1
查这块的条件太多太多我给列举出来至于组合还得看大家的理解程度哈
a、条件判断where
b、通配符like
c、限制limit
d、排序asc,desc
e、分组group by
总结
mysql
关系型数据库:
SQL 是用于访问和处理数据库的标准的计算机语言。
- 类型
字节:8bit 内存的最小单位是bit只能存0或1
字符:键盘上所有看见的按键都是字符‘1’ ‘a’ ‘*’
字符串:“zhuxiaoke”
作用是规定了变量所占内存字节数。
-
变量
作用:存放数据 -
网络
以太网适配器 本地连接:连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : Intel® Ethernet Connection (2) I219-LM
物理地址. . . . . . . . . . . . . : DC-4A-3E-6B-98-55
DHCP 已启用 . . . . . . . . . . . : 是
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::f46f:efc:ebb7:ad30%11(首选)
IPv4 地址 . . . . . . . . . . . . : 10.25.41.24(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.128
获得租约的时间 . . . . . . . . . : 2019年9月9日 9:08:18
租约过期的时间 . . . . . . . . . : 2019年9月9日 15:08:17
默认网关. . . . . . . . . . . . . : 10.25.41.1
DHCP 服务器 . . . . . . . . . . . : 1.1.1.1
DHCPv6 IAID . . . . . . . . . . . : 239603663
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-21-E7-93-2E-48-0F-CF-65-F7-A5
DNS 服务器 . . . . . . . . . . . : 114.114.114.114
8.8.8.8
TCPIP 上的 NetBIOS . . . . . . . : 已启用
DHCP协议:自动分配ip地址
192.168.255.123
255.255.255.0
按位与:相同bit位数据比较,同时为1结果为1,有一个为0或同时为0结果为0
11000000.10101000.11111111.01111011 192.168.255.123
11111111.11111111.11111111.00000000 255.255.255.0
按位与 11000000.10101000.11111111.00000000 192.168.255.0 网络段
在同一网络段中的主机设备可以网络通信。
主机段:在同一网络中主机段不能相同。
子网掩码的作用:将ip地址划分为网络段和主机段,将ip地址与子网掩码按位与结果就是网络段
dns服务器:https://www.baidu.com–DNS服务器->45.34.123.84
域名解析成服务器ip地址。
端口号:找到接受数据的进程(程序)
-
mysql中root是mysql数据库管理系统的超级用户
-
mysql的目录结构:
bin:binary(二进制) 可执行文件
data:数据
docs:documents文档
include:头文件 java类型的文件(.java .h)
lib:库文件
6 运行mysql
在cmd情况下运行
-
进入mysql路径
-
执行:mysql -uroot -p安装时的密码
-
网络总结
IP地址:网络段 主机端,网络通信中找到每台主机。
ipv4地址用十进制表示,点式 192.168.1.123
子网掩码:作用就是区分ip地址中网络段和主机端 255.0.0.0 255.255.0.0 255.255.255.0
网络段:ip地址 与 子网掩码 按位与 结果就是 ip地址的网络段 剩下部分是主机段
网络段作用:在相同网络段中主机可以通信
主机段作用:在网络中区分每台主机。在同一网络主机段不能相同。 -
mysql中每条sql语句必须以";"结尾
(1) 退出命令
exit;
quit;
(2) 命令的帮助
help;
(3)创建数据库
create database 数据库名称;
mysql> create database student_db;
Query OK, 1 row affected (0.00 sec)
错误情况:命令没有结束,没写;
mysql> create database stu
->;
查看所有数据库:
mysql> show databases;
±-------------------+
| Database |
±-------------------+
| information_schema |
| mysql |
| performance_schema |
| sakila |
| stu |
| student_db |
| test |
| world |
±-------------------+
8 rows in set (0.00 sec)
删除数据库:
drop database 数据库名称;
mysql> drop database world;
Query OK, 3 rows affected (0.09 sec)
选择操作数据库:
use 数据库名称;
mysql> use student_db;
Database changed
(4)创建表
create table 表名(字段名称1 类型,字段名称2 类型,字段名称3 类型);
mysql> create table stu_info(name char(10), age tinyint, address text);
Query OK, 0 rows affected (0.06 sec)
查看表的结构:
mysql> describe stu_info;
字段 类型 是否
可以
为空 主键 默认值 外键
±--------±-----------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±--------±-----------±-----±----±--------±------+
| name | char(10) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| address | text | YES | | NULL | |
±--------±-----------±-----±----±--------±------+
3 rows in set (0.01 sec)
删除表
drop table 表名称;
显示当前数据库的所有表:
mysql> show tables;
±---------------------+
| Tables_in_student_db |
±---------------------+
| stu_info |
±---------------------+
1 row in set (0.00 sec)
设置主键:
字段 类型 primary key
mysql> create table stu_info(stu_id int primary key, stu_name char(11), stu_age tinyint);
Query OK, 0 rows affected (0.07 sec)
- 总结
mysql安装:超级用户root 设置密码
网络:
七层:物理 数据链路 网络 传输 会话 表示 应用
ip地址:A B C D E 网络段和主机段字节数,子网掩码 ip&子网掩码=网络段
mysql中命令:
cd mysql/bin目录 C:\Program Files\MySQL\MySQL Server 5.5\bin
mysql -uroot -p回车
输入登录密码
exit/quit
help
create database 数据库名称;
query ok
show databases; 显示当前所有数据库名称
drop database 数据库名称; 删除数据库
use 数据库名称; 选择操作数据库
表:
创建表:
create table 表名称(字段名称1 类型 [约束],字段名称2 类型 [约束]);
显示表结构:
describe 表名称;
删除表:
drop table 表名称;
显示数据库中所有的表:
show tables;
约束:
主键:primary key 自动将主键字段设置为not null
作业:
环境变量
PATH环境变量的作用
复习:
-
复习
网络:
七层:应用 表示 会话 传输(tcp/udp) 网络(ip) 数据链路 物理tcp/ip协议卷1
ip:网络段:在同一个网络段的设备可以通信的
主机段:在同一网络内主机段不能相同ipv4 点式 十进制表示 子网掩码 A B C D E 5.1.1.1 5.255.255.255 主机段上全部数字为255 广播地址 组播地址 单播地址
tcp:可靠的 ,面向连接,慢
udp: 不可靠的,面向无连接,快java:应用程序 服务器
mysql:
1 登录mysql
切换路径:cd c:/Program files/mysql/mysql server/bin
执行登录命令:# mysql -u root -p
password:123456
- 数据库
show databases; 查看所有数据库
create database 数据库名称; 创建数据库
drop database 数据库名称; 删除数据库
use 数据库名称;
- 表
(1) 创建表
create table 表名称(字段1 类型 [约束条件],字段2 类型);
query ok
主键:primary key,自动设置该字段的null约束条件为no,主键字段的数据不能重复
自动增加:auto_increment 根据当前表中最后一条记录的值设置插入记录该字段的值。
mysql> create table stu_score(stu_id int primary key auto_increment,
stu_name char(11),
english float,
chinese float,
math float);
Query OK, 0 rows affected (0.06 sec)
(2) 查看表的结构
describe 表名称;
(3) 删除表
drop table 表名称;
(4) 字符串
”zhangsan“
(5) 查看表中数据
select 字段1,字段2 from 表名;
mysql> select stu_id, stu_name, stu_age from stu_info;
±-------±---------±--------+
| stu_id | stu_name | stu_age |
±-------±---------±--------+
| 1 | zhangsan | 21 |
±-------±---------±--------+
1 row in set (0.00 sec)
查看表中所有的字段的值:*表示所有的字段
select * from 表名;
mysql> select * from stu_info;
±-------±---------±--------+
| stu_id | stu_name | stu_age |
±-------±---------±--------+
| 1 | zhangsan | 21 |
±-------±---------±--------+
1 row in set (0.00 sec)
(6) 插入数据
insert into 表名(字段名1,字段名2,…) values(值1, 值2, 。。),(值1,…);
insert into 表名 set 字段1=值,字段2=值,字段3=值;
mysql> insert into stu_score set stu_name=“lisi”, english=70, math=70;
练习:
- 创建成绩表:id name english chineses math
- 插入5条数据:
mysql> insert into stu_score(stu_id, stu_name, english, chinese, math) values(1,“111”, 61, 61, 61);
Query OK, 1 row affected (0.03 sec)
mysql> insert into stu_score(stu_id, stu_name, english, chinese, math)
values(2,“222”, 62, 62, 62),
(3, “333”, 63, 63, 63),;
Query OK, 2 rows affected (0.04 sec)
Records: 2 Duplicates: 0 Warnings: 0
计算机基础:
- 环境变量:
环境变量(environment variables)一般是指在操作系统(windows、linux、mac)中用来指定操作系统运行环境的一些参数
环境变量Path(路径):在执行每个命令时,系统回到path环境变量中的路径中查找执行命令是否存在,
如果存在执行该命令,如果不存之返回错误。
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;C:\Program Files\MySQL\MySQL Utilities 1.6
%SystemRoot%表示SystemRoot环境变量
环境变量有多个值组成,每个值以";"f分割
- error 错误
bug(debug) 警告
上午总结:
-
环境变量:存放操作系统中参数的值
-
Path环境变量:存放操作系统执行命令的时候,到path的值中的路径中查找命令。
mysql命令的路径添加到Path环境变量中,cmd关闭后打开,设置path的值生效。 -
create table 表名(字段 类型 primary key auto_increment)
-
insert into 表名(字段名1,字段2,字段3) values(值1,值2,值3),(值4,值5, 值6);
insert into 表名 set 字段1=值,字段2=值; -
select 字段1,字段2 from 表名;
select * from 表名;
- where 条件
条件:
=表示是否相等 java中是否相等用"==" java中=表示赋值“变量=值/变量
mysql> select * from stu_score;
±-------±---------±--------±--------±-----+
| stu_id | stu_name | english | chinese | math |
±-------±---------±--------±--------±-----+
| 1 | 111 | 61 | 61 | 61 |
| 2 | 222 | 62 | 62 | 62 |
| 3 | 333 | 63 | 63 | 63 |
| 4 | lisi | 70 | NULL | 70 |
| 5 | lisi | 70 | NULL | 70 |
±-------±---------±--------±--------±-----+
mysql> select * from stu_score where english=70;
条件:
and表示同时满足多个条件 java表示条件同时满足&&
english字段的值满足大于60 并且 English字段的值满足小于70
mysql> select * from stu_score where english>60 and english<70;
±-------±---------±--------±--------±-----+
| stu_id | stu_name | english | chinese | math |
±-------±---------±--------±--------±-----+
| 1 | 111 | 61 | 61 | 61 |
| 2 | 222 | 62 | 62 | 62 |
| 3 | 333 | 63 | 63 | 63 |
±-------±---------±--------±--------±-----+
条件:
or表示多个条件中有一个满足条件的记录将会打印
mysql> select * from stu_score where english=70 or math=63;
±-------±---------±--------±--------±-----+
| stu_id | stu_name | english | chinese | math |
±-------±---------±--------±--------±-----+
| 3 | 333 | 63 | 63 | 63 |
| 4 | lisi | 70 | NULL | 70 |
| 5 | lisi | 70 | NULL | 70 |
±-------±---------±--------±--------±-----+
select 字段1,字段2 from 表名 where 条件;
向已经存在的表中添加字段:
alter table 表名 add 添加字段名称 类型 [约束条件];
mysql> alter table book_price add bk_id int primary key auto_increment;
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> describe book_price;
±---------±---------±-----±----±--------±---------------+
| Field | Type | Null | Key | Default | Extra |
±---------±---------±-----±----±--------±---------------+
| bk_name | char(20) | YES | | NULL | |
| bk_price | float | YES | | NULL | |
| bk_id | int(11) | NO | PRI | NULL | auto_increment |
±---------±---------±-----±----±--------±---------------+
3 rows in set (0.01 sec)
练习:
建立表,图书价格表:id name price
查询:单价在50~100,单价大于100,单价小于等于200并大于100
删除记录:
delete from 表名; 删除表中所有数据
delete from 表名 where 删除条件;
修改:
update 表名 set 字段=值 where 条件;
表操作:
增:insert
删:delete
改:update
查:select
max函数:
功能:统计字段中最大的数
参数:字段名称
得到:字段中最大值
mysql> select max(stu_age) from stu_info;
±-------------+
| max(stu_age) |
±-------------+
| 24 |
±-------------+
sum函数:
功能:统计字段中数据的和
mysql> select sum(stu_age) from stu_info;
±-------------+
| sum(stu_age) |
±-------------+
| 69 |
±-------------+
存储过程:(函数概念:语句集合)
mysql语句结束标识是";"
mysql> delimiter && mysql语句结束标识变为"&&"
创建存储过程(创建一个函数)
create procedure 名称(in表示输入参数 参数名字 类型)
mysql> create procedure set_age3(in id int, in age int)
-> begin 函数开始标志
-> update stu_info set stu_age=age where stu_id=id; 语句
-> end 函数结束标识
-> && 结束了
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ; mysql语句结束标识变为";"
mysql> select * from stu_info;
±-------±---------±--------+
| stu_id | stu_name | stu_age |
±-------±---------±--------+
| 1 | zhangyi | 22 |
| 2 | lier | 23 |
| 3 | zhangsan | 24 |
| 10 | kdkdk | NULL |
±-------±---------±--------+
call 调用(执行)
mysql> call set_age3(1, 73);
mysql> select * from stu_info;
±-------±---------±--------+
| stu_id | stu_name | stu_age |
±-------±---------±--------+
| 1 | zhangyi | 73 |
| 2 | lier | 23 |
| 3 | zhangsan | 24 |
| 10 | kdkdk | NULL |
±-------±---------±--------+
mysql> delimiter && 设置结束标识为&&
创建函数
mysql> create procedure add_students(in num int)
-> begin
定义整形变量i,declare表示定义变量了 i是变量名称 int变量类型
-> declare i int;
-> set i=1; 设置变量的值为1
-> while i<num do 判断变量i的值是否小于变量num的值
-> insert into stu_list(id, score) values(60+i, 60+i);
-> set i=i+1;
-> end while;
-> end
-> &&
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
总结:
- 环境变量:
Path环境变量:值是一些路径,每个路径以";"分割,当执行命令的时候,
作用:在Path环境变量的值的每个路径只能中查找命令
mysql -u root -p
- 表操作:
增:insert into 表名(字段1,字段2) values(值1,值2),(值1,值2);
删:delete from 表名; 删除表中所有数据
delete from 表名 where 条件;
改:update 表名 set 字段1=值,字段2=值; 将表中所有字段1和字段2的值修改
update 表名 set 字段1=值,字段2=值 where 条件;
查:select 字段1,字段2 from 表名;
select * from 表名; 显示表中所有字段的值
select 字段1,字段2 from 表名 where 条件;
条件:
=表示是否相等
< >= <=
条件1 and 条件2:条件1和条件2同时满足
条件1 or 条件2 :条件1或条件2有一个满足