1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间有什么关系?
学习源https://www.bilibili.com/video/BV1Vy4y1z7EX?p=25
链接:https://pan.baidu.com/s/1yB9DwzykigPvPYJ6wOMVBg
提取码:1234
复制这段内容后打开百度网盘手机App,操作更方便哦
1、数据库:Database,简称DB,按照一定格式存储数据的一些文件的组合。
顾名思义:存储文件的仓库,实际上就是一堆文件,这些文件中存储了具有特定格式的数据。
2、数据库管理系统:DataBaseMangement,简称DBMS。
数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以对数据库当中的数据进行增删改查。
常见的数据库管理系统:
MySQL、Oracle、MS、SqlServer、DB2、sybase等。。。
3、SQL:结构化查询语言
程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库的增删改查操作。
SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在MySQL中可以使用,同时在Oracle、DB2中也可以使用。
4、三者之间的关系:
DBMS——执行——> SQL ——操作——> DB
先安装数据库管理系统MySQL,然后学习SQL语句怎么写,编写SQL语句之后,DBMS对SQL语句进行执行,最终来完成数据库的数据管理。
2、安装MySQL(for Windows)
端口号:端口号port是任何一个软件/应用都会有的,端口号是应用的惟一代表,端口号通常和IP地址在一块,IP地址用来定位计算机的,端口号port是用来定位计算机上的某个服务/应用的
在同一台计算机导航端口号不能重复,具有唯一性
MySQL数据库启动的时候,这个服务用的默认端口号是3306
字符编码方式:这是MySQL数据库的字符编码格式为utf8
超级管理员的用户名一定是root,不能修改,此处只修改密码;远程登录如果不选,则数据库只能在本机登录,选择上表示可以远程登陆
3、MySQL数据库完美卸载
第一步,双击安装包卸载删除
第二部、删除目录
4、看一下计算机上的服务,找一找MySQL的服务在哪里
计算机——>右键——>管理——>服务和应用程序——>服务——>MySQL服务
MySQL的服务,默认是自动启动,自动启动表示下一次重启操作系统的时候自动启动该服务
可以在服务上右键——>属性,然后可以选择启动方式
5、在Windows操作系统中,怎么用命令启动MySQL服务
语法:net start 服务名称
net stop 服务名称
管理员身份运行cmd
注:其他服务的启停都可以使用上面的命令
6、MySQL安装启动了,怎么登录MySQL数据库呢?
7、MySQL常用命令
退出:exit
注意:命令输入结束后要以 “;” 结尾,不区分大小写
查看MySQL中有哪些数据库——show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
MySQL默认自带了4个数据库,怎么选择使用某个数据库呢——use 数据库名;
mysql> use test;
Database changed
mysql>
表示正在使用名为test的数据库
怎么创建数据库呢——create database 数据库名;
mysql> create database lianxi;
Query OK, 1 row affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| lianxi |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
查看数据库下面有哪些表——show tables;
mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
。。。。。。。。
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
24 rows in set (0.00 sec)
查看MySQL数据库的版本号——select version();
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.28 |
+-----------+
1 row in set (0.00 sec)
查看当前使用的是哪个数据库——select database();
mysql> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
注意:MySQL是不见“;”不执行,“;”表示结束。可以使用\c结束
mysql> show
->
->
-> \c
mysql>
8、数据库中最基本的单元是表:table
什么是表,为什么用表存储数据呢?
数据库当中是以表格的形式存储数据的,因为比较直观
任何一张表都有行和列
姓名 | 性别 | 年龄 | 列:字段 |
---|---|---|---|
张三 | 男 | 20 | 行——记录 |
李四 | 女 | 22 | 行——记录 |
王五 | 男 | 20 | 行——记录 |
行(row):被称为数据/记录
列(column):被称为字段
每个字段都有字段名、数据类型、约束等属性;字段名可以是一个普通的名字,见明知意就行
约束:其中有个约束叫做唯一性约束,这种约束添加之后,该字段中的数据不能重复。
9、关于SQL语句的分类
DQL:数据查询语言(凡是带有select关键字的都是查询语句)
select。。。
DML:数据操作语言(凡是对表当中的数据进行增删改的都是DML)
主要是操作表中的数据
insert——增 delete——删 updates——改
DDL:数据定义语言(凡是带有create、drop、alter的都是DDL)
create——创建、drop——删除、alter——修改
主要操作的是表的结构,而不是表中的数据
TCL:是事务控制语言,包括:事务提交:commit;事务回滚:rollback
DCL:是数据控制语言,例如:授权grant、撤销权限revoke。。。。。
10、导入表格
使用source命令,将Windows中的表格拖到数据库中,路径中不能有中
mysql> use lianxi
Database changed
mysql> source F:\lianxi.sql
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
11、关于导入的几张表
mysql> show tables;
+------------------+
| Tables_in_lianxi |
+------------------+
| dept |部门表
| emp |员工表
| salgrade |工资表
+------------------+
3 rows in set (0.00 sec)
怎么查看表中的数据呢?
select * from 表名;——查看某个表的所有内容
mysql> select * from dept;
+--------+------------+----------+
| DEPTNO | DNAME | LOC |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | SALES | CHICAGO |
| 40 | OPERATIONS | BOSTON |
+--------+------------+----------+
4 rows in set (0.00 sec)
12、不看表的数据,只看表的结构——desc(describe) 表名;
mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| EMPNO | int(4) | NO | PRI | NULL | |
| ENAME | varchar(10) | YES | | NULL | |
| JOB | varchar(9) | YES | | NULL | |
| MGR | int(4) | YES | | NULL | |
| HIREDATE | date | YES | | NULL | |
| SAL | double(7,2) | YES | | NULL | |
| COMM | double(7,2) | YES | | NULL | |
| DEPTNO | int(2) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)
13、DQL简单查询
13.1、查询一个字段
select 字段名 from 表名;
注意:select和from都是关键字,字段名和表名都是关键字
对于 SQL语句来说是通用的,所有的SQL语句以“;”结尾,另外SQL语句不区分大小写,都行。
查询部门名字
mysql> select dname from dept;
+------------+
| dname |
+------------+
| ACCOUNTING |
| RESEARCH |
| SALES |
| OPERATIONS |
+------------+
4 rows in set (0.00 sec)
13.2、查询两个字段或多个字段,用逗号隔开
查询部门编号和部门名
select deptno,dname from dept;
mysql> select deptno,dname from dept;
+--------+------------+
| deptno | dname |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
13.3、查询所有字段
1、把所有字段名都写上
2、使用* 这种方式的缺点:效率低,可读性差
13.4、给查询的列起别名
select deptno,dname as deptname from dept; 使用as关键字起别名,注意只是将显示结果的列名进行修改,原表内容不变。
select deptno,dname deptname from dept; 去掉as使用空格也可以
mysql> select deptno,dname as deptname from dept;
+--------+------------+
| deptno | deptname |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
mysql> select deptno,dname deptname from dept;
+--------+------------+
| deptno | deptname |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
起别名的时候,别名里有空格需要使用‘单引号’括起来
注意:在所有数据库中,字符串统一使用‘单引号 ’括起来,单引号是标准。
mysql> select deptno,dname 'dept name' from dept;
+--------+------------+
| deptno | dept name |
+--------+------------+
| 10 | ACCOUNTING |
| 20 | RESEARCH |
| 30 | SALES |
| 40 | OPERATIONS |
+--------+------------+
4 rows in set (0.00 sec)
13.5、计算员工年薪 ——sal*12
mysql> select ename,sal from emp;
+--------+---------+
| ename | sal |
+--------+---------+
| SMITH | 800.00 |
| ALLEN | 1600.00 |
| WARD | 1250.00 |
| JONES | 2975.00 |
| MARTIN | 1250.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING | 5000.00 |
| TURNER | 1500.00 |
| ADAMS | 1100.00 |
| JAMES | 950.00 |
| FORD | 3000.00 |
| MILLER | 1300.00 |
+--------+---------+
14 rows in set (0.00 sec)
mysql> select ename,sal*12 from emp;//结论:字段可以使用数学表达式
+--------+----------+
| ename | sal*12 |
+--------+----------+
| SMITH | 9600.00 |
| ALLEN | 19200.00 |
| WARD | 15000.00 |
| JONES | 35700.00 |
| MARTIN | 15000.00 |
| BLAKE | 34200.00 |
| CLARK | 29400.00 |
| SCOTT | 36000.00 |
| KING | 60000.00 |
| TURNER | 18000.00 |
| ADAMS | 13200.00 |
| JAMES | 11400.00 |
| FORD | 36000.00 |
| MILLER | 15600.00 |
+--------+----------+
14 rows in set (0.00 sec)
mysql> select ename,sal*12 as '年薪' from emp;//别名是中文用单引号括起来
+--------+----------+
| ename | 年薪 |
+--------+----------+
| SMITH | 9600.00 |
| ALLEN | 19200.00 |
| WARD | 15000.00 |
| JONES | 35700.00 |
| MARTIN | 15000.00 |
| BLAKE | 34200.00 |
| CLARK | 29400.00 |
| SCOTT | 36000.00 |
| KING | 60000.00 |
| TURNER | 18000.00 |
| ADAMS | 13200.00 |
| JAMES | 11400.00 |
| FORD | 36000.00 |
| MILLER | 15600.00 |
+--------+----------+
14 rows in set (0.00 sec)
mysql>
14、条件查询
14.1、什么是条件查询?
不是将表中所有数据都查出来,是查询出来符合条件的
语法格式:select 字段1,字段2,。。。from 表名 where 条件;
14.2、都有哪些条件
= 等于
//查询工资等于800的员工工号和姓名
mysql> select empno,ename from emp where sal = 800;
+-------+-------+
| empno | ename |
+-------+-------+
| 7369 | SMITH |
+-------+-------+
1 row in set (0.00 sec)
//"="可以接字符串,用单引号括起来
mysql> select empno,ename from emp where ename = 'SMITH';
+-------+-------+
| empno | ename |
+-------+-------+
| 7369 | SMITH |
+-------+-------+
1 row in set (0.00 sec)
<>或!= 不等于
//查询工资不等于800的员工工号和姓名
mysql> select empno,ename from emp where sal <> 800;
mysql> select empno,ename from emp where sal != 800;
+-------+--------+
| empno | ename |
+-------+--------+
| 7499 | ALLEN |
| 7521 | WARD |
| 7566 | JONES |
| 7654 | MARTIN |
| 7698 | BLAKE |
| 7782 | CLARK |
| 7788 | SCOTT |
| 7839 | KING |
| 7844 | TURNER |
| 7876 | ADAMS |
| 7900 | JAMES |
| 7902 | FORD |
| 7934 | MILLER |
+-------+--------+
13 rows in set (0.00 sec)
< 小于
查询薪资小于2000的员工姓名编号
mysql> select empno,ename,sal from emp where sal < 2000;
+-------+--------+---------+
| empno | ename | sal |
+-------+--------+---------+
| 7369 | SMITH | 800.00 |
| 7499 | ALLEN | 1600.00 |
| 7521 | WARD | 1250.00 |
| 7654 | MARTIN | 1250.00 |
| 7844 | TURNER | 1500.00 |
| 7876 | ADAMS | 1100.00 |
| 7900 | JAMES | 950.00 |
| 7934 | MILLER | 1300.00 |
+-------+--------+---------+
8 rows in set (0.00 sec)
<= 小于等于
//查询薪资小于等于3000的员工姓名编号
mysql> select empno,ename,sal from emp where sal <= 3000;
+-------+--------+---------+
| empno | ename | sal |
+-------+--------+---------+
| 7369 | SMITH | 800.00 |
| 7499 | ALLEN | 1600.00 |
| 7521 | WARD | 1250.00 |
| 7566 | JONES | 2975.00 |
| 7654 | MARTIN | 1250.00 |
| 7698 | BLAKE | 2850.00 |
| 7782 | CLARK | 2450.00 |
| 7788 | SCOTT | 3000.00 |
| 7844 | TURNER | 1500.00 |
| 7876 | ADAMS | 1100.00 |
| 7900 | JAMES | 950.00 |
| 7902 | FORD | 3000.00 |
| 7934 | MILLER | 1300.00 |
+-------+--------+---------+
13 rows in set (0.00 sec)
'>'大于
//查询薪资大于3000的员工姓名编号
mysql> select empno,ename,sal from emp where sal > 3000;
+-------+-------+---------+
| empno | ename | sal |
+-------+-------+---------+
| 7839 | KING | 5000.00 |
+-------+-------+---------+
1 row in set (0.00 sec)
‘>=’ 大于等于
//查询薪资大于等于3000的员工姓名编号
mysql> select empno,ename,sal from emp where sal >= 3000;
+-------+-------+---------+
| empno | ename | sal |
+-------+-------+---------+
| 7788 | SCOTT | 3000.00 |
| 7839 | KING | 5000.00 |
| 7902 | FORD | 3000.00 |
+-------+-------+---------+
3 rows in set (0.00 sec)
between … and …. 两个值之间, 等同于 >= and <=
//查询薪资在2450和3000之间的员工姓名编号,包括2450和3000
mysql> select empno,ename,sal from emp where sal >= 2450 and sal <=3000;//and表示并且
+-------+-------+---------+
| empno | ename | sal |
+-------+-------+---------+
| 7566 | JONES | 2975.00 |
| 7698 | BLAKE | 2850.00 |
| 7782 | CLARK | 2450.00 |
| 7788 | SCOTT | 3000.00 |
| 7902 | FORD | 3000.00 |
+-------+-------+---------+
5 rows in set (0.00 sec)
mysql> select empno,ename,sal from emp where sal between 2540 and 3000;
+-------+-------+---------+
| empno | ename | sal |
+-------+-------+---------+
| 7566 | JONES | 2975.00 |
| 7698 | BLAKE | 2850.00 |
| 7788 | SCOTT | 3000.00 |
| 7902 | FORD | 3000.00 |
+-------+-------+---------+
4 rows in set (0.00 sec)
//注意:使用between and 的时候,必须遵循左小右大的原则,是闭区间,包括两端的值
is null 为 null(is not null 不为空)
查询那些员工的津贴为null
mysql> select empno,ename,sal,comm from emp where comm is null;
+-------+--------+---------+------+
| empno | ename | sal | comm |
+-------+--------+---------+------+
| 7369 | SMITH | 800.00 | NULL |
| 7566 | JONES | 2975.00 | NULL |
| 7698 | BLAKE | 2850.00 | NULL |
| 7782 | CLARK | 2450.00 | NULL |
| 7788 | SCOTT | 3000.00 | NULL |
| 7839 | KING | 5000.00 | NULL |
| 7876 | ADAMS | 1100.00 | NULL |
| 7900 | JAMES | 950.00 | NULL |
| 7902 | FORD | 3000.00 | NULL |
| 7934 | MILLER | 1300.00 | NULL |
+-------+--------+---------+------+
10 rows in set (0.00 sec)
//注意:在数据库中null不能使用=进行衡量,需要使用is null,因为数据库中的null表示什么也没有,它不是一个值,所以不能使用=衡量
查询那些员工的津贴不为null
mysql> select empno,ename,sal,comm from emp where comm is not null;
+-------+--------+---------+---------+
| empno | ename | sal | comm |
+-------+--------+---------+---------+
| 7499 | ALLEN | 1600.00 | 300.00 |
| 7521 | WARD | 1250.00 | 500.00 |
| 7654 | MARTIN | 1250.00 | 1400.00 |
| 7844 | TURNER | 1500.00 | 0.00 |
+-------+--------+---------+---------+
4 rows in set (0.00 sec)
and 并且
查询工作岗位是manager并且工资大于2500的员工信息
mysql> select empno,ename,sal,job,comm from emp where job = 'MANAGER' and sal > 2500;
+-------+-------+---------+---------+------+
| empno | ename | sal | job | comm |
+-------+-------+---------+---------+------+
| 7566 | JONES | 2975.00 | MANAGER | NULL |
| 7698 | BLAKE | 2850.00 | MANAGER | NULL |
+-------+-------+---------+---------+------+
2 rows in set (0.00 sec)
or 或者
查询工作岗位是manager或salesman的员工
mysql> select empno,ename,sal,job,comm from emp where job = 'MANAGER' or job = 'salesman';
+-------+--------+---------+----------+---------+
| empno | ename | sal | job | comm |
+-------+--------+---------+----------+---------+
| 7499 | ALLEN | 1600.00 | SALESMAN | 300.00 |
| 7521 | WARD | 1250.00 | SALESMAN | 500.00 |
| 7566 | JONES | 2975.00 | MANAGER | NULL |
| 7654 | MARTIN | 1250.00 | SALESMAN | 1400.00 |
| 7698 | BLAKE | 2850.00 | MANAGER | NULL |
| 7782 | CLARK | 2450.00 | MANAGER | NULL |
| 7844 | TURNER | 1500.00 | SALESMAN | 0.00 |
+-------+--------+---------+----------+---------+
7 rows in set (0.00 sec)
and和or同时出现的话,有优先级问题吗?
查询工资大于2500,并且部门编号为10或20部门的员工?
mysql> select *from emp where sal > 2500 and deptno = 10 or deptno = 20;
+-------+-------+-----------+------+------------+---------+------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+-------+-----------+------+------------+---------+------+--------+
| 7369 | SMITH | CLERK | 7902 | 1980-12-17 | 800.00 | NULL | 20 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
| 7876 | ADAMS | CLERK | 7788 | 1987-05-23 | 1100.00 | NULL | 20 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 |
+-------+-------+-----------+------+------------+---------+------+--------+
6 rows in set (0.00 sec)
//分析以上语句的问题?
and优先级比or高。
以上语句会先执行and,然后执行or。
以上这个语句表示什么含义?
找出工资大于2500并且部门编号为10的员工,或者20部门所有员工找出来。
mysql> select * from emp where sal > 2500 and (deptno = 10 or deptno = 20);
+-------+-------+-----------+------+------------+---------+------+--------+
| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
+-------+-------+-----------+------+------------+---------+------+--------+
| 7566 | JONES | MANAGER | 7839 | 1981-04-02 | 2975.00 | NULL | 20 |
| 7788 | SCOTT | ANALYST | 7566 | 1987-04-19 | 3000.00 | NULL | 20 |
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000.00 | NULL | 10 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-03 | 3000.00 | NULL | 20 |
+-------+-------+-----------+------+------------+---------+------+--------+
4 rows in set (0.00 sec)
//and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”,如果不确定优先级,就加小括号就行了。
in 包含,相当于多个 or (not in 不在这个范围中)
查询工作岗位是MANAGER和SALESMAN的员工?
mysql> select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
+-------+--------+----------+
| empno | ename | job |
+-------+--------+----------+
| 7499 | ALLEN | SALESMAN |
| 7521 | WARD | SALESMAN |
| 7566 | JONES | MANAGER |
| 7654 | MARTIN | SALESMAN |
| 7698 | BLAKE | MANAGER |
| 7782 | CLARK | MANAGER |
| 7844 | TURNER | SALESMAN |
+-------+--------+----------+
7 rows in set (0.00 sec)
mysql> select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');
+-------+--------+----------+
| empno | ename | job |
+-------+--------+----------+
| 7499 | ALLEN | SALESMAN |
| 7521 | WARD | SALESMAN |
| 7566 | JONES | MANAGER |
| 7654 | MARTIN | SALESMAN |
| 7698 | BLAKE | MANAGER |
| 7782 | CLARK | MANAGER |
| 7844 | TURNER | SALESMAN |
+-------+--------+----------+
7 rows in set (0.00 sec)
//注意:in不是一个区间。in后面跟的是具体的值。
mysql> select ename,sal from emp where sal = 800 or sal = 5000;
+-------+---------+
| ename | sal |
+-------+---------+
| SMITH | 800.00 |
| KING | 5000.00 |
+-------+---------+
2 rows in set (0.00 sec)
mysql> select ename,sal from emp where sal in(800, 5000);
+-------+---------+
| ename | sal |
+-------+---------+
| SMITH | 800.00 |
| KING | 5000.00 |
+-------+---------+
2 rows in set (0.00 sec)
//这个不是表示800到5000都找出来。表示800 和5000
// not in 表示不在这几个值当中的数据。
mysql> select ename,sal from emp where sal not in(800, 5000, 3000);
+--------+---------+
| ename | sal |
+--------+---------+
| ALLEN | 1600.00 |
| WARD | 1250.00 |
| JONES | 2975.00 |
| MARTIN | 1250.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| TURNER | 1500.00 |
| ADAMS | 1100.00 |
| JAMES | 950.00 |
| MILLER | 1300.00 |
+--------+---------+
10 rows in set (0.00 sec)
like
称为模糊查询,支持%或下划线匹配
%匹配任意多个字符
下划线:任意一个字符。
(%是一个特殊的符号,_ 也是一个特殊符号)
找出名字中含有O的?
mysql> select ename from emp where ename like '%O%';
+-------+
| ename |
+-------+
| JONES |
| SCOTT |
| FORD |
+-------+
3 rows in set (0.00 sec)
找出名字以T结尾的?
mysql> select ename from emp where ename like '%T';
+-------+
| ename |
+-------+
| SCOTT |
+-------+
1 row in set (0.00 sec)
找出名字以K开始的?
mysql> select ename from emp where ename like 'K%';
+-------+
| ename |
+-------+
| KING |
+-------+
1 row in set (0.00 sec)
找出第二个字每是A的?
mysql> select ename from emp where ename like '_A%';
+--------+
| ename |
+--------+
| WARD |
| MARTIN |
| JAMES |
+--------+
3 rows in set (0.00 sec)
找出第三个字母是R的?
mysql> select ename from emp where ename like '__R%';
+--------+
| ename |
+--------+
| WARD |
| MARTIN |
| TURNER |
| FORD |
+--------+
4 rows in set (0.00 sec)
注意:如果查找的内容中本来就含有下划线,需要使用“\”转义符,如:
mysql> select name from t_student where name like '%\_%';// \转义字符。
select ename from emp where ename like '%O%';
+-------+
| ename |
+-------+
| JONES |
| SCOTT |
| FORD |
+-------+
3 rows in set (0.00 sec)
找出名字以T结尾的?
mysql> select ename from emp where ename like '%T';
+-------+
| ename |
+-------+
| SCOTT |
+-------+
1 row in set (0.00 sec)
找出名字以K开始的?
mysql> select ename from emp where ename like 'K%';
+-------+
| ename |
+-------+
| KING |
+-------+
1 row in set (0.00 sec)
找出第二个字每是A的?
mysql> select ename from emp where ename like '_A%';
+--------+
| ename |
+--------+
| WARD |
| MARTIN |
| JAMES |
+--------+
3 rows in set (0.00 sec)
找出第三个字母是R的?
mysql> select ename from emp where ename like '__R%';
+--------+
| ename |
+--------+
| WARD |
| MARTIN |
| TURNER |
| FORD |
+--------+
4 rows in set (0.00 sec)
注意:如果查找的内容中本来就含有下划线,需要使用“\”转义符,如:
mysql> select name from t_student where name like '%\_%';// \转义字符。