MySql基础-课堂笔记
一、数据库的介绍
- 什么是数据库
- 数据库:存储数据的仓库,本质是一个文件系统。可以结构化的存储数据,方便的进行数据的增、删、改、查。
- 常见的数据库
- Oracle:Oracle公司的收费的、高性能的、大型数据库软件
- MySql:Oracle公司的免费的、小型数据库软件。被Oracle收购之后,6.x版本开始收费
- SQLServer:Microsoft公司的收费的、中型数据库软件。.net
- DB2:IBM公司的收费的、稳定的、大型数据库软件。银行、金融等行业
- Sybase:已经很少使用了,但是它提供了一个专业的数据库建模工具:PowerDesigner
二、MySql的安装和使用
- MySql卸载
- 停止MySql服务
- windows+r,输入services.msc回车,打开 服务管理窗口
- 找到MySQL,右键停止
- 卸载MySql软件
- 打开控制面板,找到程序和功能 窗口
- 找到MySql软件,双击卸载掉
- 清理MySql残留
- 删除安装目录:安装在哪,就把哪个文件夹删除掉
- 删除数据目录:默认在C:\programData\删除MySql文件夹
- MySql安装
- 参考课件里的安装过程
- MySql使用
3.1 MySql服务管理
使用管理员模式运行cmd,在cmd里输入命令:
- 启动MySql服务:net start mysql
- 关闭MySql服务:net stop mysql
3.2 登录MySql
3.2.1 在dos窗口里通过命令登录
- 登录:mysql -u用户名 -p密码
注意:-u后边没有空格, -p后边没有空格 - 退出:exit 或者 quit
3.2.2 使用客户端软件SQLyog登录
- 安装过程,略
三、SQL语句操作MySql
- 什么是SQL
- SQL:结构化查询语言,用来操作数据库的
- SQL分类:
- DDL:数据定义语言。用来定义数据库结构,比如:库、表等等
- DML:数据操作语言。用来增、删、改数据的
- DQL:数据查询语言。用来查询数据的
- DCL:数据控制语言。DBA使用的,进行权限管理
- TCL:事务管制语言。进行事务管理的
- SQL操作MySql
2.1 DDL
2.1.1 操作库database
重点:
- 创建库:create database 库名称
- 删除库:drop database 库名称
- 创建库
– 1. 创建一个库,名称为:heima。字符集默认
CREATE DATABASE heima– 2. 如果库heima不存在,就创建。
CREATE DATABASE IF NOT EXISTS heima– 3. 创建一个库,名称为heima63,字符集gbk
CREATE DATABASE heima63 CHARACTER SET gbk– 4. 如果库heima63不存在,就创建,并且指定字符集为gbk
CREATE DATABASE IF NOT EXISTS heima63 CHARACTER SET gbk
- 查看库
– 5. 查询有哪些库
SHOW DATABASES;– 6. 查看heima库的创建信息
SHOW CREATE DATABASE heima;
- 修改库
- ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
– 7. 把heima63库的字符集修改为utf8(不建议使用)
ALTER DATABASE heima63 DEFAULT CHARACTER SET utf8;
– 或者:
ALTER DATABASE heima63 CHARACTER SET utf8;
- 删除库
– 8. 删除库heima63
DROP DATABASE heima63;
- 使用库
– 9. 使用/切换库heima
USE heima;– 10. 查询现在使用的是哪个库
SELECT DATABASE();
2.1.2 操作表table
- MySql的数据类型
数据类型 说明 对应Java类型
int 整数类型,占4字节 int, Integer
double(m,n) 浮点型。<br />m:数字总长度最大值<br />n:小数位的长度<br />比如:double(5,2) double, Double
varchar(n)
可变长度字符串<br />n:字符串最大长度<br />比如:varchar(3),最多存3个字符。 字符多大,就占多大空间 String
char(n)
固定长度字符串<br />n:字符串最大长度<br />比如:char(3), 最多存3个字符。无论字符多大,都占3个字符的空间 String
date 日期类型。格式:yyyy-MM-dd Date
datetime 日期时间类型。格式:yyyy-MM-dd HH:mm:ss Date
- 操作表table
-
创建表
-- 1. 在heima库里,创建一张表:student。要求有字段:学号、姓名、年龄、性别、生日、地址 CREATE TABLE student ( id INT, NAME VARCHAR(10), age INT, sex CHAR(1), birthday DATE, address VARCHAR(100) )
-
查看表
1.查看某个数据库中的所有表 SHOW TABLES;
1. 查看表结构 DESC 表名;
2. 查看创建表的SQL语句 SHOW CREATE TABLE 表名;
– 2. 查询当前库里有哪些表
SHOW TABLES;– 3. 查看表student的创建信息
SHOW CREATE TABLE student;– 4. 查看表student的结构
DESC student;
- 删除表
- 直接删除表 DROP TABLE 表名;
2. 判断表是否存在并删除表 DROP TABLE IF EXISTS 表名;
– 5. 删除表user
DROP TABLE USER;
- 修改表
-
- 添加表列 ALTER TABLE 表名 ADD 列名 类型;
- 修改列类型 ALTER TABLE 表名 MODIFY列名 新的类型;
- 修改列名 ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
- . 删除列 ALTER TABLE 表名 DROP 列名;
- 修改表名 RENAME TABLE 表名 TO 新表名;
- 修改字符集 ALTER TABLE 表名 character set 字符集;
– 6. 给student表添加列:英语成绩 english int, 工资 salary double
ALTER TABLE student ADD english INT;
ALTER TABLE student ADD salary DOUBLE(9,2);– 7. 修改student表:把salary的类型改为int 类型
ALTER TABLE student MODIFY salary INT;– 8. 修改student表:把english重命名为math 列名
ALTER TABLE student CHANGE english math INT;– 9. 修改student表:删除address列 删除列
ALTER TABLE student DROP address;– 10. 把student表重命名为:students 修改表名
RENAME TABLE student TO students;– 11. 修改student表的字符集:gbk(不建议使用)
ALTER TABLE students CHARACTER SET gbk;
2.2 DML
添加数据
INSERT INTO 表名 (字段名1, 字段名2, …) VALUES (值1, 值2, …);
– 1. 向students表里添加数据:给表所有字段都设置值
INSERT INTO students VALUES (1, ‘大郎’, 40, ‘男’, ‘1039-12-21’, 0, 200);
INSERT INTO students VALUES (2, ‘二郎’, 30, ‘男’, ‘1049-12-21’, NULL, 200);– 2. 向students表里添加数据:
INSERT INTO students (id,NAME,age,sex,birthday,math,salary) VALUES (3,‘金莲’,28, ‘女’, ‘1048-02-03’, 20, 20);
INSERT INTO students (id,NAME,age) VALUES (4, ‘公明’, 45);
修改数据
- 不带条件修改数据 UPDATE 表名 SET 字段名=值;
- 带条件修改数据 UPDATE 表名 SET 字段名=值 WHERE 字段名=值;
– 3. 修改students表里id为4的数据:修改salary为20000 UPDATE students SET salary
= 20000 WHERE id = 4
– 4. 修改students表里id为4的数据:修改性别为男,修改math为100 UPDATE students SET sex = ‘男’, math = 100 WHERE id = 4
删除数据
- 不带条件删除数据 DELETE FROM 表名;
- 带条件删除数据 DELETE FROM 表名 WHERE 字段名=值;
- truncate删除表记录 TRUNCATE TABLE 表名;
– 5. 删除students表里id为3的数据
DELETE FROM students WHERE id = 3;– 6. 删除students表里所有数据
DELETE FROM students; – 一条一条删
TRUNCATE TABLE students; – 摧毁重建表
2.3 DQL
注意:查询操作不会影响库里保存的数据
2.3.1 简单查询
使用*表示所有列 SELECT * FROM 表名;
– 0. 准备表和数据:增加一个字段english int。设置条记录里的英语成绩
ALTER TABLE students ADD english INT;– 1. 查询students表里所有数据
SELECT * FROM students;– 2. 查询students里所有的姓名和年龄
SELECT NAME, age FROM students;– 3. 查询并处理null值:查询students里,每个学生的姓名 和 成绩(英语和数学成绩,如果成绩为null,认为是0) ifnull(字段名,默认值)
SELECT NAME, IFNULL(english, 0), IFNULL(math, 0) FROM students;– 4. 查询students里每个学生的总成绩(如果成绩为null,认为是0)
SELECT NAME, IFNULL(english, 0) + IFNULL(math, 0) FROM students;– 5. 查询并起别名
SELECT NAME AS ‘姓名’, IFNULL(english, 0) + IFNULL(math, 0) AS ‘总成绩’ FROM students;
SELECT NAME ‘姓名’, IFNULL(english, 0) + IFNULL(math, 0) ‘总成绩’ FROM students;– 6. 查询students表里所有的性别
SELECT DISTINCT sex FROM students;
四、dos窗口里中文乱码的处理
- 临时方案
- 在执行SQL语句之前,先执行一条命令:set names gbk;
- 再执行SQL语句,中文就不乱码了
- 永久方案
- 找到MySql安装目录里的my.ini,打开并修改
- 找到[mysql]下边的default-character-set=utf8,改成:default-character-set=gbk
- 然后,重启MySql服务
内容回顾
- 了解SQL语句的分类:
- DDL:数据定义语言。定义database、table等等
- DML:数据操作语言。增、删、改数据的
- DQL:数据查询语言。查询数据的
- DCL:数据控制语言。DBA使用的,管理MySql的权限,创建用户、授权管理
- TCL:事务管制语言。管理事务的
- DDL操作database
- 创建database: create database 库名称
- 删除database:drop database 库名称
- DDL操作table
- MySql的数据类型:
- int:整型,对应Java的int, Integer
- double(m,n):小数,对应Java的double,Double
- varchar(n):可变长度字符串,对应Java的String
- char(n):固定长度字符串,对应Java的String
- date:日期类型,对应Java的Date
- datetime:日期时间类型,对应Java的Date
- 创建表: create table 表名称(字段1 类型, 字段2 类型, …)
- 修改表
- 查看表
- 删除表
- MySql的数据类型:
- DML操作数据:增删改
- 插入数据:insert into 表名(字段1, 字段2,…) values (值1, 值2,…)
- 修改数据:update 表名 set 字段1=值1, 字段2=值2,… where 条件
- 删除数据:delete from 表名 where 条件
- DQL查询数据:
- 查询所有:select * from 表名
- 查询指定列:select 字段1,字段2,… from 表名
- 查询处理null值:select ifnull(字段,默认值) from 表名
- 查询并计算:select 字段1+字段2,… from 表名
- 查询并起别名:select 字段1 as 别名1, 字段2 别名2,… from 表名
练习:
- 创建一张商品表product。里边有字段:
- 商品编号
- 商品名称
- 商品价格
- 库存数量
- 商品分类
- 上架日期
- 向product表里添加数据:添加5条以上
- 查询:
- 查询所有商品所有数据
- 查询商品名称和价格
- 查询商品的所有分类(去重)