1.什么是数据库
简单来讲,数据库就是存储在硬盘上的一个文件而已,
只不过这个文件他有一定的规则,还有人专门为这个文件
开发了一种语言(SQL),通过这种语言可以通过管理软件
来快速的从数据库中查出数据。
数据库(DB)
2.什么是数据库管理软件
管理软件就是用来管理数据库的一些操作,这种管理操作
通过定义的(SQL)语言来操作的。市面上这种数据库管理
系统有很多,常见的有下面几个
MySql 甲骨文
Oracle 甲骨文
DB2 IBM
Sybase 赛尔斯  PowerDesigner 建模软件
SQL Server 微软
3.MySql安装
a,绿色安装
解压,按照
http://blog.csdn.net/symoriaty/article/details/78277615
b,exe安装
无脑下一步,按照  按照文档 一步步的实现即可
4.数据库的启动和关闭
数据库服务器的启动和关闭不是MySql的语法,他是操作系统的语法,操作系统
提供了这样的命令

net start 服务名  -- 启动该服务
net stop 服务名   -- 关闭该服务
5.数据库的登录/退出/修改当前登录用户的密码
MySql数据库管理软件中最高用户  用户名为 root
a,登录
mysql -u用户名 -p密码   密码明文登录

mysql -u用户名 -p 回车   在下面密文输入  
b,退出
\q
c,修改密码(登录状态下)
set password=password('新密码');
6.MySql数据库中常用的操作命令
a,查看当前用户下管理了哪些数据库
show databases;
b,切换数据库
use 数据库名字;
c,查看当前数据库下面有哪些表
show tables;
d,查看数据库的状态(数据库的客户端 服务器  以及连接的编码格式)
status;
如果不是统一的UTF8 就修改  my.ini 配置文件 修改他的默认
编码格式全部为 utf8

在[client]下追加:
default-character-set=utf8
在[mysqld]下追加:
character-set-server=utf8
在[mysql]下追加:
default-character-set=utf8
修改完毕后,使用如下命令之一重启mysql服务:

7.MySql快速入门
建议:
SQL语言建议所有的关键字大写。
a,创建数据库
create database 数据库名字;
创建一个 java1711数据库
create database java1711;
b,删除数据库
drop database 数据库名字;
drop database java1711;
c,创建表    
//创建表之前一定要切换到该数据库下面  use 数据库名字;
create table 表名(
列名  列类型,
列名  列类型
...
);
name varchar(5),
type varchar(3),
price double
);
d,删除表
drop table 表名;
drop table t_hero;
e,查看表结构
desc 表名;
f,向表中插入数据
insert into 表名(列名1,列名2,,,) values(对应的列值1,对应的列值2,,);
//添加一个英雄
insert into t_hero(name,type,price) values('披甲龙龟','坦克',3150);
//添加一个英雄
insert into t_hero(name,type,price) values('无极剑圣','刺客',450);

insert into t_hero(name,type,price) values('abcdef','刺客',450);
g,查看该表的所有数据
select * from 表名;
select * from t_hero;

45道练习题
https://www.cnblogs.com/aqxss/p/6563625.html

DROP DATABASE java1708;

CREATE DATABASE java1708;
SHOW DATABASES;
USE java1708;
DROP TABLE t_student;
CREATE TABLE t_student(
s_id INT,
s_name VARCHAR(10),
s_age INT,
s_address VARCHAR(100),
s_desc VARCHAR(300)
);
SHOW TABLES;
DESC t_student;
-- 如何向表中插入记录
-- insert into 表名(列名) values(列值);
INSERT INTO t_student(s_id,s_name,s_age,s_address,s_desc)
VALUES(1,'张三丰',20,'武当山','一代大师');

-- 如果在插入数据的时候不给列名 就需要插入所有列
INSERT INTO t_student VALUES(2,'张无极',22,'武当山','一代大师');

-- 可以指定插入相应的列,该列无数据以null补齐
INSERT INTO t_student(s_id,s_name,s_age,s_address)
VALUES(3,'张小强',22,'武当山');

-- 一般情况下推荐使用 插入指定列

-- 查询某张表的记录
-- select 列名1,列名2,,, from 表名
-- 如果想查看该表的所有列  可以使用 * 代替
-- *代表列名仅限学习使用,开发过程中不要使用*,影响效率
SELECT * FROM t_student; -- 查询所有列

