数据库基础
什么是数据库
- 数据库是一个用来存储各种数据的容器
- 数据库管理系统:专门用于创建和管理数据库的统一软件,介于应用和操作系统之间,保证数据的完整性、可靠性和安全性
- 数据库应用程序:通过数据库管理系统提供的接口与之通信,访问和管理数据的应用程序
SQL语言
SQL语言是一种数据库查询语言和程序设计语言,主要用于管理数据库中的数据,如存储数据,查询数据,更新数据等等
安装与下载
-
下载社区版(免费)安装略
-
设置环境变量
-
初始化数据库
# 安装MySQL
mysqld --initialize
# 进入mysql
mysql -u root -p
# 重新设置密码
mysql> set PASSWORD = '重新设置的密码';
数据库和表的操作
- 创建和删除数据库
mysql> Show databases; #查看所有的表单
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
# 创建数据库
mysql> Create database Test;
Query OK, 1 row affected (0.06 sec)
# 查询创建好的数据库
mysql> Show create database Test;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| Test | CREATE DATABASE `Test` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.04 sec) # 默认创建的字节集使utf-8
# 修改数据库的默认编码方式
# Alter database 数据库名 default character set 编码方式 collate 编码方式_bin;
mysql> Alter database test default character set gbk collate gbk_bin;
Query OK, 1 row affected (0.29 sec)
# 删除已经创建的数据库
mysql> Drop database 数据库名称;
- 创建修改删除表
# 创建表
mysql> Use Test
Database changed
# Create table testInfo(字段 数据类型,字段 数据类型);
mysql> Create table testInfo(name char,number int);
Query OK, 0 rows affected (0.43 sec)
# 查看创建的表
mysql> Show create table testInfo;
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| testInfo | CREATE TABLE `testinfo` (
`name` char(1) COLLATE gbk_bin DEFAULT NULL,
`number` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin |
mysql> Desc testinfo;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| name | char(1) | YES | | NULL | |
| number | int(11) | YES | | NULL | |
+--------+---------+------+-----+---------+-------+
# 修改表编码格式
mysql> Alter table testInfo default character set utf8 collate utf8_bin;
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0
# 修改对应表中的字段
# Alter table 表名 change 旧字段名 新字段名 新类型;
mysql> Alter table testInfo change name name_new char;
Query OK, 0 rows affected (0.74 sec)
Records: 0 Duplicates: 0 Warnings: 0
# 修改表的名称
mysql> Alter table testInfo rename testInfo_new;
mysql> Desc testinfo_new;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| name_new | char(1) | YES | | NULL | |
| number | int(11) | YES | | NULL | |
+----------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
# 修改字段的属性
# Alter table 表名 modify 字段名 新的数据属性;
mysql> Alter table testInfo_new modify number float;
# 添加新的字段 表名 新的字段名 数据属性
mysql> Alter table testInfo_new add new_number text;
Query OK, 0 rows affected (0.59 sec)
Records: 0 Duplicates: 0 Warnings: 0
# 删除字段
mysql> Alter table testInfo_new drop number;
Query OK, 0 rows affected (0.63 sec)
# 删除表
mysql> Drop table testInfo_new;
- 数据类型
表中数据操作
- 查看表中数据
# 查看字段的详细信息,表中数据信息
# 条件查询 select* from 表名 where 条件
mysql> select* from testinfo;
+------+------+------+
| id | name | age |
+------+------+------+
| 1 | jac | 15 |
+------+------+------+
1 row in set (0.00 sec)
# 向表中增加数据
# insert into 表名 (字段一,字段二,字段三 ...) values(值1,值2,值3 ...);
mysql> insert into testinfo (id,name,age) values(01,"jac",15);
Query OK, 1 row affected (0.06 sec)
# 或者直接添加值 insert into 表名 values(值1,值2,值3 ...);
mysql> insert into testinfo values(02,"bbb",55);
# 添加多行数据 insert into 表名 values(值1,值2,值3 ...),(值1,值2,值3 ...);
mysql> insert into testInfo values(04,"ddd",13),(05,"eee",23);
Query OK, 2 rows affected (0.30 sec)
Records: 2 Duplicates: 0 Warnings: 0
- 更新表中数据
# update 表的名称 Set 字段 = 值 where 匹配的条件; 例如 id = 2时
mysql> update testInfo Set name = "bbb" where id = 2;
Query OK, 0 rows affected (0.07 sec)
- 删除表中数据
# delete from 表名 where 匹配条件;
mysql> delete from testInfo where id = 5 or id = 4;
Query OK, 2 rows affected (0.11 sec)
单表查询
- 精确查询
# 只能字段的来查询,只查看相应字段的数据
mysql> select name,id from studentinfo;
# select 字段 from 表名 where 条件;
mysql> select name from studentinfo where id >3;
# 通过关键字 and or in between 来查询 等