<>MySQL 基础

<>MySQL 基础原理及常用语句

<>常见的关系型数据库

* IBM的DB2;
* 甲骨文的Oracle、MySQL;
* 微软的SQL和Access;
* Sybase的Sybase;
<>MySQL 常用存储引擎

* InnoDB存储引擎
* MyISAM存储引擎
* MEMORY存储引擎

<>数值类型

下面是数据类型的详解表;

<>复合类型

<>数据库用户管理

Ø 连接MySQL
​ mysql -h主机地址 -u用户名 -p用户密码
Ø 新增用户
GRANT SELECT on 数据库.* to 用户名@登录主机 identified by “密码”
Ø 修改用户密码
UPDATE mysql.user SET authentication_string = PASSWORD('123456'),
password_expired= 'N' WHERE User = 'shopdb' AND Host = 'localhost';
<>数据库操作

Ø查看数据库
SHOW databases;
Ø 创建数据库
CREATE DATABASE databaseName;
Ø 使用数据库
USE databaseName;
Ø 删除数据库​
DROP DATABASE databaseName;
<>表操作

Ø创建表
CREATE TABLE user( id int(10) unsigned not null auto_increment, name varchar(25
), sex varchar(5), age int(10), password varchar(25), primary key(id))engine=
Innodb;
Ø 查看表结构
DESC tableName
Ø复制表

​ 第一种方式:复制表结构、数据、主键、索引
#复制表结构、主键、索引,执行命令: CREATE TABLE new_table like old_table; #插入数据,执行命令: INSERT
into new_table SELECT * FROM old_table;
​ 第二种方式:复制表结构、数据,不能复制主键、索引
#复制表结构、数据,执行命令: CREATE TABLE new_table SELECT * FROM old_table;
#复制表结构,不复制数据,执行命令: CREATE TABLE new_table SELECT * FROM old_table WHERE 0;
Ø 临时表和内存表
#创建临时表,命令执行:(temporary 临时的) CREATE temporary TABLE tmp1(id int not null);
#创建内存表,命令执行: CREATE TABLE tmp2(id int not null) ENGINE=MEMORY;
<>数据操作

Ø 插入和查询

将一条数据插入到数据库里,可以使用命令:
INSERT INTO 表名(字段名,字段名) VALUES(值,值);
或者可以不指明表里的字段,但是值按字段的顺序插入,可以使用命令:
INSERT INTO 表名 VALUES(值,值);
查询数据,可以使用命令:
SELECT * FROM 表名;
或者查询指定字段,可以使用命令:
SELECT id FROM 表名;
使用WHERE条件语句来进行按条件查询,把某一列或者几列作为查询条件,可以使用命令:
SELECT * FROM 表名 WHERE id=10; SELECT * FROM 表名 WHERE id=10 and name=’小明’;
Ø 修改记录

在MySQL里修改使用关键字UPDATE,执行命令。
UPDATE 表名 SET 字段=值,字段=值 WHERE 条件 UPDATE user SET name=’小明’,sex=’男’ WHERE id = 4
;
Ø删除记录

在MySQL中删除数据可以使用DELETE关键字,执行命令:
DELETE FROM 表名 WHERE 条件 DELETE FROM user WHERE id=4;
Ø 对查询结果排序

在MySQL数据库中,使用ORDER BY进行排序,使用关键字ASC进行升序排序,使用关键字DESC进行降序排序,:

(1)ORDER BY column ASC:按某一字段进行升序排序,ASC可以省略不写;
SELECT * FROM user ORDER BY id ASC; #或者 SELECT * FROM user ORDER BY id;
(2)ORDER BY column DESC:按某一字段进行降序排序,DESC不可以省略不写;
SELECT * FROM user ORDER BY id DESC;
(3)ORDER BY column1,column2 DESC:按多个字段进行降序排序;
SELECT * FROM user ORDER BY sex,age DESC;
Ø对查询结果分组

GROUP BY对查询结果分组是将查询结果按照1个或多个字段进行分组,字段值相同的为一组,GROUP BY可以用于单个字段和多个字段。
SELECT * FROM user GROUP BY sex;
group_concat(字段名)可以作为一个输出字段来使用,表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合。
SELECT sex,group_concat(name) FROM user GROUP BY sex;
Ø设置分组条件

HAVING 是用来设置分组条件的条件表达式,用来分组查询后指定一些条件来输出查询结果,WHERE语句在聚合前先筛选记录,也就是说作用在GROUP
BY和HAVING字句前,而HAVING子句在聚合后对组记录进行筛选,HAVING只能用于GROUP BY。
SELECT sex,count(sex) FROM user WHERE age > 15 GROUP BY sex HAVING count(sex)>2
;
Ø限制查询数量

LIMIT是用于限制查询的数量,常用于分页语句,LIMIT 子句可以被用于强制SELECT语句返回指定的记录数。LIMIT
接受一个或两个数字参数,参数必须是一个整数常量。

(1)如果只给定一个参数,它表示返回最大的记录行数目;
SELECT * FROM user LIMIT 6; #检索前6行记录
(2)如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目,初始记录行的偏移量是
0(而不是 1);
SELECT * FROM user LIMIT 2,5; #从第2条数据开始,检索出5条数据
<>字段操作