SELECT s_name,s_address FROM t_student; -- 查询指定列

-- 修改表中的记录
-- update 表名 set 列名=列值,列名=列值,,,[where 条件]
-- 如果在使用update 语句的时候 省略了 where 条件
-- 那么update 就会修改这张表中所有记录的该列的值
SHOW TABLES;
SELECT * FROM t_student;
-- 修改满足where条件的记录
UPDATE t_student SET s_desc='一代帅哥' WHERE s_id=3;
-- 修改所有的记录该列的值 省略了 where 条件
UPDATE t_student SET s_desc='一代帅哥';

-- 将id为2的记录 姓名改成张无忌 年龄改为28岁 地址改为明教 描述改为教主
UPDATE t_student SET s_name='张无忌',s_age=28,s_address='明教',s_desc='教主' WHERE s_id=2;

-- 删除数据
-- delete from 表名 [where 条件]
-- 如果删除的时候不跟上where条件,那么就会删除整张表的记录数据
-- 删除满足记录条件的数据
DELETE FROM t_student WHERE s_id=3;
-- 删除表中的所记录
DELETE FROM t_student;

-- 基础查询
-- DQL
-- 查询语法
/*
select 要查询的列
from 要查询的表
where 查询的条件
group by 给查询的结果分组
having 给分组后进行条件过滤
order by 查询结果排序
limit 查询结果进行分页显示
*/

USE java1708;
/*创建学生表*/
DROP TABLE stu;
CREATE TABLE stu(
sid CHAR(6),
sname VARCHAR(50),
age INT,
gender VARCHAR(50)
);

/*创建部门表*/
DROP TABLE dept;
CREATE TABLE dept(
deptno INT PRIMARY KEY,
dname VARCHAR(50),
loc VARCHAR(50)
);

/*创建雇员表*/
DROP TABLE emp;
CREATE TABLE emp(
empno INT PRIMARY KEY,
ename VARCHAR(50),
job VARCHAR(50),
mgr INT,
hiredate DATE,
sal DECIMAL(7,2),
COMM DECIMAL(7,2),
deptno INT,
CONSTRAINT fk_emp FOREIGN KEY(mgr) REFERENCES emp(empno)
);

/*创建工资等级表*/
DROP TABLE salgrade;
CREATE TABLE salgrade(
grade INT PRIMARY KEY,
losal INT,
hisal INT
);

/*插入表数据*/
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female');
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male');
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female');
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male');
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female');
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male');
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female');
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male');
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female');
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);

INSERT INTO emp VALUES (1009, '猴哥', '董事长', NULL, '2001-11-17', 50000, NULL, 10);
INSERT INTO emp VALUES (1004, '剑圣', '经理', 1009, '2001-04-02', 29750, NULL, 20);
INSERT INTO emp VALUES (1006, '蛮子', '经理', 1009, '2001-05-01', 28500, NULL, 30);
INSERT INTO emp VALUES (1007, '菊花信', '经理', 1009, '2001-09-01', 24500, NULL, 10);
INSERT INTO emp VALUES (1008, '狮子狗', '分析师', 1004, '2007-04-19', 30000, NULL, 20);
INSERT INTO emp VALUES (1013, '螳螂', '分析师', 1004, '2001-12-03', 30000, NULL, 20);
INSERT INTO emp VALUES (1002, '女警', '销售员', 1006, '2001-02-20', 16000, 3000, 30);
INSERT INTO emp VALUES (1003, '小黄毛', '销售员', 1006, '2001-02-22', 12500, 5000, 30);
INSERT INTO emp VALUES (1005, '老鼠', '销售员', 1006, '2001-09-28', 12500, 14000, 30);
INSERT INTO emp VALUES (1010, '奥巴马', '销售员', 1006, '2001-09-08', 15000, 0, 30);
INSERT INTO emp VALUES (1012, '风女', '文员', 1006, '2001-12-03', 9500, NULL, 30);
INSERT INTO emp VALUES (1014, '奶妈', '文员', 1007, '2002-01-23', 13000, NULL, 10);
INSERT INTO emp VALUES (1011, '牛头', '文员', 1008, '2007-05-23', 11000, NULL, 20);
INSERT INTO emp VALUES (1001, '锤石', '文员', 1013, '2000-12-17', 8000, NULL, 20);
INSERT INTO emp VALUES (1015, '花千骨', '服务员', 1001, '2001-12-17', 80000, NULL, 50);

INSERT INTO dept VALUES (10, '教研部', '北京');
INSERT INTO dept VALUES (20, '学工部', '上海');
INSERT INTO dept VALUES (30, '销售部', '广州');
INSERT INTO dept VALUES (40, '财务部', '武汉');

INSERT INTO salgrade VALUES (1, 7000, 12000);
INSERT INTO salgrade VALUES (2, 12010, 14000);
INSERT INTO salgrade VALUES (3, 14010, 20000);
INSERT INTO salgrade VALUES (4, 20010, 30000);
INSERT INTO salgrade VALUES (5, 30010, 99990);

SELECT * FROM stu;

SELECT * FROM emp;

SELECT * FROM dept;

SELECT * FROM salgrade;

-- 查询性别是女,年龄是5的记录
SELECT *
FROM stu
WHERE gender='female' AND age=5;

-- 查询学号是s_1001,或者姓名为liSi的记录
SELECT * 
FROM stu
WHERE sid='s_1001' OR sname='liSi';

-- 查询学号是s_1001,s_1002,s_1003的记录
SELECT *
FROM stu
#where sid='s_1001' or sid='s_1002' or sid='s_1003';
WHERE sid IN('s_1001','s_1002','s_1003');

-- 查询年龄为null的记录
-- null值和任何值(包括null)比较都不会相等
SELECT *
FROM stu
WHERE age IS NULL;

-- 查询年龄在20到40之间的学生
SELECT *
FROM stu
WHERE age>=20 AND age<=40;

SELECT *
FROM stu
WHERE age BETWEEN 20 AND 40;

-- 查询性别非男的学生记录
SELECT *
FROM stu
WHERE gender!='male';

SELECT *
FROM stu
WHERE gender<>'male';

SELECT *
FROM stu
WHERE NOT gender='male';

-- 模糊查询
-- 关键字 like
-- _ 通配任意一个字节 % 通配任意多个字符

-- 查询姓名由5个字母构成的学生记录
SELECT *
FROM stu
WHERE sname LIKE '_____';

-- 查询姓名由5个字母构成,并且第5个字母为 i 的学生记录
SELECT *
FROM stu
WHERE sname LIKE '____i';

-- 查询姓名以 z 开头的学生记录
SELECT *
FROM stu
WHERE sname LIKE 'z%';

-- distinct 去除重复 一般在单列的情况比较多
SELECT DISTINCT sal
FROM emp;

-- 查看员工的月薪和奖金之和
-- 显示员工的姓名和实际月收入
-- null值的影响,和null做计算的结果都是null
-- 处理方式:使用一个函数 IFNULL
-- IFNULL(可能会出现null值的列名,替换null的值)
-- 别名 ename AS '姓名'    as可以省略
SELECT ename'姓名',sal+IFNULL(COMM,0)'实际所得'
FROM emp;

-- 排序
-- order by  asc升序   desc降序

-- 查询所有的学生记录,按年龄升序排序
-- 默认升序,asc可以不写
SELECT *
FROM stu
ORDER BY age ASC;

-- 查询所有的雇员,按月新降序排序,月薪相同时,按编号升序
SELECT *
FROM emp
ORDER BY sal DESC,empno ASC;

-- 聚合物函数  组函数
/*
     avg() 平均值
     max() 最大值
     min() 最小值
     count() 计数
     sum() 求和
*/
-- 查询emp表中有多少条记录
SELECT COUNT(*) 
FROM emp;

-- 查询emp中月薪大于25000的人数
SELECT COUNT(*)
FROM emp
WHERE sal>25000;

-- 查询emp中月薪最高的人的详细信息
SELECT *  
FROM emp
WHERE sal=(SELECT MAX(sal) FROM emp);

-- 查询所有雇员的月薪总和
SELECT SUM(sal) 
FROM emp;

-- 查询每个部门的部门编号和每个部门的工资总和
SELECT deptno,SUM(sal)
FROM emp
GROUP BY deptno;

