数据库详细入门教程

创建用户:CREATE USER ‘用户名‘【@‘主机名‘】 IDENTIFIED BY ‘密码‘

主机名可以为空,为空默认为%权限,表示所有主机可连接

 CREATE USER ‘jredu‘@‘localhost‘ IDENTIFIED BY ‘jredu‘;

GRANT TO给用户分配权限;GRANT 权限名 ON 数据库名 表名 TO 用户@主机

ALL表示所有权限 *.* 表示所有数据中的所有表

GRANT ALL ON *.* TO ‘jredu‘@‘localhost‘;

 GRANT SELECT,INSERT,DELETE,UPDATE ON mysql.`user` TO ‘jredu‘@‘localhost‘;

REVOKE FROM 删除用户权限

REVOKE ALL ON *.* FROM ‘jredu‘@‘localhost‘;

创建数据库 CREATE DATABASE [IF NOT EXISTS]数据库名 [CHARACTER SET [=]‘UTF8‘];

如果省略 IF NOT EXISTS 在创建数据库时,会报错

CREATE DATABASE IF NOT EXISTS myDB3 CHARACTER SET ‘UTF8‘;

删除数据库 DROP DATABASE [IF EXISTS] 数据库名;

DROP DATABASE IF EXISTS mydb2;

查询本机中所有的数据库 SHOW DATABASE;

SHOW DATABASE;

使用mydb这个数据库,表示下面的查询,都将默认针对mydb数据库

USE mydb;

查询数据库中所有数据表 SHOW TABLES [FROM 数据库]

SHOW TABLES FROM mysql;

mySQL中常用的数据类型

一、字符型:

①CHAR(N):固定N个字符长度的字符串,如果长度不够,会自动空格补齐 N的返回 0~255;

②VARCHAR(): 存储可变长度的字符串,最常用的。0~65535 * 10;

③ TEXT: 可以存储可变长度的字符串,常用于发布文章等 0~65535*10^2;

④ TINYTEXT: 0~(2^8-1)*10;

MEDIUMTEXT: 0~2^24-1 * 10^3;

⑥ LONGTEXT: 0~2^32-1 * 10^4;

二、整形:

① TINYINT:无符号 0~(2^8-1);有符号 -2^7 - 2^7-1;

② SMALLINT:无符号 0~2^16-1 有符号 -2^15 - 2^15-1;

③ MEDIUMINT: 无符号 0~2^24-1 有符号 -2^23 - 2^23-1;

④ INT:无符号 0~2^32-1 有符号 -2^31 - 2^31-1; 最常用的。

⑤ BIGINT:无符号 0~2^64-1 有符号 -2^63 - 2^63-1;

三、浮点型

① FLOAT:可以精确到小数点后7位有效数字

② DOUBLE:可以精确到小数点后15到16位有效数字

四、日期时间数据类型

由于时间存储使用字符串或者时间戳存储,所以数据库中几乎不用数据类型

① DATE 存储日期和时间数据

② TIMESTAMP: 比 DATE 更精确

数据库设计的三大范式;

1、第一范式

1NF:数据表中的每一列必须是不可拆分的最小单元,也就是确保每一列的原子性

例如 userInfo:‘山东省烟台市 13181602111‘;

userAds:‘山东省烟台市‘ userTel:‘13181602111‘

2、第二范式

2NF:满足1NF后,要求表中的所有列都必须依赖于主键,而不能有任何一列与主键没有关系。也就 是说一个表只描述一件事情

例如: 订单表:只能描述订单相关的信息,所以所有的字段必须与订单id相关

产品表:只能描述产品相关的信息,所以所有的字段必须与产品id相关

因此, 不能同时存在产品和订单的信息

3、第三范式

3NF:满足2NF后,要求:表中的每一列都要与主键直接相关,而不是间接相关,表中的每一列,只能依赖于主键。

例如: 订单表中,需要有客户相关信息,在分离出客户表之后,在订单表中,只需要有一个客户id即可,而不能有其他的客户信息。因为,其他的用户信息是直接关联与用户id而不是关联于订单ID

[第二范式与第三范式的本质区别]

在于有没有分出两张表,第二范式是说一张表中如果包含了多种不同实体的属性,那么必须分成多张表

第三范式要求已经分好了多张表的话,那么,一张表中只能有另一张表的ID(主键)而不能有其他的任何信息,(其他的任何信息,一律用主键在另一张表中查询)

创建表

IF NOT EXISTS 可以省略,省略后重复创建报错,如果不省略,则创建是会检测表是否已存在,如果表已存在,则不再执行创建语句

