jck28 - 小柒 -SQL语法与数据库笔记

一,数据库

1,基本介绍

1.1,简介

  • 数据库(DataBase) 就是一个以某种有组织的方式存储的数据集合
  • 是存储和管理数据的仓库
  • 其本质是一个文件系统
  • 数据库管理系统(DBMS)是一款管理软件

1.2,分类

  • 关系型数据库(RDB: Relationship DataBase)
  • 非关系型数据库(NoSQL)

1.3,常用数据库

  • 关系型数据库(RDBMS):MySQL、Oracle、Postgres、SQLite、SQLServer
  • NoSQL 数据库:MongoDB、Redis、HBase、Neo4j、NewSQL

1.4,使用场景

  • 关系型数据库
    • 需要做复杂处理数据
    • 数据量不是特别大的数据
    • 对安全性能要求高的数据
    • 数据格式单一的数据
  • 非关系型数据库(NoSQL)
    • 数据模型比较简单
    • 需要灵活性更强的 IT 系统
    • 对数据库性能要求较高
    • 不需要高度的数据一致性

2,SQL安装与分类

2.1 Mac系统安装MySQL

环境变量配置:

  • 进入 .bash_profile 文件
  • 添加内容:
    • export PATH=$PATH:/usr/local/mysql/bin
    • export PATH=$PATH:/usr/local/mysql/support-files

2.2 Windows系统安装MySQL

环境变量配置:

  • 新建系统变量 mysql,值为 mysql 安装路径
  • path 变量中添加 %mysql%\bin

2.3 数据库的命令行操作

  • 开启 mysql 服务:net start mysql
  • 登录:mysql -h主机IP -u用户名 -p密码
  • 修改密码:alter user 'root'@'localhost' identified by '密码';
  • 退出:exit
  • 关闭 mysql 服务:net stop mysql

2.4 sql介绍

目录结构:

数据库表:

  • 表:包含数据库中所有数据的数据库对象
    • 表名:每个表的唯一标识
    • 模式(schema):关于数据库和表的布局及特性的信息
    • 列:表中每列称为一个字段
    • 行:表中的一个记录

2.5 分类

  • 数据定义语言(DDL):用来定义数据库对象,比如数据库,表,列等
  • 数据操作语言(DML):用来对数据库中表的记录进行更新
  • 数据查询语言(DQL):用来查询数据库中表的记录
  • 数据控制语言(DCL):用来定义数据库的访问权限和安全级别及创建用户

3,数据库操作

3.1 DDL 数据库操作 - 增删改查

————————————————————————————————————————————

创建

  • 创建数据库语法:CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] 数据库名 CHARACTER SET [=] 字符集

    • CREATE DATABASE student; (创建一个名为student的数据库)
    • CREATE DATABASE person CHARACTER SET utf8; (创建一个名为person 的数据库,指定字符集为utf8)
    • CREATE DATABASE IF NOT EXISTS son CHARACTER SET utf8; (如果数据库son不存在就创建名为son的数据库)
  • 创建数据库注意事项

    • 不能与其他数据库重名
    • 名称可以由任意字母、阿拉伯数字、下划线(_)和“$”组成,但不能使用单独的数字
    • 名称最长可为 64 个字符,别名最长为 256 个字符。
    • 不能使用 MySQL 关键字作为数据库名
    • 建议采用小写来定义数据库名

————————————————————————————————————————————

查看

  • 查看表名语法:SHOW TABLES;
  • 查看表结构语法:
    • 查看表结构:DESCRIBE 数据表名; / DESCRIBE 数据表名 列名;
    • 查看表结构简写:DESC 数据表名; / DESC 数据表名 列名;
  • 实例
    • 选择数据库:USE db1;
    • 查看数据库中的表:SHOW TABLES;
    • 查看学员表的表结构:DESC student;
    • 查看学员表中 name 列的信息:DESC student name;

————————————————————————————————————————————

修改

  • 添加新列:ALTER TABLE 表名 ADD 列名 列属性;
    • ALTER TABLE student ADD email varchar(50) NOT NULL;
  • 修改列定义:ALTER TABLE 表名 MODIFY 列名 列属性;
    • ALTER TABLE student modify score int;
  • 修改列名:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
    • ALTER TABLE student CHANGE COLUMN name stu_name VARCHAR(30) DEFAULT NULL
  • 删除列:ALTER TABLE 表名 DROP 列名;
  • 修改表名:ALTER TABLE 旧表名 RENAME AS 新表名; / RENAME TABLE 旧表名 To 新表名;

————————————————————————————————————————————

删除

  • 删除表语法:DROP TABLE [IF EXISTS] 数据表名

————————————————————————————————————————————

3.2 DML 数据库表操作 - 增删改

————————————————————————————————————————————

插入数据

  • 表数据插入语法:INSERT INTO 数据表名 (列名1, 列名2…) VALUES(值1, 值2…);
  • 完整插入数据
    • INSERT INTO user (id,name,age,sex,address) VALUES(1,‘张三’,20,‘男’,‘北京’);
    • INSERT INTO user VALUES (2,‘李四’,22,‘女’,‘上海’);
  • 插入数据记录的一部分
    • INSERT INTO user (id,name,address) VALUES(3,‘王五’,‘深圳’);
  • 插入多条记录
    • INSERT INTO user (id,name,address) VALUES(4,‘赵六’,‘天津’),(5,‘小红’,‘成都’),(6,‘小白’,‘杭州’);
  • 注意事项
    1. 值与字段必须要对应,个数相同并且数据类型相同
    2. 值的数据大小,必须在字段指定的长度范围内
    3. VARCHAR ,CHAR, DATE 类型的值必须使用单引号包裹
    4. 如果要插入空值,可以忽略不写,或者插入 NULL
    5. 如果插入指定字段的值,必须要上写列名

————————————————————————————————————————————

修改数据

  • 表数据修改语法:PDATE 数据表名 SET 列名1=值1 [, 列名2=值2…] [WHERE 条件表达式]

————————————————————————————————————————————

删除数据

  • 通过 DELETE 语句删除数据:DELETE FROM 数据表名 WHERE 条件表达式
  • 通过 TRUNCATE TABLE 语句删除表中所有数据:TRUNCATE TABLE 数据表名

————————————————————————————————————————————

3.2 DQL 数据库表操作 - 查询

————————————————————————————————————————————

  • 单表查询:SELECT * FROM 表名;

  • 字段查询:SELECT 列名 FROM 表名;

  • 起别名:

    • 为表起别名: SELECT 列名 FROM 表名 表别名;
    • 为字段起别名:SELECT 列名 AS 别名 FROM 表名;
  • 去重:SELECT DISTINCT 列名 FROM 表名;

  • 运算查询: SELECT (列名 运算表达式) FROM 表名;

    • SELECT emp_no , salary + 1000 FROM salaries;
  • 条件查询:SELECT 列名 FROM 表名 WHERE 条件表达式

  • 比较运算符:

    • 符号 > , <, <=, >=, =, <>, != : 大于、小于、小于等于、大于等于、等于、不等于
    • BETWEEN…AND… : 范围限定
    • IN :子集限定
    • LIKE ‘%or%’ :模糊查询
    • IS NULL :
  • 逻辑运算符:

    • AND 、 && :多个条件同时成立
    • OR 、| :多个条件任一成立
    • NOT:不成立
  • 通配符:

    • % : 匹配任意多个字符
    • ‘- ’ :匹配1个字符 :SELECT FROM employees WHERE first_name LIKE ‘fa_’;