从零开始数据库阶段一(一)

前言:如何学习?

  需求:快速掌握SQL基本概念,基本操作方法,快速补充自身数据库的知识短板。
  目前自身情况:1. 熟悉Linux环境操作 2.学习时间有限 3. 英文程度尚可。
  计划:分两阶段,首先第一阶段根据runoob快速掌握基本概念,并及时做题,每天大概两小时。一周内便可以基本掌握。第二阶段根据经典英文教材,此时学习目的变化,并非为了笔试和应试,纯粹更加熟练掌握数据库。

1. 基本概念

  • SQL 是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言
  • RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。
  • RDBMS 中的数据存储在被称为表的数据库对象中。
  • 表是相关的数据项的集合,它由列和行组成。

  一种模糊的理解为:SQL为查询语言,其用来对数据库进行一系列操作,而数据库系统用来管理数据库,一个数据库可能由多个表组成。这里笔者选择MySQL作为日后学习的RDBMS系统。

2. 实践中学习SQL

  使用yum快速安装mysql-clientmysql-server,(mysql-serverdeamon进程,受systemctl管理,具体操作比较简单)最新的版本为

[root@localhost ~]# mysqladmin --version
mysqladmin  Ver 9.1 Distrib 10.2.15-MariaDB, for Linux on x86_64

创建数据库,并选择该数据库:

SQL原语:CREATE DATABASE dbname;

  
  首先查看默认的databases:

//之前在UNP篇中很习惯这种C/S模型,上手很快
[root@localhost ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.2.15-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> 

  使用sql语法创建新的数据库,并使用该数据库:

MariaDB [(none)]> create database dh;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| dh                 |
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)


MariaDB [(none)]> use dh
Database changed
//none 变为dh
MariaDB [dh]> 

创建数据表 

SQL原语:CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
….
);
可以通过名字直观理解意思

MariaDB [dh]> CREATE TABLE dh_tl ( id INT AUTO_INCREMENT,name INT,goal VARCHAR(255) NOT NULL,PRIMARY KEY(id));   
Query OK, 0 rows affected (0.04 sec)

MariaDB [dh]> 

向数据表插入数据

SQL原语:

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

  插入我自己随便定义的一组数据:

MariaDB [dh]> INSERT INTO dh_tl VALUES (1,'a',100);
Query OK, 1 row affected (0.01 sec)
MariaDB [dh]> INSERT INTO dh_tl VALUES (2,'b',99);
Query OK, 1 row affected (0.01 sec)
MariaDB [dh]> INSERT INTO dh_tl (name,goal) VALUES ('c',98);   
Query OK, 1 row affected (0.81 sec)

MariaDB [dh]> 

查询数据

SQL原语:

  • SELECT column_name,column_name FROM table_name WHERE column_name operator value;
  • SELECT * FROM table_name;

MySQL原语:
SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N] [ OFFSET M]

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据。
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。

MariaDB [dh]> SELECT * FROM dh_tl;
+----+------+------+
| id | name | goal |
+----+------+------+
|  1 | a    |  100 |
|  2 | b    |   99 |
|  3 | c    |   98 |
+----+------+------+
3 rows in set (0.00 sec)

MariaDB [dh]> SELECT * FROM dh_tl WHERE id=1;
+----+------+------+
| id | name | goal |
+----+------+------+
|  1 | a    |  100 |
+----+------+------+
1 row in set (0.00 sec)

MariaDB [dh]> SELECT * FROM dh_tl WHERE id <> 1;
+----+------+------+
| id | name | goal |
+----+------+------+
|  2 | b    |   99 |
|  3 | c    |   98 |
+----+------+------+
2 rows in set (0.00 sec)


MariaDB [dh]> SELECT * FROM dh_tl WHERE id BETWEEN 1 AND 3;
+----+------+------+
| id | name | goal |
+----+------+------+
|  1 | a    |  100 |
|  2 | b    |   99 |
|  3 | c    |   98 |
+----+------+------+
3 rows in set (0.00 sec)

MariaDB [dh]> SELECT * FROM dh_tl WHERE id IN (1,3);         
+----+------+------+
| id | name | goal |
+----+------+------+
|  1 | a    |  100 |
|  3 | c    |   98 |
+----+------+------+
2 rows in set (0.00 sec)

MariaDB [dh]> 

更新表内数据

SQL原语:UPDATE table_name SET column1=value1,column2=value2,… WHERE some_column=some_value;

MariaDB [dh]> UPDATE dh_tl SET name='d',goal=97 WHERE id =3; 
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [dh]> SELECT * FROM dh_tl;
+----+------+------+
| id | name | goal |
+----+------+------+
|  1 | a    |  100 |
|  2 | b    |   99 |
|  3 | d    |   97 |
+----+------+------+
3 rows in set (0.00 sec)

MariaDB [dh]> 

  特别的,没有where的条件将用设置值更新整个表。

删除表内数据

SQL原语:DELETE FROM table_name WHERE some_column=some_value;


MariaDB [dh]> DELETE FROM dh_tl WHERE id=3;
Query OK, 1 row affected (0.03 sec)

MariaDB [dh]> SELECT * FROM dh_tl;                          
+----+------+------+
| id | name | goal |
+----+------+------+
|  1 | a    |  100 |
|  2 | b    |   99 |
+----+------+------+
2 rows in set (0.00 sec)

//表内数据全部删除
MariaDB [dh]> DELETE FROM dh_tl;     
Query OK, 2 rows affected (0.01 sec)
//表的定义还在
MariaDB [dh]> SELECT * FROM dh_tl;         
Empty set (0.00 sec)
//DROP删除直接彻底删除掉表
MariaDB [dh]> DROP TABLE dh_tl;
Query OK, 0 rows affected (0.05 sec)

MariaDB [dh]> SELECT * FROM dh_tl;  
ERROR 1146 (42S02): Table 'dh.dh_tl' doesn't exist
MariaDB [dh]> 

删除整个数据库

MariaDB [dh]> DROP DATABASE dh;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> 

3. 小结

  初步学习了基本的创建、删除、插入、查询及更改语句,没有拘泥于DB数据类型及部分正则表达式,明天着重学习比较重要的索引概念。

猜你喜欢

转载自blog.csdn.net/LoveStackover/article/details/80950711
今日推荐