-- 查询每个部门的工资总和,显示部门工资总和大于10w的部门编号
-- 分组后过滤
SELECT deptno,SUM(sal)
FROM emp
GROUP BY deptno
HAVING SUM(sal)>100000;

-- 显示出每个部门工资大于15000的人数和部门编号
-- 分组前过滤
SELECT deptno,COUNT(*)
FROM emp
WHERE sal>15000
GROUP BY deptno;

-- 分页查询
#当前页-1 * 每页的条数
SELECT *
FROM emp
LIMIT 0,4  -- 第一页

SELECT *
FROM emp
LIMIT 4,4  -- 第二页

SELECT *
FROM emp
LIMIT 8,4  -- 第三页

-- 单表查询练习
/*1. 查询出部门编号为30的所有员工*/
SELECT ename 姓名,deptno 部门编号
FROM emp
WHERE deptno=30;

/*2. 所有销售员的姓名、编号和部门编号。*/
SELECT ename 姓名,empno 编号,deptno 部门编号
FROM emp
WHERE job='销售员';

/*3. 找出奖金高于工资的员工。*/
SELECT ename 姓名,sal 工资,comm 奖金
FROM emp
WHERE sal<comm;

/*4. 找出奖金高于工资60%的员工。*/
SELECT ename 姓名
FROM emp
WHERE comm>(sal*0.6);

/*5. 找出部门编号为10中所有经理,和部门编号为20中所有
销售员的详细资料。*/
SELECT *
FROM emp
WHERE deptno=10 AND job='经理' OR deptno=20 AND job='销售员';

/*6. 找出部门编号为10中所有经理,部门编号为20中所有销
售员,还有即不是经理又不是销售员但其工资大或等于
20000的所有员工详细资料。*/
SELECT *
FROM emp
WHERE (deptno=10 AND job='经理')OR(deptno=20 AND job='销售员')OR(job NOT IN('经理','销售员') AND sal>=20000);

/*SELECT *
FROM emp
WHERE deptno=20 AND job='销售员';
SELECT *
FROM emp
-- where job!='经理' and job!='销售员';
WHERE job not in('经理','销售员') and sal>=20000;*/

/*7. 有奖金的工种。*/
SELECT DISTINCT job 工种
FROM emp
WHERE comm IS NOT NULL;

/*8. 无奖金或奖金低于10000的员工。*/
SELECT ename 姓名,comm 奖金
FROM emp
WHERE comm IS NULL OR comm<10000;

/*9. 查询名字由三个字组成的员工。*/
SELECT ename 姓名
FROM emp
WHERE ename LIKE '___';

/*10.查询2000年入职的员工。*/
SELECT ename 姓名,hiredate 入职时间
FROM emp
WHERE hiredate LIKE '2000%';

/*11. 查询所有员工详细信息,用编号升序排序*/
SELECT *
FROM emp
ORDER BY empno ASC;

/*12. 查询所有员工详细信息,用工资降序排序,如果工资
相同使用入职日期升序排序*/
SELECT *
FROM emp
ORDER BY sal DESC,hiredate ASC

/*13. 查询每个部门的平均工资*/
SELECT deptno 部门编号,AVG(sal) 平均工资
FROM emp
GROUP BY deptno

/*14. 求出每个部门的雇员数量。*/
SELECT deptno 部门编号,COUNT(ename) 雇员数量
FROM emp
GROUP BY deptno

/*15. 查询每种工作的最高工资、最低工资、人数*/
SELECT job 工种,MAX(sal) 最高工资,MIN(sal) 最低工资,COUNT(ename) 人数
FROM emp
GROUP BY job;

/*16. 显示非销售人员工作名称以及从事同一工作雇员的月
工资的总和,并且要满足从事同一工作的雇员的月工资合
计大于50000,输出结果按月工资的合计升序排列*/
SELECT job 工种,SUM(sal) 工资总和
FROM emp
GROUP BY job
HAVING job!='销售员' AND SUM(sal)>50000 
ORDER BY SUM(sal) ASC

/*显示出每个员工的姓名和他的领导姓名*/
SELECT e.ename 员工姓名,IFNULL(m.ename,'无领导的人物') 领导姓名
FROM emp e LEFT OUTER JOIN emp m
ON e.mgr=m.empno;

