数据库
1. 概念
1.1 什么是数据库?
即对数据进行存储和管理的仓库。
1.2 分类
关系型数据库:早期发展的数据库建立在数据的紧密关系基础之上(如父子关系等),称为关系型数据库(传统数据库)。
Oracle、MySQL、SQLServer、Access等。
非关系型数据库:现今数据库建立在数据的松散关系基础上(如中国人和外国人),我们称其为非关系型数据库nosql(not only sql)
MongoDB、Redis、Solr、ElasticSearch、Hive、HBase等。
1.3 Mysql数据库
MySQL服务端:处理具体数据维护,保存磁盘。
MySQL客户端:用于对数据进行新增、修改、删除和查询,简称增删改查(CRUD)。
1.4 检查Mariadb安装
方式1:win+r打开了运行的对话框,输入cmd回车。输入固定的命令:mysql -uroot -p,回车后输入密码即可。
方式2:打开开始菜单,找到Mariadb,打开 Mariadb MySql Client,直接输密码回车
2. SQL语句
2.1 定义
SQL是结构化查询语言(Structured Query Language)的简称,用于存取数据、查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。
2.2 分类
-
DML 数据操纵语言
对数据进行新增(Create)、删除(Delete)、修改(Update)、查询(Retrieve),简称CRUD。还可插入(insert)、检索(select)等操作。
-
DDL 数据库定义语言
如:create table(创建表)、创建库等。
-
DCL 数据库控制语言
分配具体操作数据的权限,如:grant、deny、revoke等。
-
DQL 数据查询语言
主要是对数据的查询
注:SQL不区分大小写
3. 数据库常用操作
展示所有数据库
show databases;
新建数据库
create database 库名;
指定字符集创建数据库
create database 库名 default character set utf8;
删除数据库(慎用!!!)
drop database 库名;
4.表的常见操作
1. 创建表格
create table 表名(字段名1 字段类型1(字段长度1),字段名2 字段类型2(字段长度2),字段3...);
例:
create table student(
id int,
name varchar(10),
sex varchar(10)
);
2. 删除表格
drop table 表名;
3. 查看所有表
show tables;
4. 修改表中某字段数据
alter table 表名 add column addr varchar(100);
desc 表名;
5.描述表
desc 表名;
5. 数据增删改查操作命令
1. 给表中字段插入值
insert into 表名 value(1000,'first',"010-5125423","bj");
注:插入的值类型必须与创建表格时一致,有几个字段就需赋予
几个值,varchar 类型必须用""或''包裹。
2. 修改字段的值
update 表名 set addr = "shanghai";
3. 查询字段的对应的值
select id from 表名; 只查id列的值
select id,addr from 表名; 查id和addr列的值
select * from 表名; 查看所有列的值----低效
6. SQL数据类型
6.1 命名规则
-
字段名必须以字母开头,需做到见名知意,尽量不用拼音。
-
长度不能超过30个字符(不同数据库,不同版本会有不同)。
-
不能使用SQL的保留字,如where,order,group等。
-
命名字符只能有az、AZ、0~9、$等。
-
Oracle习惯全大写:USER_NAME,mysql习惯全小写:user_name
-
多个单词用下划线隔开,如:user_name
6.2 字符
char:长度固定,其内容不足定义的长度时使用空格填充,如:char(10),若只存3个字符,其余会用空格填充。虽char的查询速度快,但浪费空间。
**varchar:**变长字符串,当其内容不足定义的长度时,其余空间不会被占用。varchar查询稍慢,但节省空间。
6.3 数字
整数类型:tinyint , int
浮点类型:float , double
decimal和numeric表示精确的整数数字
6.4 日期
date—包含年月日
time—包含时分秒
datetime包含年月日和时分秒
7.字段的约束
#没有约束时,id的值可以重复,可以是null
create table a1(id int)
#主键约束,id的值不能重复,也不能是null
create table a2(id int primary key)
#主键约束自动递增,id的值可以重复,可以是null
create table b(id int primary key auto_increment)
#没有非空约束,字段值可以为空
create table c1(name varchar(10))
#非空约束,字段值不能为空
create table c2(name varchar(10) not null)
#不用唯一约束:字段的值可以重复
create table d1(name varchar(10))
#唯一约束:字段的值不能重复
create table d1(name varchar(10) unique)