目录
1-简单介绍
- SQL:用于访问和处理数据的标准的计算机语言
(就是你说中文,她说英文,让对方理解你,只是sql语言用来操作数据库中的数据,通过这个语句来进行沟通)
2-SQL语言分类
- DML:增删改查
- DCL:用户、权限、事务
- DDL:逻辑库、数据表、视图、索引
3-sql注意事项
- 语句不区分大小写,但是字符串区分大小写
- 以分号结尾
- 语句中空白和换行没影响
4-注释
- #:注释一行文字
- /*注释一段文字*
5-对逻辑库操作
- 创建逻辑库:create database 逻辑库名;
- 查看逻辑库:show databases;
- 删除逻辑库:drop database 逻辑库名;
6-对数据表操作
1.创建表:
create table 数据表名( 列名1 数据类型 [约束] [comment 注释], 列名1 数据类型 [约束] [comment 注释], ... );
- 注意:[ ]的代表可写可不写,最后一列没有逗号,语句结束有分号
- 查看表:show tables; (查看有几个表)
- 查看表结构:desc 表名;
- 删除表结构:drop table 表名;
- 查看创建表的语句:show create table student;
- 注意:表结构就是表的第一行,就像第一个创建表的语句,这时候表里面还没有内容
2.添加字段
alter table 表名 add 列名1 数据类型 [约束] [comment 注释], add 列名2 数据类型 [约束] [comment 注释], ...;
3.修改字段类型和约束
alter table 表名 modify 列名1 数据类型 [约束] [comment 注释], modify 列名2 数据类型 [约束] [comment 注释], ...;
4.修改字段名称
alter table 表名 change 列名1 新列名1 数据类型 [约束] [comment 注释], change 列名2 新列名2 数据类型 [约束] [comment 注释], ...;
5.删除字段
alter alter table 表名 drop 列名1, drop 列名2 , ...;
7-数据类型
1.数字:有8个数字类型tinyint、smallint、mediumint、int、bigint、float、double、decimal
- decimal(5,2)代表全部数字一共5个,小数点后保留2位,例如:543.21
2.字符串:char、varchar、text、mediumtext、longtext
- char是固定的长度,例如char(10)代表开辟的空间是10,但是我们的保存的内容只占3个字符就很浪费空间
- varchar是不固定的长度,例如varchar(10),我们保存的内容是3个字符,它就用3个空间保存,最大保存10个空间
3.日期:date、time、year、datetime、timestamp
- date:年月日
- time:具体时间
- year:年
- datetime:年月日+具体时间
- timestamp:年月日+具体时间,但是是1970年之后的时间
8-数据库的范式
- 范式:就是构建数据库的一致规则(就像你去学校要遵守学校的规则,所以构建数据库也需要一些规矩)
- 目前数据有6种范式,一般情况,只满足第三范式
1.第一范式:原子性,这是基本要求,不满足就不是关系型数据库
- (首先mysql是关系数据库,关系数据库就是,表与表之间有一定练习。原子性,是不可分割的意思,每一列的数据不可以分割的,例如某一列是用来保存班级的,你填入的是初一3班,这个初一三班就是可以分割的,不满足第一范式,因为初一三班可以分为初一和三班,需要保存在年级和班级中)
2.第二范式:唯一性,每一条记录都是唯一的
- (比如一张表里面,只有三个字段,姓名、成绩、日期,你进行了三次考试,所以表里面保存了三条记录,但是这三条记录都是相同的,违反了每条记录唯一性,这时候你需要给表加一个字段,让它不同,作为记录的唯一标识)
3.第三范式:关联性,每一列都与主键有直接关系,不存在传递依赖
- (比如一张表的字段为父亲、母亲、儿子、儿子的玩具,这就存在依赖关系,儿子和儿子的玩具存在依赖,应该把儿子和儿子的玩具保存在一张表中)
9-字段约束
- 就是对所要保存字段的要求
- 主键约束:primary key ,字段值唯一,不能为空,建议用数字类型,还可以设为auto_increament
- 外键约束:foreign key,保持关联数据的逻辑性 设置了外键,如果一张表中把该字段删除了,另一张表的有些数据就不符合要求了
- 唯一约束:unique ,字段值唯一,可以为空
- 非空约束:not null,字段值非空
10-索引
- 索引就是你要查找数据的时候方便的标记,例如你新华字典旁边把相同字母弄成了一个颜色,这样方便你查看,提升你查找的速度
- 使用原则:一般添加经常被查询的字段
1.创建索引:
create table 表名( ... index [索引名称](字段) ... );
2.添加索引:
create index 索引名 on 表名(字段); alter table 表名 add index [索引名](字段);
3.删除索引:
drop index 索引名 on 表名;
4.查看索引:
show index from 表名;