数据库——数据库表和表的操作

        每日一讲

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语句,结构化查询语言,不同厂商的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创建用户,对用户授予权限

SQL书写规范

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;

MySQL字符集

查看当前sql所支持的字符集

show variables like ‘character%’;

查看所支持的所有校验规则

show collation;

ci大小写不敏感,cs大小写敏感,

在Linux下配置MySQL

在etc目录下编辑my.cnf有一些基本设置,default-character--set+utf8适合5.1以及以前版本;(课堂笔记)并将增加在my.cnf的mysql下面增加,然后重启mysql,则systemctl restart mysqld.service

utf8与utf8mb4的区别

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就是自动的;

创建部门表

部门标号为主键,f9为执行

表物理存储结构

cd /var/lib/mysql/mysql

ls -l user*查询表

数据类型

区别比较明显,类型长度和大小不一样,字符型用的比较多,大对象存储图像

text类型:

数据类型 描述
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 可存储一个以上的值。

number类型:int、bigint、float、double、decimal

数据类型 描述
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-存放了数据表的索引。

表的约束(重要知识点,必须需要掌握)

维护数据的一致性,尽可能降低数据的冗余(数据的重复),要求数据出现唯一性,比如人的身份证号,取值范围例如年龄,数据参照例如学生表以及成绩表,记录时要求姓名与成绩相匹配,不匹配时就是一个无效的数据,主键约束(数据唯一性,主键的列不是描述业务字段,记录编号,记录实现唯一性),非空约束(值不能为空的,必须要有值),唯一约束性(唯一性,相当于产品比编号),外键约束(体现数据依赖性,有参照),检查约束,默认值约束。

你可能感兴趣的:(数据库,sql)