MySQL学习笔记
2020/5/4
一、 数据库的相关概念
- 数据库的好处
1 能够永久性的保存数据,实现数据持久化
2 可以实现结构化查询,方便管理
2.数据库相关概念
1数据库(DB->database):存储一组有组织的数据的容器
2 数据库管理系统(DBMS->database management system):又称数据库软件或数据库产品,用于管理数据库中的数据
3 结构化查询语言(structured query language):用于和DBMS进行通信的语言(SQL语言不是某个数据库软件特有,而是几乎所有数据库软件都通用的语言)
二、 一些数据库软件
- MySQL(08年被sun公司收购,09年sun公司被oracle公司收购)
- Oracle
- DB2
- sqlserver
三、 数据库的特点
- 将数据放到表内,表再放在库中(如security库)
- 一个数据库可以有多个表,每个表都有一个名字,用来标识自己(如security中的users)
- 表具有一些特性,这些特性定义了数据在表中如何存储,类似以c++中“类”的设计(如为储存学生数据的表)
- 表由列组成,也称为字段。所有表都是由一个或多个列组成的,每一列类似于c++中的“属性”(如security库中的user表中的username、password、id等字段)
- 表中的数据是按行存储的,每一行类似于C++中的”对象”
四、 MYSQL产品特点
优点:
- 成本低->开放源代码
- 性能高:执行很快
- 简单:容易安装和使用
五、 DBMS
两大类:
- 基于共享文件系统的DBMS(如微软的access,但只能用于windows操作系统中)
- 基于客户机-服务器(C/S)的DBMS(MySQL、Oracle、SqlServer)
(一般来说安装数据库,是安装数据库的服务端)
六、 MySQL-配置文件
- bin目录,二进制文件
- my.ini->一个配置文件,可以查看和修改当前MySQL服务端和客户端的配置(如端口号、使用的字符集等)
七、 MySQL服务的启动和停止
- 手动在电脑服务中开启或停止
- 在dos命令行中使用命令(在管理员模式下启动)
2.1 启动->net start 服务名(服务名可以在自己电脑计算机管理中的服务处查看)
2.2 关闭->net stop 服务名
八、 MySQL服务端的登入和退出
- MySQL自带的客户端(只限于root用户)
- 通过windows自带的客户端
登录:mysql [-h(主机名) -P(端口号)] -u(用户名) -p(密码)
退出:exit或Ctrl+C
九、 MySQL常见命令
- 查看当前的所有数据库
show database;(sql语句中以;或g来表示一个语句的结束)
2. 打开指定的库
use 库名;
3. 查看当前库的所有表
select tables;
4. 查看其它库的所有表
select tables from 库名;
5. 创建表
create table 表名(
列名 列类型,
列名 列类型,
…
);
6. 查看表结构
desc 表名;
7. 查看服务器版本
7.1 登录到mysql服务器
show version();
7.2 没有登录到mysql服务器
mysql –version
或
mysql –V
8. 创建一个数据库
create database 库名;
9. 查看当前打开的数据库
select database();
十、 MySQL语法规范
- 不区分大小写,但建议关键字大写,表名,列名小写
- 每条命令最好用‘;’结尾
- 每条命令根据需要,可以进行缩进或换行
- 注释
4.1单行注释:#
4.2单行注释:-- 注释文字(注意,后面有个空格)
4.3 多行注释:
十一、 SQL语言
- DQL语言(Data Query Language)数据查询语言
1.1 基础查询
1.1.1 语法:SELECT 查询列表(查询的东西可以有多个)FROM 表名;(select->选择、过滤、查看)
1.1.2 查询列表可以是:(注意,查询的结果是一个虚拟的表格,没有真实的保存)
(1) 表中的字段
表中的单个字段:
SELECT 字段名 FROM 表名;
SELECT last_name FROM employee;
表中的多个字段:
SELECT 字段名,字段名,…,字段名 FROM 表名;(查询字段名的类型、个数、顺序可以自己定义,灵活)
表中的全部字段:
- SELECT * FROM 表名;(*表示所有字段,但字段的顺序是固定的,不够灵活)
- SELECT 字段名,字段名,…,字段名(列出所有字段) FROM 表名;
(着重号:用于把字段名与关键字区分,代表这是一个字段名,也可以不用)
(2) 常量值
SELECT 常量值;
SELECT 100;
SELECT "john";
(3) 表达式
SELECT 表达式;
SELECT 100*98;
(4) 函数
SELECT 函数名;
SELECT VERSION();
1.1.3 给字段取别名
优点:1.便于理解 2.如果要查寻的字段有重名的情况,使用别名可以区分开来
方式一:AS方式
SELECT 字段名 AS 别名;
SELECT 100*98 AS RESULT;
SELECT last_name AS 姓,first_name AS 名 FROM employee;
方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employee;
注意:若别名中有特殊字符如“ ”(空格)、“#”等,需要用“”把别名引起来(单引号也可以,不过建议使用双引号)
1.1.4 去重
SELECT DISTINCT 字段名 FROM 表名;
SELECT DISTINCT department_id FROM employee;(department_id中只显示没有重复的编号,若作用于多列,则根据多列的多个字段来共同去重)
1.1.5 +的作用
只有一个功能:运算符
(1).若两个操作数都为数值型,则直接进行加法运算
(2).若两个操作数中有一方为字符型,则会试图将字符型值转换为数值型。如果转换成功,则继续做加法运算;如果转换失败,则将字符型值转换成0
(3). 若两个操作数中有一方为null,则最后结果一定为null
1.1.6 concat()使用(拼接)
函数原型:concat(str1,str2,str3…)
SELECT CONCAT("a","b","c");->abc
SELECT CONCAT(last_name,first_name) AS 姓名 FROM employee;
2. DML语言(Data Manipulation Language)数据操纵语言
3. DDL语言(Data Definition Language)数据库模式定义语言
4. TCL语言(Transaction Control Language)事务控制语言