海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020Javaweb教程之mysql使用

未分类
2020-10-12 13:49:29
1822677238@qq.com

手机扫码查看

2020Javaweb教程之mysql使用

2020Javaweb教程之mysql使用

mysql环境变量

MYSQL_HOME:C:\Program Files\MySQL\MySQL Server 5.7

​ PATH:%MYSQL_HOME%\bin;

启动mysql服务

打开cmd,输入net start mysql57.停止服务 net stop mysql57

验证是否安装成功或者登陆mysql:
-u root -p 回车输入密码即可

卸载MySQL

1.停止服务,使用net stop mysql 命令停止服务

2.在控制面板–>”程序和功能”中,找到“mysql程序”,点击卸载。

3.删除安装目录,一般默认在C:\Program Files\MySQL。

4.删除数据库文件存放目录,一般默认在C:\ProgramData\MySQL。

MySQL安装目录

bin文件夹:该文件夹下存放着可执行文件
include文件夹:该文件夹下存放着头文件
lib文件夹:该文件夹下存放着库文件
share文件夹:该文件夹下存放着字符集、语言等信息。

SQL语句分类
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据)。
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

MySQL的使用注意

sql语句以 ; 结尾。

MySQL注释:(1)#开头 (2)–空格 开头 (3)/* 多行注释 */
show databases;   #显示当前mysql中的数据库

创建数据库
CREATE DATABASE IF NOT EXISTS mydb2 character SET GBK;

查看当前数据库服务器中的所有数据库SQL> SHOW DATABASES;

查看前面创建的mydb2数据库的定义信息SQL> ShOW CREATE DATABASE mydb2;

字符集修改为utf8;
SQL> ALTER DATABASE mydb2 character SET utf8;

删库:DROP DATABASE IF EXISTS mydb3;

查看当前使用的数据库:Select database();

切换数据库:USE mydb2;

退出MySQL:quit;或exit;

常用数据类型

int:整型(4个字节)

double:浮点型(8个字节),近似值

例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99

decimal:精确数值数据,最大位数可以是65

例如decimal(5,2)能够存储具有五位数和两位小数的任何值,因此可以存储范围为

-999.99至999.99。

char:固定长度字符串类型; char(10) ‘aaa ‘ 固定10个字符,不足补空格, 长度0-255

缺点:浪费空间,优点:查询速度快

varchar:可变长度字符串类型; varchar(10) ‘aaa’ 最多存储10个字符

缺点:查询速度慢,优点:节省空间

text:大文本字符串类型;有字符编码,存储比较大的文本数据。

blob:Binary Large Object二进制大对象数据;可以存储图片、音频、视频

date:日期类型,格式为:yyyy-MM-dd;

time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值

datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

常用约束

主键约束:primary key (保证数据唯一性),不能重复,不能为null

唯一约束:unique [key],不能重复,可以为null

非空约束:not null

默认约束:default

外键约束:foreign key

自动增长:auto_increment

创建新表
CREATE TABLE IF NOT EXISTS users(
id INT AUTO_INCREMENT PRIMARY KEY,#id为自动增长,主键且不可为空
username VARCHAR(50) NOT NULL,#用户名字符串类型,长度50,不可为空
identity VARCHAR(18) UNIQUE NOT NULL,#身份证号字符串类型,长度18,唯一约束,不可为空
mobile VARCHAR(11) NOT NULL#手机号字符串类型,长度为11且不可为空
)CHARSET=utf8;

查看表:SELECT*FROM users

DROP TABLE语句用于删除现有表。
语法: DROP TABLE IF EXISTS users;

当前数据库中的所有表:SHOW TABLES;

查看表的字段信息:DESC student;

增加列名addr:ALTER TABLE users ADD addr VARCHAR(50) NOT NULL

修改addr长度为30:ALTER TABLE users MODIFY addr VARCHAR(30) NOT NULL

删除addr列名:ALTER TABLE users DROP addr

查看表的细节:SHOW CREATE TABLE users;

修改表的字符集为gbk:ALTER TABLE user CHARACTER SET gbk;

列名username修改为usernames:ALTER TABLE users CHANGE username usernames VARCHAR(50) NOT NULL

表的插入数据
语法: INSERT INTO 表名(列名1,列名2 …)VALUES(列值1,列值2…);
INSERT INTO users(usernames,identity,mobile)VALUES(‘admin’,’456456′,’138′);

插入注意事项
参数不要超出列定义的长度,日期和字符需要单引号括起来,列名与列值的类型、个数、顺序要一一对应。

修改数据
语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 … WHERE 列名=值
UPDATE users SET mobile=’1382′,usernames=’王二麻2′ WHERE id=2

删除数据
语法:DELETE FROM 表名WHERE 列名1=列值1;
DELETE FROM users WHERE id=2