Ø 设置主键
#创建表的时候,使用PRIMARY KEY添加主键: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(
index_col_name)); CREATE TABLE student( id int not null, name varchar(255) not
null, no int not null, primary key(id)) ENGINE=Innodb DEFAULT CHARSET=utf8;
Ø设置复合主键

复合主键就是由多个字段组成的组建,就像开启宝藏的钥匙,往往会分成两把或者更多,当同时插入两把钥匙,才能开启宝藏的大门,复合主键也是这样,通过多个字段作为复合主键来确定唯一标识。
CREATE TABLE person( id int not null, name varchar(255) not null, job varchar(
255) not null, primary key(id,name)) #置复合主键 ENGINE=InnoDB DEFAULT CHARSET=utf8;
Ø 添加字段
#添加一个手机号码(phone)新的字段到user表里,数据类型为字符串类型。 ALTER TABLE user add phone varchar(25)
not Null;
Ø改变字段类型
#可以修改表字段的数据类型,将手机号码(phone)字符串类型修改为整型(int); ALTER TABLE user modify phone int(25
) not Null;
Ø 字段重命名

对于已经存在的表结构,如果想对表里的字段重命名,需要使用alter table来修改表里的字段,格式如下所示。
ALTER TABLE <表名> change <字段名> <字段新名称> <字段的类型> ALTER TABLE user change phone
telephoneint(25);
<>基本查询语法

​ MySQL查询使用关键字SELECT来进行查询,SELECT语句基本语法格式:
SELECT 查询内容 FROM 表名 WHERE 表达式 GROUP BY 字段名 HAVING 表达式 ORDEY BY 字段名 LIMIT 记录数
Ø条件查询过滤

条件查询过滤关键字:**AND、OR、IN、NOT IN、IS NULL、IS NOT NULL、BETWEEN AND;**按关键字可以进行条件查询过滤。

​ (1)AND(与):用AND进行查询的时候,查询出来的数据要求条件都得满足;
SELECT * FROM user WHERE age = 20 and name=‘kevin’;
​ (2)OR(或):用OR进行查询的时候,查询出来的数据只要求满足任意一个条件就可以查询出来;
SELECT * FROM user WHERE age = 20 or name=‘kevin’;
​ (3)IN(在范围内):用IN进行查询的时候,查询出来的数据在这个范围内;
SELECT * FROM user WHERE id in (3,5,7);
(4)NOT IN(不在范围内):用NOT IN进行查询的时候,查询出来的数据不在这个范围内;
SELECT * FROM user WHERE id not in(3,5,7);
(5)IS(为空):用IS
NULL进行查询的时候,是用来查询某字段为空时用is
null,而不能使用"=null",因为mysql中的null不等于任何其他值,也不等于另外一个null,优化器会把"=null"的查询过滤掉而不返回任何数据;查询某字段为非空时使用is
not null。
SELECT * FROM user WHERE name is null;
(6)BETWEEN AND(在…区间):用BETWEEN AND进行查询的时候,查询出来的数据是在这个区间;
SELECT * FROM user WHERE age between 10 and 20;
Ø模糊查询过滤

​ 模糊查询过滤使用关键字LIKE进行查询;

(1)LIKE ’张%’:使用LIKE查询该字段以张开头的数据;
SELECT * FROM user WHERE name like ‘张%’;
(2)LIKE ’ %明’:使用LIKE查询该字段以明结尾的数据;
SELECT * FROM user WHERE name like ‘%明’
(3)LIKE ’ %明%’:使用LIKE查询该字段包含明的数据;
SELECT * FROM user WHERE name like ‘%明%’;
Ø字段控制查询过滤

​ 字段控制查询过滤可以使用DISTINCT去除重复过滤、AS设置别名。

​ (1)DISTINCT:去除重复的列值;
SELECT distinct age FROM user;
(2)AS:可以设置列的别名、也可以省略AS来设置关键字;
SELECT name as 姓名 FROM user; #或者 SELECT name 姓名 FROM user;
<>聚合函数(组函数)

Ø AVG()函数

MySQL数据库的AVG函数是用来计算某一列的平均值,比如可以用在平均分数、平均薪资、平均年龄等等场景的使用。
SELECT avg(age) FROM user;
ØCOUNT()函数
# MySQL数据库的COUNT()聚合函数是用来计算表中记录的个数或者列中值的个数,计算内容由SELECT语句指定,例如要获取user表中age > 20
的个数。 SELECT count(*) FROM user WHERE age >20;
Ø MAX()/MIN()函数

​ MySQL数据库的MAX()聚合函数选取的数据中最大值,MIN()聚合函数选取的数据中最小值,比如可以获取年龄的最大值或者最小值。
SELECT max(age) FROM user ; SELECT min(age) FROM user;
ØSUM()函数

​ MySQL数据库的SUM()聚合函数用来计算满足条件的某一列的总和,比如可以计算年龄的总和,或者可以计算男生年龄的总和,聚合函数都是可以进行设置别名的。
SELECT sum(age) FROM user ;

技术
©2019-2020 Toolsou All rights reserved,
在算法研究过程中如何进行算法创新七大排序算法(java代码)MYSQL中的索引与事务———javaweb(8)(面试必考)2022蓝桥杯JavaB组省赛试题网络安全-wifi攻防网络层协议——ICMP协议MySQL查询表中指定条件下的最新记录JavaSE笔记(一)Java基础语法mysql 查询条件之外的数据_mysql 查询符合条件的数据qt使用数据库sqlite