目录
创建数据库db_database09和数据表user
创建数据库
#创建数据库db_database09 字符集utf8mb4 校准规则utf8mb4_general_ci
CREATE DATABASE db_database09 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
创建数据表
#创建数据表user
CREATE TABLE USER(
id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
USER VARCHAR(30) NULL,
lxdh VARCHAR(30) NULL,
jtdz VARCHAR(30) NULL
);
DESCRIBE USER;(或者SHOW COLUMNS FROM USER;) #查询表结构
插入数据
#插入两条记录
INSERT INTO USER VALUES(1,'mr','12345678','长春市')
,(2,'mrsoft','87654321','四平市');
基本查询语句
使用select语句查询一个数据表
#查询整张表 *代表 所有的列
SELECT *FROM USER;
查询表中一列或者多列
#查询表中一列或者多列
SELECT id,lxdh FROM USER;
从一个或者多个表中获取数据
在使用select查询语句时,需要确定查询的数据在哪个表或者哪些表中,在进行多表查询时,需要使用到','进行分隔
#从一个或多个表中获取数据
SELECT
tb_admin.`id` ,tb_admin.`jtdz`,tb_students.`lxdh`,tb_students.`user`
FROM
tb_admin,tb_students;
单表查询
单表查询是指从一张表中查询所需要的数据,相对来说操作比较简单
查询所有字段
查询所有字段是指查询所有字段的数据 在MySQL中可以使用 * 代表所有列,语法格式如下:
select * from 表名;
查询指定字段
查询指定字段,语法格式如下:
select 字段名 from 表名;
如果要查询多个字段,用','进行分隔
查询指定数据
#创建数据表tb_login
CREATE TABLE tb_login(
id INT PRIMARY KEY AUTO_INCREMENT,
USER VARCHAR(30),
pwd VARCHAR(30),
section VARCHAR(30),
NAME VARCHAR(30)
);
#查询数据表tb_login表结构
DESC tb_login;
#数据表tb_login插入数据
INSERT INTO tb_login(USER,pwd,section,NAME) VALUES
('mz','rwds','c++','高德')
,('fg','sdfas','php','优酷')
,('dsa','rwsadds','c','赶集')
,('fsa','rwdds','java','京东')
,('dsaz','dasd','javascript','阿里巴巴')
,('gfsd','sdaq','python','腾讯')
,('zdas','dasdf','json','明日科技')
,('dadz','sadq','office','网易云')
,('trey','dsagd','c#','百度')
,('dsags','rwsadds','c','阿里巴巴')
,('gfd','dasgf','java','明日科技')
,('zdsa','ytru','javascript','阿里巴巴')
,('gfdgdf','fhgfd','python','京东')
,('hgfhtyr','azxfd','json','明日科技')
,('uytrr','ewqet','office','阿里巴巴');
带关键字where的查询
如果要从很多记录中查询到指定的数据,就需要用到where关键字,在使用where 子句时需要用到比较运算符来查询指定的数据,常用的比较运算符如下表所示:
运算符 | 名称 | 示例 | 运算符 | 名称 | 示例 |
= | 等于 | id=5 | is not null | n/a | id is not null |
> | 大于 | id>5 | between and | n/a | id is between and 15 |
< | 小于 | id<5 | in | n/a | id in(3,4,5) |
>= | 大于等于 | id>=5 | not in | n/a | name not in(shi,li) |
<= | 小于等于 | id<=5 | like | 匹配模式 | name like('shi%') |
!=或<> | 不等于 | id!=5 | not like | 匹配模式 | name not like('shi%') |
is null | n/a | id is null | regexp | 常规表达式 | name 正则表达式 |
#查询表中user='zdsa'的记录
SELECT *FROM tb_login WHERE USER='zdsa' ;
带关键字in的查询
带关键字in可以判断某个字段的值是否在指定的集合中.如果字段的值在集合中,满足查询条件,该记录会被查询出来;如果不在集合中,则不满足查询条件,语法格式如下:
select * from 表名 where [not] in(元素1,元素2,......,元素n);
[not]:可选项,如果加上not表示不在集合内满足条件
元素:表示集合中的元素,各个元素之间用逗号隔开,字符型元素需要加上单引号
#带关键字in的查询
SELECT *FROM tb_login WHERE USER IN ('hgfhtyr','gfd','dsaf');
#带关键字not in的查询
SELECT *FROM tb_login WHERE USER not IN ('hgfhtyr','gfd','dsaf');
带关键字between and的查询
判断某个字段的值是否在指定范围内,如果在则满足条件,该记录会被查询出来,不在则不满足条件,语法格式如下:
select * from 表名 where 条件 [not] between 取值1 and 取值2
取值1:表示范围的起始值
取值2:表示范围的终止值
#带关键字between and的查询 取值在5~7之间
SELECT *FROM tb_login WHERE id BETWEEN 5 AND 7;
#带关键字between and的查询 取值不在5~7之间
SELECT *FROM tb_login WHERE id not BETWEEN 5 AND 7;
带关键字like的查询
like属于比较常见的比较运算符,通过like实现模糊查询,它有两种通配符: '%' 和 '_'
'%':匹配一个或多个字符,可以是0
'_':只匹配一字符
※注意
字符串“p”和“入”都算作一个字符,在这点上英文字母和中文是没有区别的。
#带关键字like的查询
SELECT * FROM tb_login WHERE USER LIKE '%sa%';
带关键字is null的查询
判断字段是否是空值,如果字段是空值则满足查询条件,则该记录会被查询出来,反之则不能被查询出来,语法格式如下:
is [not] null
#带关键字is null的查询
SELECT *FROM tb_login WHERE NAME IS NULL;
带关键字and的多条件查询
关键字and可以联合多个查询条件.使用and 关键字时,只有满足所有查询条件的记录才会被查询出来,只要不满足其中任何一条查询条件,就会被排除在外,语法格式如下:
select * from 数据表名 where 条件1 and 条件2 [……AND 条件表达式n];
#带关键字and 的多条件查询
SELECT *FROM tb_login WHERE USER='fsa' AND section='java';
带关键字or的多条件查询
关键字and可以联合多个查询条件.关键字OR只要满足查询条件中的一个,那么此记录就会被查询出来,如果所有条件都不满足就会被排除在外,语法格式如下:
select * from 数据表名 where 条件1 OR 条件2 [……OR 条件表达式n];
#带关键字or 的多条件查询
SELECT *FROM tb_login WHERE USER='fsa' OR section='c++';
带关键字distinct去除结果中的重复行
使用关键字DISTINCT可以去除查询结果中的重复记录,语法格式如下:
select distinct 字段名 from 表名;
#带关键字distinct去除结果中的重复行
SELECT DISTINCT NAME FROM tb_login;
用关键字ORDER BY对查询结果排序
排序包括升序(asc) 和逆序(desc),语法格式如下:
ORDER BY 字段名 [ASC|DESC];
ASC : 表示按升序进行排序。
DESC:表示按降序进行排序。
#用关键字ORDER BY对查询结果排序 逆序
SELECT *FROM tb_login ORDER BY id DESC;
#用关键字ORDER BY对查询结果排序 升序
SELECT *FROM tb_login ORDER BY id ASC;
用关键字LIMIT限制查询结果的数量
关键字LIMIT可以对查询结果的记录条数进行限定,控制它输出的行数,语法格式如下:
select * from 数据表名 limit [i,]n;
[i,]:表示从第几行记录开始,在查询结果中,第一个结果的记录编号是0,而不是1
n:表示限制记录 的条数
#限制输出前三行
SELECT *FROM tb_login ORDER BY id DESC LIMIT 4;
#限制第2个开始的四条数据
SELECT *FROM tb_login ORDER BY id ASC LIMIT 1,4;