数据库学习

数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。

RDBMS

所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS即关系数据库管理系统(Relational Database Management System)

特点

  1. 数据以表格的形式出现
  2. 每行为各种记录名称
  3. 每列为记录名称所对应的数据域
  4. 许多的行和列组成一张表单
  5. 若干的表单组成database

基本概念

数据库: 数据库是一些关联表的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

spl

大小写

SQL 对大小写不敏感:SELECT 与 select 是相同的。

分号

某些数据库系统要求在每条 SQL 语句的末端使用分号。
分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

SQL命令

  • CREATE DATABASE - 创建新数据库
    实例:
mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.01 sec)

mysql> use test
Database changed
mysql> SHOW TABLES;
Empty set (0.00 sec)
  • CREATE TABLE - 创建新表
    SQL CREATE TABLE 语法
CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

column_name 参数规定表中列的名称。
data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。
size 参数规定表中列的最大长度。
实例:

mysql> CREATE TABLE test_tbl(id int,val varchar(255));
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| test_tbl       |
+----------------+
1 row in set (0.00 sec)

  • INSERT INTO - 向数据库中插入新数据
    INSERT INTO 语句可以有两种编写形式。
    第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

实例:

mysql> INSERT INTO test_tbl
    -> VALUES (1,2);
Query OK, 1 row affected (0.00 sec)
  • SELECT,SELECT DISTINCT - 从数据库中提取数据
    SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。
mysql> SELECT id,val FROM test_tbl;
+------+------+
| id   | val  |
+------+------+
|    1 | 2    |
+------+------+
1 row in set (0.00 sec)

因为此表只有两个列,所以效果等同于:SELECT * FROM Websites;
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。

DISTINCT 关键词用于返回唯一不同的值。
SQL SELECT DISTINCT 语法

SELECT DISTINCT column_name,column_name
FROM table_name;
  • WHERE,AND,OR-过滤
    WHERE 子句用于提取那些满足指定条件的记录。
    SQL WHERE 语法
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

实例:

mysql> SELECT * FROM test_tbl;
+------+------+
| id   | val  |
+------+------+
|    1 | 2    |
|    2 | 3    |
|    3 | 3    |
|    3 | 4    |
+------+------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM test_tbl
    -> WHERE val>3
    -> AND val<5;
+------+------+
| id   | val  |
+------+------+
|    3 | 4    |
+------+------+
1 row in set (0.00 sec)
  • ORDER BY,排序
    SQL ORDER BY 语法
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC;
  • UPDATE - 更新数据库中的数据
    SQL UPDATE 语法
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
  • DELETE - 从数据库中删除数据
    SQL DELETE 语法
DELETE FROM table_name
WHERE some_column=some_value;
  • DELETE-删除表中的行
    DELETE 语句用于删除表中的行。
    SQL DELETE 语法
DELETE FROM table_name
WHERE some_column=some_value;
  • CREATE INDEX - 创建索引(搜索键)
    在表上创建一个简单的索引。允许使用重复的值:
CREATE INDEX index_name
ON table_name (column_name)

SQL CREATE UNIQUE INDEX 语法
在表上创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)
  • DROP INDEX - 删除索引
    用于 MySQL 的 DROP INDEX 语法:
ALTER TABLE table_name DROP INDEX index_name
  • ALTER TABLE - 变更(改变)数据库表
    ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
    SQL ALTER TABLE 语法
    如需在表中添加列,请使用下面的语法:
ALTER TABLE table_name
ADD column_name datatype

如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):

ALTER TABLE table_name
DROP COLUMN column_name
  • ALTER DATABASE - 修改数据库

  • DROP TABLE - 删除表
    DROP TABLE 语句用于删除表。

DROP TABLE table_name
  • DROP DATABASE - 删除数据库。
    语法:
DROP DATABASE database_name

spl和myspl的区别

MySQL与oracle,Microsoft access等一样,是关系型数据库,是一个用于存储的工具。而sql与java,Python一样,是一种数据库查询语言。通常关系型数据库都是支持用sql语言进行增删改查操作的。

myspq

报错

不知道是不是wsl的原因,还是教程不靠谱,出了好几个错误,参考下面解决的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值