定义列 列名 数据类型 列定义关键字

常用的列定义关键字

UNSIGNED 设置列为无符号列,只能设置类型为数字类型的列

AUTO_INCREMENT:设置列为自动增长列,自动增长列必须是主键

[主键]

1、主键的注意事项

主键默认非空,主键默认唯一性约束,只有主键才能设置自动增长(主键不一定自增,自增一定是主键)

2、设置主键的方式

① 在列定义时设置, id INT UNSIGNED PRIMARY KEY,

② 在列定义完成后设置 PRIMARY KEY(id)

PRIMARY KEY(id) : 设置主键约束

NOT NULL:设置列为非空 该字段不能为空

UNIQUE:设置唯一性约束,该字段不能出现重复值

DEFAULT 1.2 设置默认值约束, height DOUBLE(3,2) DEFAULT 1.2 height如果不输入,默认为1.2

FOREIGN KEY 设置外键约束

[外键]

1、设置外键有哪些注意事项?

① 只有INNODB 的数据库引擎支持外键 修改my.ini文件设置

default-storage-engine=INNODB

② 外键与参照列的数据类型必须相同,数值型要求长度与无符号都相同,字符串要求类型相同,长度可以不同

③ 设置外键的字段必须要有索引,若果没有索引,设置外键时会自动生成一个索引

2、设置外键的语法

[CONSTRAINT 外键名 FOREIGN KEY (外键字段) REFERENCES 参照表(参照字段)]

[ON DELETE SET NULL ON UPDATE CASCADE] --> 设置参照完整性

3、外键约束的参照完整性操作

参照操作 当对参照表的参照字段进行删除或更新是,外键表中的外键应如何应对

参照操作可选值 RESTRICT 拒绝参照表删除或更新参照字段(默认)

NO ACTION 与RESTRICT相同,但这个指令只在MySQL中生效

CASCADE 删除或更新参照表的参照字段时,外键表的记录同步删除更新

SET NULL 删除或更新参照表的参照字段时,外键表的外键设为NULL

显示表结构

SHOW COLUMNS FROM table1;

显示表的建表语句

SHOW CREATE TABLE table1;

删除表

DROP TABLE IF EXISTS table1;

修改表名 ALTER TABLE 旧表名 RENAME [TO] 新表名;

ALTER TABLE table1 RENAME TO table2;

同时修改多表 RENAME TABLE table2 TO table1【,`user` TO user1…………】;

RENAME TABLE table2 TO table1,`user` TO user1;

修改字段 列

ALTER TABLE 表名 CHANGE 旧列名 新列名 列定义 [FIRST | AFTER 某一列];

FIRST 将这个字段调整为表格度一列, AFTER 某一列 将这个字段放在某一列后面

ALTER TABLE table1 CHANGE `name` `username` VARCHAR(200) NOT NULL AFTER age;

MODIFY 只修改列定义,不能改名

ALTER TABLE table1 MODIFY `name` `username` VARCHAR(200) NOT NULL AFTER age;

删除表中某一列

ALTER TABLE table1 DROP height;

新增一列 必选部分 ALTER TABLE table1 ADD height DOUBLE(8,2)

ALTER TABLE table1 ADD height DOUBLE(8,2) DEFAULT 1.2 AFTER age;

新增多列 不能调整列的位置,只能插在最后

ALTER TABLE table1 ADD(
weight DOUBLE(3,2) UNSIGNED,
school VARCHAR(255)
);

增加主键约束

ALTER TABLE table1 ADD PRIMARY KEY(id);

删除主键约束

ALTER TABLE table1 DROP PRIMARY KEY;

新增唯一性约束

ALTER TABLE table1 UNIQUE KEY(username);

删除唯一性约束 由于创建唯一性约束时会默认创建索引,所以删除时,需删除索引

ALTER TABLE table1 DROP INDEX username;

设置默认值约束

ALTER TABLE table1 ALTER age SET DEFAULT 20;

删除默认值约束

ALTER TABLE table1 ALTER age DROP DEFAULT;

设置外键约束 必选部分 ALTER TABLE table1 ADD CONSTRAINT waijianming FOREIGN KEY (clsid) REFERENCES classes(id)

ALTER TABLE table1 ADD CONSTRAINT waijianming FOREIGN KEY (clsid) REFERENCES classes(id) ON DELETE SET NULL ON UPDATE CASCADE;

删除外键约束,由于创建外键时会默认创建索引,所以在删除外键后,需要在删除索引

ALTER TABLE table1 DROP FOREIGN KEY table1_fk_classes;

