一、数据库
- 关系型数据库
- 常见的关系型数据库:SQL Server、MySql、MariaDB、SQLite、ORACLE、PostgreSQL等
- 非关系型数据库
- 常见的非关系型数据看:MongoDB、HBASE、redis、CouchDB、Neo4j、Cassandra、memcached
-
- 非关系型数据库又分为:1. 文档型、 2.key-value型、3.列式数据库、图形数据库
- https://pan.baidu.com/s/1i5gjHat 密码: uuqj
二、 MySql
1. 什么是mysql
典型的关系型数据库 ([Mysql](https://baike.baidu.com/item/mySQL/471251?fr=aladdin))
2. mysql 基础
(1) 安装配置
~~ ~~ 安装社区版 5.7
(2)图形化管理工具
phpAdmin 、Navticat
3.语法基础
DDL (Data Define Language)
- CREATE 创建表/数据库
- ALTER 创建表/数据库
- DROP 删除表/数据库
DML (Data Manage Language)
- INSERT
- UPDATE
- DELETE
- SELECT
基础:
创建数据库和使用数据库:
- CREATE DATABASE mydatabease
;
- USE mydatabase
;
查看已有的数据库:
- SHOW DATABASES;
创建学生表格:
CREATE TEABLE `students` (
`id` INT NOT NULL AUTO_INCRMENT,
`name` VARCHAR(200) NOT NULL
)
常见类型:
- int、char、varchar、datetime
- char、varchar都表示字符串,但char必须占用一定空间,例如200,char一定占满200空间,不管它实际多少字符
- 但varchar只占据实际的字符数量的空间,只表示上限,更加节省空间,一般推荐varchar。
- datetime表示 日期+时间
分析学生表的字段:
- id: 学生的ID
- name: 学生的名称
- nickname:学生的昵称
- sex:性别
- in_time:入学时间
-- id: 学生的ID
-- name: 学生的名称
-- nickname:学生的昵称
-- sex:性别
-- in_time:入学时间
CREATE TABLE `stuents` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL,
`nickname` VARCHAR(20) NULL,
`sex` CHAR(1) NULL,
`in_time` DATETIME NULL
);
插入数据
语法:INSERT INTO table_references VALUE(S)…
- 创建表格时指定编码
CREATE TABLE `stuents2` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL,
`nickname` VARCHAR(20) NULL,
`sex` CHAR(1) NULL,
`in_time` DATETIME NULL
)DEFAULT CHARSET 'UTF8'; #指定编码
- 插入一条数据
INSERT INTO `stuents2` VALUE (2,'张三','三丰','男',now());
- 指定插入字段的名称(使得能自增)不需指定id
INSERT INTO `stuents2` (`name`,`nickname`,`sex`,`in_time`) VALUE ('李四','四小','男',now());
- tips : 字段名称使用反引号" ` “, 实际内容使用单引号” ’ "
- 插入多行 :
INSERT INTO `stuents2` (`name`,`nickname`) VALUES
('李四1','四小x'),
('李四2','四小2'),
('李四3','四小3'),
('李四4','四小4')
;
查询数据
-
语法格式: 有顺序要求
SELECT select_expr,... FROM table_references [WHERE where_definition] [GROUP_BY {col_name|expr|position}] [HAVING where_definition] [ORRDER_BY {col_name|expr|position} [ASE|DESC],...] [LIMIT {[offset,] row_count}]
SELECT `id`,`name`,`nickname` FROM `stuents2` WHERE `sex`='男' ORDER BY DESC LIMIT 1,2;
修改数据
语法:
UPDATE table_references
SET col_name1 = expr1 [,col_name2 = expr2]
[WHERE where_definition]
修改性别
UPDATE `students2` SET `sex`='女' WHERE `sex`='男';
- 修改时必须注意是否要添加WHERE条件;
- 如果不添加WHERE,将会修改相应的全部内容。
- 谨慎操作
删除数据
语法: 必须注意是否要限定删除范围
DELETE FROM table_name
[WHERE where_definition]
DELETE FROM `students2` WHERE `sex`='男';
其他语法
比较不常用的:
- 新建索引(CREATE INDEX)
- 修改表(ALTER TABLE)
- 删除数据库、表、索引、视图等(DROP)
- …
实例1
设计新闻表
-- ID:新闻的唯一标识
-- title:新闻标题
-- types:新闻类型
-- content:新闻内容
-- created_at : 发布时间
-- image:缩略图
-- author:作者
-- view_count:浏览量
-- is_valid:删除标记
操作:
CREATE TABLE `news`(
`id` INT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(200) NOT NULL,
`types` VARCHAR(20) NOT NULL,
`content` VARCHAR(2000) NOT NULL,
`created_at` DATETIME NULL,
`image` VARCHAR(300) NULL,
`author` VARCHAR(20) NULL,
`view_count` INT DEFAULT 0,
`is_valid` SMALLINT DEFAULT 1 , # 默认值,1为有效新闻,0为无效新闻
PRIMARY KEY(`id`)
)DEFAULT CHARSET 'UTF8';
** 别忘记语法格式、关键字
** LIMIT number1,number2 用法笔记
- number1 是偏移量,从0开始
- number2是每页显示的数量
- 假如要显示第5页的内容,并且每页显示5条。则 number1=4 * number2 + 1 = 4 * 5+1=21