一.##数据库相关概念:
1,DB:数据库,保存一组有组织的数据的容器。
2,DBMS:数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据。
3,SQL:结构化查询语言,用于和DBMS通信的语言。
二.##数据库存储数据的特点:
1,将数据放到表中,表再放到库中。
2,一个数据库中可以有多个表,每个表都有一个名字,用来标识自己,表名具有唯一性。
3,表具有一些特性,这些特性定义了数据在表中如何存储,类似java中“类”的设计。
4,表由列组成,我们也称为字段,所有表都是由一个或多个列组成的,每一列类似java中的“属性”。
5,表中的数据是按行存储的,每一行类似于java中的“对象”
三.##MySQL的服务的启动和停止:
方式一:计算机—-右键管理—-服务。
方式二:通过管理员身份运行黑窗口。
net start 服务名(启动服务)
net stop 服务名(停止服务)
四.##MySQL服务的登录和退出:
方式一:通过mysql自带的客户端
只限于root用户
方式二:通过windows自带的客户端
登录语句式:
mysql -h 主机名 -P 端口号 -u用户名 -p密码
退出:
exit或ctri+C
五.##MySQL的常见命令:
1,查看当前所有的数据库
show databases;
2,打开指定的库
use 库名
3,查看当前库的所有表
show tables;
4,查看其他库的所有表
show tables from 库名;
5,创建表
create table 表名(
列名 列类型,
列名 列类型,
…….
)
6,查看表结构
desc 表名;
7,查看服务器的版本
方式一:登录到mysql服务端
select version();
方式二:没有登录到mysql服务端
mysql —version
或
mysql —v
8,显示表的结构
desc 表名
六.##mysql的语法规范
1,不区分大小写,但建议关键字大写,表名,列名小写
2,每条命令最好用分号结尾
3,每条命令根据需要,可以进行缩进 或 换行
4,注释(是让人看的)
单行注释:#注释文字
单行注释:— 注释文字
多行注释:/ 注释文字 /
七.##MySQL图像化用户界面(软件使用,命令)
1,保存
ctrl+s(快捷键)
2,执行
F9(快捷键)
3,格式化
F12 (快捷键)
八.##DQL语言 (查询语句)
1,基础查询 (表明字段加着重号`)
语法:select 查询列表 from 表名;
特点:1.查询列表可以是:表中的字段,常量值,表达式,函数
2.查询的结果是一个虚拟的表格
##开始时开头添加:use employees #(打开库)
例句:1.查询表中的单个字段
select lastname from employees;
2.查询表中的多个字段 (查询的字段用英文逗号隔开)
select last_name,salary,email from employees;
3.查询表中的所有字段 (也可双击图形界面左侧的字段名进项添加字段,代表所有字段)
select from employees;
4.查询常量值
select 100; select ‘john’;
5.查询表达式
select 10098; select 100%98; #(% 取余数)
6.查询函数
select version();
7.起别名(1.便于理解。2.如果要查询的字段有重名的情况,使用别名可以区分开来)
select 100%98 as 结果; #(使用as)
select last_name as 姓,first_name as 名 from employees; #(使用空格)
(案例):查询salary,结果显示为 out put (别名有特殊字段,字符时加英文单引号或双引号)
select salary as “out put” from employees;
8.去重 (在字段名前添加关键字 distinct )
语法:select distinct 字段名 from 表名;
(案例):查询员工表中涉及到的所有的部门编号
select distinct department_id from employees;
9. + (加号的作用)##mysql中的加号仅仅只有一个功能:运算符
select 100+90; #(两个操作数都为数值型,则做加法运算)
select ‘123’+90; #(其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算)
select ‘john’+90; #(如果转换失败,则将字符型数值转换为0)
select null+10; #(只要其中一方为null,则结果肯定为null)
10.拼接函数 concat
语法 celect concat(‘a’,’b’,’c’) as 结果;
(案例):查询员工名和姓连接成一个字段,并显示为 姓名
select concat(last_name,first_name) as 姓名 from employees;
11.(为空)数值有部分不为null,结果为null,用判断是否为空函数ifnull
语法:select ifnull(字段名,返回值) as 别名,字段名 from 表名;
select ifnull(commission_pct,0) as 奖金率,commission_pct from employees;
(案例):显示出表employees的全部列,各个列之间用逗号连接,列头显示成out_put
select concat(‘first_name’,’,’,’job_id’,’,’,ifnull(commission_pct,0)) as out_put from employees;
2,条件查询 (where 筛选条件)
语法:select 查询列表 from 表名 where 筛选条件;
分类:1,按条件表达式筛选( <> 不等于符号 )
条件运算符:> , < , = , != ,<> , >= , <=
2,按逻辑表达式筛选
逻辑运算符:&&(与), ||(或), !(非)
标准逻辑运算符:and , or , not
(&&和and:两个条件都为true,结果为true,反之为false)
(||或or:只要有一个条件为true,结果为true,反之为false)
(!或not:如果连接的条件本身为false,结果为true,反之为false)
3,模糊查询:like , between and ,in ,is null
例句:1,按条件表达式筛选 (运算符:> , < , = , != , <> , >= , <=)
(案例):查询工资>12000的员工信息
select from employees where salary>12000;
(案例):查询部门编号不等于90号的员工名和部门编号
select last_name,department_id from employees where department_id<>90;
2,按逻辑表达式筛选 (运算符:and , or , not)
(案例):查询工资在10000到20000之间的员工名,工资以及奖金
select last_name,salary,commission_pct from employees where salary>=10000 and salary=<20000;
(案例):查询部门编号不是在90到110之间,或者工资高于15000的员工信息 (not 使用:not(条件))
select from employees where department_id<90 or department_id>110 or salary>15000;
select from employees where not(department_id>=90 and department_id<=110) or salary>15000;
3,模糊查询 (运算符:like , between and , in , is null)
!! like !! (像)
特点:1.一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符
任意单个字符
(案例):查询员工名中包含字符a的员工信息 (%代表通配符,代表的是任意个字符)
select from employees where lastname like ‘%a%’;
(案例):查询员工名中第三个字符为e,第五个字符为a的员工名和工资
select last_name,salary from employees where last_name like ‘__e_a%’;
(案例):查询员工名中第二个字符为的员工名(\转义 字符或 escape ‘任意字符’)
select lastname from employees where last_name like’_%’;
select lastname from employees where last_name like’&_%’ escape ‘&’;
!! between and !! (在什么什么之间)
特点:1.使用between and 可以提高语句简洁度
2.包含临界值
3.两个临界值不要调换
(案例):查询员工编号在100到120之间的员工信息
select from employees where employeesid between 100 and 120;
!! in !!
含义:判断某字段的值是否属于in列表中的某一项
特点:1.使用 in 提高语句简洁度
2.in 列表的值类型必须要一致或兼容
3.in列表的值不能是通配符
(案例):查询员工的工种编号是 IT_PROG,AD_VP,AD_PRES中的一个员工名和工种编号
select last_name,job_id from employees where job_id in(‘IT_PROG’,’AD_VP’,’AD_PRES’);
!! is null !!
特点:1.=或<>不能用于判断null值,is null或is not null 可以判断null值
(案例):查询没有奖金的员工名和奖金率
select last_name,commission_pct from employees where commission_pct is null;
(案例):查询有奖金的员工名和奖金率 ( is 后面加 not )
select last_name,commission_pct from employees where commission_pct is not null;
3,排序查询 (order by , asc | desc )
语法: select 查询列表 from 表 《可加where 筛选条件》 order by 排序列表 asc 或 desc
特点:1.asc代表的是升序,desc代表的是降序,如果不写,默认是升序
2.order by子句中可以支持单个字段,多个字段,表达式,函数,别名
3.order by子句一般是放在查询语句的最后面
例句:查询员工信息,要求工资从高到低排序
select from employees order by salary desc;
select from employees order by salary; (不加函数,默认排序正序)
(案例):查询部门编号>=90的员工信息,按入职时间的先后进行排序(添加筛选条件)
select from employees where department_id>=90 order by hiredate asc;
(案例):按年薪的高低显示员工的信息和年薪(按表达式排序)
select ,salary12(1+ifnull(commission_pct,0)) as 年薪 from employees order by salary12(1+ifnull(commission_pct,0)) desc;
(案例):按年薪的高低显示员工的信息和年薪(按别名排序)
select ,salary12(1+ifnull(commission_pct,0)) as 年薪 from employees order by 年薪 desc;
(案例 :按姓名的长度显示员工的姓名和工资(按函数排序,添加函数 length 判断长度)
select length(last_name) as 字节长度,last_name,salary from employees order by length(last_name) desc;
select length(last_name) as 字节长度,last_name,salary from employees order by 字节长度 desc;
(案例):查询员工信息,要求先按工资升序,再按员工编号降序(按多个字段排序)
select from employees order by salary asc,employees_id desc;
4.常见函数
功能:类似于java的方法,将一组逻辑语句封装在方法体中,对外暴露方法名、
好处:1.隐藏了实现细节 2.提高代码的重用性
调用:select 函数名(实参列表) from 表;
特点:1.叫什么(函数名)
2.干什么(函数功能)
分类:1,单行函数
如:concat,length,ifnull等
单行函数分类
1.字符函数
!! length :获取参数值的字节个数
(例句)select length(‘字符’);
!! concat :拼接字符串
(例句)select concat(last_name,’‘,firstname) 姓名 from employees;
!! upper :大写,lower :小写
(例句)select upper(‘john’);
(案例):将姓变大写,名变小写,然后拼接。
select concat(upper(last_name),lower(first_name)) as 姓名 from employees;
!! substr :截取字符,substring :截取字符串 注:索引从1开始
(例句):截取从指定索引处后面所有字符
select substr(‘李莫愁爱上了陆展元’,7) out_put; 结果为陆展元
(例句):截取从指定索引处指定字符长度的字符
select substr(‘李莫愁爱上了陆展元’,1,3) out_put; 结果为李莫愁
(案例):姓名中首字符大写,其他字符小写然后用拼接,显示出来
select concat(upper(substr(lastname,1,1),’‘,lower(substr(first_name,2))) 姓名 from employees;
!! instr :返回子串第一次出现的索引,如果找不到返回0
(例句):select instr(‘杨不悔爱上了殷六侠’,’殷六侠’) as out_put;
!! trim :去前后空格
(例句)select trim(‘ 张翠山 ‘) as out_put;
(案例):去掉字符串里前后的a
select trim(‘a’ from ‘aaaaaaaaaaaa张aaaaaaaa翠山aaaaaaaa’) as out_put;
!! lpad :用指定的字符实现左填充指定长度
(例句)select lpad(‘殷素素’,10,’‘) as out_put;
!! rpad :用指定的字符实现右填充指定长度
(例句)select rpad(‘殷素素’,9,’‘) as out_put;
!! replace :替换
(例句)select replace(‘张无忌爱上周芷若’,’周芷若’,’赵敏’) as out_put;
(结果) :张无忌爱上赵敏。
2.分组函数
功能:做统计使用,又称为统计函数,聚合函数,组函数
九.##DML语言 (操作语句,插入,修改,删除)
十.##DDL语言 (数据定义语言,库和表的管理,常见约束,常见数据类型)
十一.##TCL语言 (事务控制语句)