删除表中所有数据:delete from users 或 TRUNCATE TABLE users

delete和truncate区别

DELETE 删除表中的数据,表结构还在;删除后的数据使用日志可以找回。

TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。

TRUNCATE 删除的数据不能找回。执行速度比DELETE快。

数据库工具:Navicat、sqlyog

查询
语法: SELECT 列名 FROM 表名 【WHERE –> GROUP BY–>HAVING–> ORDER BY–>LIMIT】

查询所有数据:select*from users

查询指定列:SELECT usernames FROM users

条件查询:SELECT mobile FROM users WHERE mobile=’138′

运算符

比较运算符

l =、!=、<>、<、<=、>、>=;

BETWEEN…AND;
查询年龄在20到40之间的学生记录
SELECT *FROM stu WHERE age BETWEEN 20 AND 40;

IN(set);
查询学号为S _ 1001 ,S _ 1002,S _ 1003的记录
SELECT * FROM stu WHERE sid IN (‘S_1001′,’S_1002′,’S_1003′);

IS NULL;

查询年龄为null的记录:SELECT * FROM stu WHERE age IS NULL;

关系运算符

AND; &&

查询年龄在20到40之间的学生记录

SELECT *FROM stu WHERE age>=20 AND age<=40;

OR; ||

查询学号为S_1001,或者姓名为liSi的记录

SELECT * FROM stu WHERE sid =’S_1001′ OR sname=’liSi’;

NOT; !
查询性别非男的学生记录
SELECT *FROM stu WHERE NOT gender=’male’;

算术运算符:+ – * / %

模糊查询

当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。

通配符:

_ 任意一个字符

%:任意0~n个字符

‘张%’ —》张三丰 张三 张无忌

‘李_’ —>李四 李逵 李刚

SELECT *FROM users WHERE usernames LIKE ‘_____’#匹配到admin
SELECT *FROM users WHERE usernames LIKE ‘%a%’#匹配到包含a的数据
SELECT *FROM users WHERE usernames LIKE ‘a%’#匹配到a开头的数据

字段控制查询

去除重复记录 DISTINCT 
SELECT DISTINCT mobile FROM users#去除手机号重复的数据

求和:SELECT*,money+salary FROM users#计算金钱和工资之和

合并查询:注意字符串的合并不能使用+ ,AS可以省略
语法:使用concat(args,args2,args3) AS 别名from 别名
SELECT CONCAT(usernames,’:’,mobile) size FROM users#姓名和手机号

排序:ASC升序,DESC降序

SELECT * FROM users ORDER BY age ASC#升序
SELECT*FROM users ORDER BY age DESC#降序

聚合函数

聚合函数是用来做纵向运算的函数:

COUNT():统计指定列不为NULL的记录行数;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

count
当需要纵向统计时可以使用COUNT()

查询users表中记录数

SELECT COUNT(*) AS ‘别名’ FROM users;#返回数据的数量

查询users表中金钱大于5000的人数
SELECT COUNT(*) FROM users WHERE money>5000

SUM和AVG

查询所有雇员月薪和:SELECT SUM(money) FROM users;

查询所有雇员月薪和,以及所有雇员佣金和:SELECT SUM(money), SUM(salary) FROM users

查询所有雇员月薪+佣金和:如果没有值,用 0 补
SELECT SUM(money+IFNULL(salary,0))FROM users;

统计所有员工平均工资:SELECT AVG(salary) FROM users;

MAX和MIN

查询最高工资和最低工资:SELECT MAX(money), MIN(money) FROM users;

分组查询

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部分来分组。

注:凡是和聚合函数同时出现的列名,则一定要写在group by 之后

查询每个人的金钱和每个部门的工资和

SELECT money, SUM(salary)FROM users GROUP BY money;

查询每个人的金钱以及人数

SELECT money,COUNT(*) FROM users GROUP BY money

查询每个人的工资以及每个人工资大于1500的人数:

SELECT salary,COUNT(*)FROM users WHERE salary>5000 GROUP BY salary

HAVING子句

查询工资总和大于9000的部门编号以及工资和:

SELECT salary,SUM(salary) FROM users GROUP BY salary HAVING SUM(salary)>6000

注:having与where的区别:

1.having是在分组后对数据进行过滤,where是在分组前对数据进行过滤

2.having后面可以使用分组函数(统计函数)

where后面不可以使用分组函数。

where是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而 having是对分组后数据的约束。

LIMIT限制

LIMIT用来限定查询结果的起始行,以及总行数。起始行从0开始
语法:SELECT*FROM 别名LIMIT 起始位置,查询几条数据

查询前3行记录,起始行从0开始:SELECT*FROM users LIMIT 0,3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注