数据库(database)是用来组织、存储和管理数据的仓库。
可抽象的理解为加强版EXCLE或加强版TXT。
常见的数据库和分类
传统型数据库
: MySQL(开源免费)、Oracle、SQL Server,它们设计理念相同,用法类似。
非关系型数据库
: Mongodb
传统型数据库的数据组织结构
分为: 数据库(database)、数据表(table)、数据行(row)、字段(field)
什么是SQL语句?
SQL(Structured Query Language)是结构化语言
,专门用来访问和处理数据库
的编程语言。
且在SQL语句中,关键字的大小写不敏感
增删改查(Create、Retrieve、Update、Delete)
增
向数据表中插入新的数据行:INSERT INTO 表名 ([列名]) values ('[对应值]')
删
删除一条数据:DELETE FROM 表名 WHERE 限定条件
改
修改数据表中的数据:UPDATE 表名 SET [列名='值'] WHERE 限定条件
查
查询所有数据:SELECT * FROM 表名称
查询对应列的数据:SELECT [列名称] FROM 表名称
例:
SELECT username.password FROM users
INSERT INTO users (username.password) values ('admin','admin')
UPDATE users SET username='admin',password='admin' WHERE id=0
DELETE FROM users WHERE id=0
WHERE子句用于限定选择的标准。在SELECT、UPDATE、DELETE语句中,皆可使用WHERE语句来限定选择的标准
。
各种限定方式:
条件运算符: >
、<
、=
、<>
、>=
、 <=
逻辑运算符: AND
、OR
、NOT
模糊查询:
BETWEEN AND
: 在一个数据段之间
LIKE
: 含有 %
、_
、escape
三个关键字。风别表示多个字符、单个字符、和转义字符
IN
: 包含关键字,表示是否含有列表中的其中一项
IS NULL / IS NOT NULL
: 是否为零
例:
SELECT * FROM users WHERE username<>'admin'
SELECT * FROM users WHERE wealth>=0 AND wealth<=9
SELECT * FROM users WHERE wealth BETWEEN 0 AND 9
SELECT * FROM users WHERE username LIKE '%a%'
SELECT * FROM users WHERE username IN('administrator','admin')
SELECT * FROM users WHERE username IS NULL
优先级列表:
计算顺序 | 优先级 |
---|---|
1 | 算术运算符,例如+、-、*、/运算符 |
2 | 比较运算符,例如>、<、>=、<=、<>运算符 |
3 | IS [NOT] NULL,LIKE,[NOT] IN |
4 | [NOT] BETWEEN |
5 | NOT |
6 | AND |
7 | OR |
秘诀: 该加括号加括号
DISTINCT关键字可用于返回唯一不同的值。
例: 从users表中获取所有用户姓名,且不出现重复。
SELECT DISTINCT username FROM users
默认为升序排序,如按username列中的首字母升序排序: SELECT * FROM users ORDER BY username
在ORDER BY的内容后加上DESC
关键字后即可进行降序排序: SELECT * FROM users ORDER BY username DESC
个人开发使用体会: 多用于对商品等按某一列进行排序。
LIMIT可以限定输出的记录数量
例:
输出前五行: SELECT * FROM users LIMIT 5
从行号为0的行开始,输出5行(第一行行号为0): SELECT * FROM users LIMIT 0,5
LIMIT可和ORDER BY 可组合使用, LIMIT放在ORDER BY 后面: SELECT * FROM users ORDER BY username LIMIT 5
个人开发使用体会: 多用于分段式数据查询。
语句: SELECR COUNT(*) FROM 表名 WHERE 限定条件
例:查询users表中名称不为admin的用户数量
SELECT COUNT(*) FROM users WHERE username<>'admin'
个人开发使用体会: 多与LIMIT配合,此语句用于查询总数据条数。
语句: 放在列名后面,每个列名单独设置 别名
。
例: 给users表中username和password列取别名
SELECT username AS uname,password AS upwd FROM users
个人开发使用体会: 在JAVA中设置相关类接受数据库中的数据时,方便统一命名以及调试。
数据库操作
创建数据库:CREATE DATABASE database-name
删除数据库:drop database dbname
表操作
创建新表:create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)
删除表:drop table tabname
其他操作
增加一个列:Alter table tabname add column col type
添加主键:Alter table tabname add primary key(col)
删除主键:Alter table tabname drop primary key(col)
创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
创建视图:create view viewname as select statement
删除视图:drop view viewname
个人开发使用体会: 不常用,一般在编写程序时会先设计好数据库,不会在Java等后端编程语言中对设计好的数据库进行更改。