MySQL基础学习
服务开启与停止
net start mysql
net stop mysql
服务端登录和退出
mysql (–h lodalhost –P 3306) –u root –p123456
退出 exit
或者ctrl+c
MySQL的常见命令
1.查看当前所有的数据库
show databases;
2.打开指定的库
use 库名
3.查看当前库的所有表
show tables;
4.查看其它库的所有表
show tables from 库名;
5.创建表
create table 表名(
列名 列类型,
列名 列类型,
。。。
);
mysql>create table info(
-> id int,
-> name varchar(20));
mysql> insert into info (id,name) values(1,'jack');
mysql> select * from info;
mysql> delete from info where id=1;
mysql> select version();
6.查看表结构
desc 表名;
7.查看当前库 select database();
查看版本
方式一:登录到mysql服务端 select version(); 方式二:没有登录到mysql服务端 mysql --version 或 mysql --V
1.不区分大小写,但建议关键字大写,表名、列名小写,不区分单双引号
2.每条命令最好用分号结尾
3.每条命令根据需要,可以进行缩进 或换行
4.注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */
SQL的语言分类
DQL(Data Query Language):数据查询语言
select
DML(Data Manipulate Language):数据操作语言
insert 、update、delete
DDL(Data Define Languge):数据定义语言
create、drop、alter
TCL(Transaction Control Language):事务控制语言
commit、rollback
DQL语言的学习
基础查询
条件查询
排序查询
常见函数
分组函数
分组查询
连接查询
子查询
分页查询
union联合查询
基础查询
语法:
SELECT 要查询的东西
【FROM 表名】;
类似于Java中 :System.out.println(要打印的东西);
特点:
①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
② 要查询的东西 可以有多个可以是常量值、可以是表达式、可以是字段、可以是函数
着重号可以区分关键字和字段·············
别名可以便于理解;查询字段重名时可以区分
起别名 as select 100%98 as 结果;
方式二: select last_name ln;用空格来起别名
别名如果两个单词可以用双引号引起来或者单引号
去重mysql> select distinct department_id from employees;
+号的作用,运算符
员工名和姓连接成一个字段
select null+10; 一方为null,结果为null
拼接函数concat()
mysql> select concat(last_name,' ',first_name) as name from employees;
IFNULL(字段,如果为空返回值)
mysql> select ifnull(commission_pct,0) as rate,commission_pct from employees; 空的话返回0,否则返回原值
进阶2:条件查询
条件查询:根据条件过滤原始表的数据,查询到想要的数据
语法:
select
要查询的字段|表达式|常量值|函数
from
表
where
条件 ;
分类:
一、条件表达式
示例:salary>10000
条件运算符:
> < >= <= = != <>
二、逻辑表达式
示例:salary>10000 && salary<20000
逻辑运算符:
and(&&):两个条件如果同时成立,结果为true,否则为false
or(||):两个条件只要有一个成立,结果为true,否则为false
not(!):如果条件成立,则not后为false,否则为true
mysql> select last_name, department_id from employees where department_id!=90;
mysql> select last_name, salary,commission_pct from employees where salary>=10000 and salary<=20000;
mysql> select last_name, salary,commission_pct from employees where not(salary>=10000 and salary<=20000);
三、模糊查询
示例:last_name like 'a%'
between and , in , is null
mysql> select * from employees where last_name like '%a%';
一般和通配符一起用 %任意多个字符包含0个,_下划线表示一个字符
mysql> select * from employees where last_name like '__n_a%';,
mysql> select * from employees where last_name like '__\__%';转义,第二个字符为_
mysql> select * from employees where last_name like '__^__%' escape ‘^’;指定转义符号
between and 必须左小右大
in关系词
mysql> select last_name,job_id from employees where job_id in ('IT_PROT','AD_VP','AD_PRES0');
in 列表要一致或者兼容,不能带通配符的
is null 判断一个字段是否为空
is not null
<=>安全等于,可以判断普通的等于也可以判断是否为null
缺点是可读性差
算年薪,用到了奖金率
mysql> select last_name,department_id,salary*12*(1+ifnull(commission_pct,0)) from employees;
进阶3:排序查询
语法:
select
要查询的东西
from
表
where
条件
order by 排序的字段|表达式|函数|别名 【asc|desc】
order by字句一般放在查询语句最后面,limit字句除外
mysql> select * from employees order by salary desc;
mysql> select * from employees where department_id>=90 order by salary desc;
mysql>select last_name,department_id,salary*12*(1+ifnull(commission_pct,0)) S from employees order by S desc;
mysql> select length(last_name) len,last_name,salary from employees order by len desc;
先按工资排序,再按员工编号排序
mysql> select * from employees order by salary desc,employee_id asc;
进阶3:排序查询
语法:
select
要查询的东西
from
表
where
条件
order by 排序的字段|表达式|函数|别名 【asc|desc】
order by字句一般放在查询语句最后面,limit字句除外
mysql> select * from employees order by salary desc;
mysql> select * from employees where department_id>=90 order by salary desc;
mysql>select last_name,department_id,salary*12*(1+ifnull(commission_pct,0)) S from employees order by S desc;
mysql> select length(last_name) len,last_name,salary from employees order by len desc;
先按工资排序,再按员工编号排序
mysql> select * from employees order by salary desc,employee_id asc;