ALTER TABLE table1 DROP INDEX table1_fk_classes;

ALTER TABLE table1 DROP INDEX table1_fk_classes;
时间: 2024-08-02 01:35:39

数据库详细入门教程的相关文章

SQL Server 2005恢复数据库详细图文教程

不少需要用到sql2005的程序,有很多新手还是会操作,这里写个详细的图文教程送个菜鸟们,高手请飘过.适用于独立主机的朋友使用,如果你还没安装,请按照这个教程来安装 SQL Server 2005图文安装教程,超详细 下面是SQL Server 2005恢复数据库的详细过程 1:打开SQL Server Management Studio并登录,这个一般在开始--程序里面找到 2:鼠标右键单击数据库--新建数据库 3:弹出来的框里,填写数据库名称,我这里填写的是sqlqtdy,这个根据自己需求来

DeepFaceLab2.0 :超详细入门教程!

在这出门慌得一B,在家闲的D疼的日子,静下心来玩玩换脸黑科技也是一个不错的选择.新年新气象,DFL也迎来了2.0版本,虽然当前作者还在不断的修bug, 但是很多小伙伴肯定已经迫不及待的要去尝试新版本了. 今天我就针对2.0版本写一个详细的入门教程,争取做到只要会电脑的就能学会.话不多少直接进入正题,演示的软件版本为当天新鲜出炉的20200203版! 1. 获取软件以及安装 软件获取方法: QQ群:672316851 或者作者GITHUB:https://github.com/iperov/Dee

J2EE详细入门教程--人员登入

离上一次开发J2EE已经有一段时间了,项目完成后没有及时总结.现在重新做一个简单的人员登入来总结J2EE吧.不要小看这登入,麻雀虽小五脏俱全啊.以便自己日后参考和供新手学习 系统框架: 服务器:JBOSS7.1 数据库:oracle11g 前台:extjs4.2(对于前台设计头痛的可以选择,可以省去很多css) 数据操作:EJB3 Action处理:structs2.3 编程工具:eclipse 首先第一步肯定是环境配置啦 (记得自己先配好jdk  参考:http://jingyan.baidu

浏览器数据库 IndexedDB 入门教程

一.概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据. 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过4KB,且每次请求都会发送回服务器:LocalStorage 在 2.5MB 到 10MB 之间(各家浏览器不同),而且不提供搜索功能,不能建立自定义的索引.所以,需要一种新的解决方案,这就是 IndexedDB 诞生的背景. 通俗地说,IndexedDB 就是浏览器提供的本地数据库,它可

ant使用指南详细入门教程

一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 开发环境: 复制代码代码如下: System:WindowsJDK:1.6+IDE:eclipseant:1.9.1 二.优点 ant 是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点: 1.跨平台性:Ant是纯Java语言编写的,所以具有很好的跨平台性. 2.操作简单:Ant是由一个内置任务和可选任务组成的,

gulp详细入门教程

简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用她,我们不仅可以很愉快的编写代码,而且大大提高我们的工作效率. gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试.检查.合并.压缩.格式化.浏览器自动刷新.部署文件生成,并监听文件在改动后重复指定的这些步骤.在实现上

JS详细入门教程(上)

首先,我们看一下DOM级别和兼容性: 之前好像在某本上看到说DOM有0级,实际上,DOM0级标准是不存在的.DOM有1.2.3三个级别.DOM1级由两个模块组成(DOM Core和DOM HTML),其中,DOM核心规定的是如何映射基于XML的文档结构,以便简化对文档中任意部分的访问和操作.DOM HTML模块则在DOM核心的基础上加以扩展,添加了针对HTML的对象和方法.DOM2级在原来DOM的基础上又扩充了视图和用户界面事件.范围.遍历(迭代DOM文档的方法)等细分模块,而且通过对象接口增加

一款简单而不失强大的前端框架——【Vue.js的详细入门教程①】

↓— Vue.js框架魅力 —↓ 前言   Vue.js 是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.Vue 只关注视图层并且采用自底向上增量开发的设计. Vue.js作为一个后起的前端框架,借鉴了Angular .React等现代前端框架/库的诸多特点,取得了相当不错的成绩.Vue.js 自身不是一个全能框架——它只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.另一方面,在与相关工具和支

你的首个golang语言详细入门教程 | your first golang tutorial

本文首发于个人博客https://kezunlin.me/post/a0fb7f06/,欢迎阅读最新内容! your first golang tutorial go tutorial versions: go: 1.13.1 install wget https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.13.1.linux-amd64.tar.gz ll /usr/local/