mysql基础笔记--day01相关推荐

  1. MYSQL基础笔记(三)-表操作基础

    数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一 ...

  2. (B站动力节点老杜MySQL教程)MySQL课堂笔记-day01.txt

    文章目录 文件来源/资料下载: MySQL课堂笔记-day01.txt 1.sql.DB.DBMS分别是什么,他们之间的关系? 2.什么是表? 3.学习MySQL主要还是学习通用的SQL语句,那么SQ ...

  3. MySQL学习笔记——尚硅谷李玉婷经典版MySQL基础笔记(一)

    MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) MySQL学习笔记目录 MySQL学习笔记--尚硅谷李玉婷经典版MySQL基础笔记(一) 一.基础知识 1.MySQL的语法规范 2. ...

  4. Mysql基础学习Day01

    Mysql基础学习Day01 1.SQL语言的分类 2.注释 3.基本的select语句 4.显示表结构 5.过滤数据 突然发现java基础内容学的差不多了 就又开一个mysql基础学习 1.SQL语 ...

  5. MySQL基础 笔记、思维导图、代码

    MySQL登录方式 2种 : 1.自带的客户端登录 2.使用命令行语句登录 cmd 以管理员方式打开 输入命令如下: mysql [-h 127.0.0.1] [-P 3306] -u root -p ...

  6. 学习MySQL基础笔记4

    下一次笔记就是MySQL的进阶了 #作业 create table employee( id int unsigned primary key auto_increment comment '编号', ...

  7. mysql基础笔记(一)

    本单元目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQLMySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ...

  8. 尚硅谷李老师Mysql基础笔记

    数据库的相关概念 一:数据库的好处 1.可以持久化数据到本地 2.结构化查询 二:数据库的常见概念 1.DB:数据库,存储数据的容器 2.DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创 ...

  9. mysql基础笔记(二)

    DQL语言的学习 进阶1:基础查询 语法: SELECT 要查询的东西 [FROM 表名]; 类似于Java中 :System.out.println(要打印的东西); 特点: ①通过select查询 ...

最新文章

  1. 仅需6步,教你轻易撕掉app开发框架的神秘面纱(3):构造具有个人特色的MVP模式
  2. 汇聚开发者星星之火,华为鸿蒙系统有希望成为国产之光?
  3. DPM2007轻松恢复Exchange邮件,DPM2007系列之三
  4. Flutter Widget
  5. 华为开发者学院 | 卷积神经网络与图像处理,听这一节课就够了
  6. 简单数据分布分析及python实现
  7. 启动Memcached报错:/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-2.1
  8. Windows Mobile Widget Emulator
  9. Java中常用集合类对比_集合比较
  10. Python -- 三元表达式(三目运算符)
  11. mingw linux socket,MingW上编译WinSocket程序undefined reference to `WSAStartup@8'报错的解决办法...
  12. Python递归函数的正确理解与使用
  13. 百度之星2018资格赛t6三原色图(MST minimum spanning tree)
  14. 七言 感大兴安岭大火
  15. ubuntu需要多大的固态硬盘_揭秘:为什么SSD固态会越用越慢?关键点就在这里,你了解了吗...
  16. pdf打印机如何设置双面打印
  17. Java网络聊天室系统的设计与实现
  18. 2017 linux wine 迅雷,Ubuntu+Wine+迅雷+QQ安装方法
  19. matlab 使用 utf-8 编码
  20. 拍乐云创始人CEO赵加雨:深耕18载,打造全景式音视频服务

热门文章

  1. C#操作读写文本文件txt
  2. 自媒体创作瓶颈期?看看这5个网站,良心推荐
  3. 这里是拉姆达的第一个博客~~
  4. 全球存储观察:预见2021年数据存储最新9大趋势
  5. 一款全能型商业智能BI软件能做什么?
  6. IdentityServer4实战:Token 中返回用户属性
  7. [smart210] Nand Flash K9F4G08U0B 的配置与读写控制(一)
  8. Mybatis标签之association关联查询对象属性
  9. 百度引流标题怎么写新颖?什么样的标题最吸引人?
  10. 考研逻辑-逻辑3主讲人:王超-2020-04-25