一、数据库基础

什么是数据库

数据库:保存有组织的数据的容器(通常是一个文件或一组文件)。

表:是一种结构化的文件,可以用来存储数据(类似Excel表)。数据库就是由成千上万个表组成。

 

什么事SQL

  sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。

SQL的语句规范:

<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;

<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。

<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。

 什么是Mysql

Mysql:是一种数据库软件,用来操作数据库。

MySQL的优点:

  1. MySQL开放源代码,一般都可以免费使用,成本低。
  2. 执行效率高。
  3. 操作简单,易学。

 二、连接数据库

连接数据库需要以下信息:

主机名:本地一般为(localhost)

端口号:MySQL默认端口为:3306

用户名和密码:

三、数据类型

常见的数值类型

MySQL 基础 简单操作

作用:id,年龄,工资等需要做运算的变量

BIT类型

BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位。
注意:对于位字段需要使用函数读取
   bin()显示为二进制
   hex()显示为十六进制

实例:

mysql> create table b(id bit);
Query OK, 0 rows affected (0.06 sec)

mysql> desc b;
+-------+--------+------+-----+---------+-------+
| Field | Type   | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| id    | bit(1) | YES  |     | NULL    |       |
+-------+--------+------+-----+---------+-------+
1 row in set (0.01 sec)

mysql> insert b values(1);  #插入数据
Query OK, 1 row affected (0.01 sec)

mysql> select * from b; #查找数据,看不到
+------+
| id   |
+------+
|     |
+------+
1 row in set (0.00 sec)

mysql> select bin(id) from b; #加上bin得出数据
+---------+
| bin(id) |
+---------+
| 1       |
+---------+
1 row in set (0.00 sec)

字符串类型:

存储字符串:

CHAR系列 :CHAR VARCHAR
TEXT系列 : TINYTEXT TEXT MEDIUMTEXT LONGTEXT

存储二进制数据:

BINARY系列: BINARY VARBINARY
BLOB 系列 :  TINYBLOB BLOB MEDIUMBLOB LONGBLOB

MySQL 基础 简单操作

char (m)
   
      CHAR列的长度固定为创建表时声明的长度: 0 ~ 255。其中m代表字符串的长度。
      PS: 即使数据小于m长度,也会占用m长度
varchar(m)
      VARCHAR列中的值为可变长字符串,长度: 0 ~ 65535。其中m代表该数据类型所允许保存的字符串
      的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。

      注:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度
      更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡

text
      text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。

mediumtext
      文本的最大长度为 16,777,215 (2**24 − 1)字节

ongtext
      文本的最大长度为 4,294,967,295 or 4GB (2**32 − 1)字节
 
在查询的时候,CHAR列删除了尾部的空格,而VARCHAR则保留这些空格。
mysql> create table t1(x char(5),y varchar(5));
mysql> insert into t1 values('你瞅啥  ','瞅你妹                 ');
mysql> select x,length(x),y,length(y) from t1;
+--------+-----------+----------+-----------+
| x      | length(x) | y        | length(y) |
+--------+-----------+----------+-----------+
| 你好啊 |         9 | 你好啊    |        11 |
+--------+-----------+----------+-----------+

时间类型

MySQL 基础 简单操作

作用:存储时间、日期等数据

例:

mysql> CREATE TABLE dty(d DATE,t TIME,dt DATETIME,y YEAR,ts TIMESTAMP);
Query OK, 0 rows affected (0.14 sec)

mysql> desc dty;

+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| d     | date      | YES  |     | NULL              |                             |
| t     | time      | YES  |     | NULL              |                             |
| dt    | datetime  | YES  |     | NULL              |                             |
| y     | year(4)   | YES  |     | NULL              |                             |
| ts    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
mysql> INSERT INTO dty VALUES (now(),now(),now(),now(),now());

Query OK, 1 row affected, 1 warning (0.06 sec)

mysql> SELECT * FROM dty;
+------------+----------+---------------------+------+---------------------+
| d          | t        | dt                  | y    | ts                  |
+------------+----------+---------------------+------+---------------------+
| 2018-06-23 | 22:17:36 | 2018-06-23 22:17:36 | 2018 | 2018-06-23 22:17:36 |
+------------+----------+---------------------+------+---------------------+
1 row in set (0.01 sec)

枚举类型和集合类型:

字段的值只能在给定范围中选择,如单选框,多选框
enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female
set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

例:

mysql> CREATE TABLE shorts(name VARCHAR(40), sex ENUM("man", "woman"));
Query OK, 0 rows affected (0.08 sec)

mysql> DESC shorts;
+-------+---------------------+------+-----+---------+-------+
| Field | Type                | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| name  | varchar(40)         | YES  |     | NULL    |       |
| sex   | enum('man','woman') | YES  |     | NULL    |       |
+-------+---------------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql> INSERT INTO shorts VALUES("wallace","man");
Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM shorts;
+---------+------+
| name    | sex  |
+---------+------+
| wallace | man  |
+---------+------+
1 row in set (0.00 sec)

mysql> INSERT INTO shorts(name, sex) VALUES  ("wallace","aaa");  #插入不存在的值会报错
ERROR 1265 (01000): Data truncated for column 'sex' at row 1    

数据库的操作

-- 1.创建数据库(在磁盘上创建一个对应的文件夹)
    create database [if not exists] db_name [character set xxx] 
    
-- 2.查看数据库
    show databases;查看所有数据库
    show create database db_name; 查看数据库的创建方式

-- 3.修改数据库
    alter database db_name [character set xxx] 

-- 4.删除数据库
    drop database [if exists] db_name;
    
-- 5.使用数据库
    切换数据库 use db_name; -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
    查看当前使用的数据库 select database();

数据表操作:

创建表:

CREATE TABLE tablename(字段1 数据类型,
             字段2 数据类型 ...)

mysql> CREATE TABLE dty(d DATE, dty:表名
              t TIME,       d,t,dt,ts,t:表的字段名,类似execl的表头
              dt DATETIME,    DATE,...:表示的是每一字段的数据类型
              y YEAR,
              ts TIMESTAMP);

查看表信息:

desc tab_name              查看表结构
show columns from tab_name     查看表结构
show tables            查看当前数据库中的所有的表
show create table tab_name     查看当前数据库表建表语句 

例:

mysql> DESC dty;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| d     | date      | YES  |     | NULL              |                             |
| t     | time      | YES  |     | NULL              |                             |
| dt    | datetime  | YES  |     | NULL              |                             |
| y     | year(4)   | YES  |     | NULL              |                             |
| ts    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
5 rows in set (0.00 sec)

mysql> SHOW COLUMNS FROM dty;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| d     | date      | YES  |     | NULL              |                             |
| t     | time      | YES  |     | NULL              |                             |
| dt    | datetime  | YES  |     | NULL              |                             |
| y     | year(4)   | YES  |     | NULL              |                             |
| ts    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
5 rows in set (0.00 sec)

mysql> SHOW tables;
+---------------------+
| Tables_in_tornadodb |
+---------------------+
| article             |
| b                   |
| dty                 |
| grade               |
| shorts              |
| student             |
| t                   |
| text                |
| user                |
| user_1              |
| user_article        |
| user_details        |
+---------------------+
12 rows in set (0.00 sec)

mysql> SHOW CREATE TABLE dty;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                          |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dty   | CREATE TABLE `dty` (
  `d` date DEFAULT NULL,
  `t` time DEFAULT NULL,
  `dt` datetime DEFAULT NULL,
  `y` year(4) DEFAULT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

相关文章: