每日一讲
SQL语句
SQL语句分类
SQL书写规范
数据库操作
查看
创建
MySQL字符集
ci大小写不敏感,cs大小写敏感,
在Linux下配置MySQL
utf8与utf8mb4的区别
数据库对象
表的基本操作
创建表
创建部门表
表物理存储结构
查看表
查看表结构
删除表
修改表的结构
复制表的结构(必须搞定)
数据类型
text类型:
number类型:int、bigint、float、double、decimal
数据库字典
表的约束(重要知识点,必须需要掌握)
1.复习知识点并且卸载docker的问题
docker相比于虚拟机来说体量小,虚拟机体量大,docker相当于一个容器
卸载docker的办法,记得删除目录中的文件再进行删除docker
sql语句,结构化查询语言,不同厂商的sql语句有一丢丢不同,但是几乎是如出一辙的,主要用于存储数据,更改结构,系统安全设置,检索信息,更改用户许可权限,信息更新等。
1)DDL:数据定义语言 关键字有:create(创建),drop(删除) ,truncate(删除表结构,再创一张表),alter(修改)------(关于信息的生死操作)
2)DQL:数据查询语言 关键字有:select打交道最多的就是select
3)DML:数据操作语言 关键字有:insert(插入),update(更改),delete(删除)
4)TCL:事务控制语言 关键字有:begin,savepoint,rollback,commit非常重要,维护数据库统一性
5)DCL:数据控制语言 关键字有 :grant,revoke,deny创建用户,对用户授予权限
1、大小写都是一样
2、用‘;’结束语句
3、关键词不能跨多行书写或者简写
3、SQL标准:1、/**/多行注释
2、“--”单行注释
MySQL注释: "#"
latin1支持西欧字符、希腊字符等
gbk支持中文简体字符
big5支持中文繁体字符
utf8几乎支持世界所有国家的字符。
下划线匹配单个字符 mysql自带数据库
查看
show databases
1.经常性的是直接创建数据库
基本字符集 :utf8
2.也可以通过语句直接创建数据库
创建数据库
create database databasedemo002 ;
查看创建数据库
show create database databasedemo002(数据库名);
详细创建数据库
create database databasedemo003 default character set utf8 collate utf8_general_ci;
删除数据库
drop database databasedemo003;
切换数据库
use databasedemo001;
操作时一定要知道自己在那个数据库里
查看当前数据库
select database();
查看当前版本
select version();
查看当前用户
select user();
查看所有用户
select user,host,password from mysql.user;
查看当前sql所支持的字符集
show variables like ‘character%’;
查看所支持的所有校验规则
show collation;
在etc目录下编辑my.cnf有一些基本设置,default-character--set+utf8适合5.1以及以前版本;(课堂笔记)并将增加在my.cnf的mysql下面增加,然后重启mysql,则systemctl restart mysqld.service
mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了
1、必须以字母开头
2、可以包括数字和三个特殊符号(#_$)
3、不使用mysql保留字
4、不重名
关系就是通过约束来保持数据库的一致性;视图就是不同的人看到不同的数据,不同的视图;索引是为加快数据库的性能
1.根据语法创建表
标准数据库的语法
CREATE TABLE [schema.]table
(column datatype[DEFAULT expr] ,
…
) ENGINE = 存储机制 engine(存储yinqin)以后的可以省略后边是可以做更多的设置
2.直接创建表主键就是不允许重复的,zerofill可以用0进行填充指最大长度,注释尽可能加上,如果没有规范的就尽量加上注释,行业不一样,字段不一样(养成良好习惯)auto就是自动的;
cd /var/lib/mysql/mysql
ls -l user*查询表
区别比较明显,类型长度和大小不一样,字符型用的比较多,大对象存储图像
数据类型 | 描述 |
---|---|
CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的最大长度。最多 255 个字 符。 注释:如果值的长度大于 255,则被转换为 TEXT 类型。 |
TINYTEXT | 存放最大长度为 255 个字符的字符串。 |
TEXT | 存放最大长度为 65,535 个字符的字符串。 |
BLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。 |
MEDIUMTEXT | 存放最大长度为 16,777,215 个字符的字符串。 |
MEDIUMBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。 |
LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串。 |
LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。 |
ENUM(x,y,z,etc.) | 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。 可以按照此格式输入可能的值: ENUM('X','Y','Z') |
SET | 与 ENUM 类似, SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。 |
数据类型 | 描述 |
---|---|
TINYINT(size) | -128 到 127 常规。 0 到 255 无符号*。在括号中规定最 大位数。 |
SMALLINT(size) | -32768 到 32767 常规。 0 到 65535 无符号*。在括号中 规定最大位数。 |
MEDIUMINT(size) | -8388608 到 8388607 普通。 0 to 16777215 无符号*。在 括号中规定最大位数。 |
INT(size) | -2147483648 到 2147483647 常规。 0 到 4294967295 无 符号*。在括号中规定最大位数。 |
BIGINT(size) | -9223372036854775808 到 9223372036854775807 常规。 0 到18446744073709551615 无符号*。在括号中规定最大位 数。 |
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。 |
注意:这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED属性,那么范围将从 0 开始,而不是某个负数。
date类型:应用的都挺多,都要记住
数据类型 | 描述 |
---|---|
DATE() | 日期。格式: YYYY-MM-DD 注释:支持的范围是从 '1000-01-01' 到 '9999-12-31' |
DATETIME() | 日期和时间的组合。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是'1000-01-01 00:00:00' 到 '9999-12- 31 23:59:59' |
TIMESTAMP() | 时间戳。 TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC |
TIME() | 时间。格式: HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59' |
YEAR() | 2 位或 4 位格式的年。 注释: 4 位格式所允许的值: 1901 到 2155。 2 位格式所允许 的值: 70 到69,表示从 1970 到 2069 |
常用的数据类型都要记住
直接查看和通过语句查询表结构
describe dept;
describe employee;
show columns from dept;
show create table dept;/**/可以查看创建表的语句
drop table student;如果还在刷新一下就没了
drop table if exits account;
1、直接进行修改
2、通过sql语句进行修改表的结构
修改列类型
alter table dept modify dept_desc varchar(100);修改列类型,修改长度为100
增加列
alter table dept add dept_company varchar(50);多了一个字段
删除列
alter table dept drop dept_company;
修改列的名字
alter table dept change dept_desc dept_description varchar(100);
对表的重命名
alter table dept rename depts;
rename table depts to dept;将depts重新命名为dept
三种方法:
1、先创建一个新表与dept拥有相同结构
create table depts like dept;只拷结构不拷数据
2、创建表的备份(备份的洗表表事先不存在)
create table deptss select * from dept;
3、已经创建表,并且将数据导入另外一张表(表事先存在)
insert into depts select * from dept;将dept的数据拷贝到depts中
由information_schema数据库负责维护
tables-存放数据库里所有的数据表、以及每个表所在数据库。
schemata-存放数据库里所有的数据库信息
views-存放数据库里所有的视图信息。
columns-存放数据库里所有的列信息。
triggers-存放数据库里所有的触发器。
routines-存放数据库里所有存储过程和函数。
key_column_usage-存放数据库所有的主外键
table_constraints-存放数据库全部约束。
statistics-存放了数据表的索引。
维护数据的一致性,尽可能降低数据的冗余(数据的重复),要求数据出现唯一性,比如人的身份证号,取值范围例如年龄,数据参照例如学生表以及成绩表,记录时要求姓名与成绩相匹配,不匹配时就是一个无效的数据,主键约束(数据唯一性,主键的列不是描述业务字段,记录编号,记录实现唯一性),非空约束(值不能为空的,必须要有值),唯一约束性(唯一性,相当于产品比编号),外键约束(体现数据依赖性,有参照),检查约束,默认值约束。