前 言
mysql
mysql语法--本篇学习都是通过使用Navicat Premium(数据库管理工具),连接mysql数据.
本篇学习主要有两个部分:
一、创建用户,创建数据库,给用户分配权限,删除用户权限。
二、MYSQL中常见的数据类型
三、表-创建表、主键、外键
四、数据库设计的三大范式
以下所有代码全部在新建查询表里面使用mysql语法编辑。
1、创建用户,创建数据库,给用户分配权限,删除用户权限。 |
-- SQL 单行注释
创建用户:CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
主机名可以为空,为空默认为%权限,表示所有主机可连接。
给用户分配权限: GRANT 权限名 ON 数据库名.表明 TO 用户名@主机名
删除用户权限: REVOKE 权限名 ON 数据库名.表明 FROM 用户名@主机名;
创建数据库: CREATE DATABASE [IF NOT EXISTS] 数据库名[CHARACTER SET[=] 'UTF8'];
<<<如果省略 [IF NOT EXISTS] 在重复创建数据库时,会报错!
查询本机中所有的数据库:SHOW DATABASES
↓使用mydb这个数据库↓,表示下面的查询都将默认针对mydb数据库
USE mydb;
查询数据库中所有数据表: SHOW TABLES [FROM 数据库]
2 MYSQL中常见的数据类型 |
一、字符型:
① CHAR(N):固定N个字符长度的字符串,如果长度不够会自动空格补齐;
② VARCHAR(N):存储可边长度的字符节。常用的 0~255;
③ TEXT:存储可变长度的字符串。(常用语发布文章等大段内容)0~((2^16-1)*10^2);
④ TINYTEXT:0~((2^8-1)*10);
⑤ MEDIUMTEXT:0~((2^24-1)*10^3);
⑥ LINGTEXT:0~((2^32-1)*10^4);
⑦ enum("男","女"):枚举类型,字段只能容纳枚举出的数据。
二、整形:
① 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更精确
3、表-创建表、主键、外键 |
【创建表】:
CREATE TABLE [IF NOT EXISTS] 表单名(
IF NOT EXISTS 可以省略,省略后重复创建报错.如果不省略,则创建时会检测表是否已存在,如果表存在则不再执行创建语句
定义列:列名 数据类型 列表关键字
)
常用的列定义关键字:
① UNSIGNED: 设置列表为无符号列。只能设置类型为数字类型的列
② AUTO_INCREMENT PRIMARY KEY 设置列为自动增长列。自动增长列必须是主键。
③ NOT null:设置列为非空约束
④ UNIQUE:设置唯一性约束。该字段不能出现重复值。
⑤ DEFAULT: 设置默认值约束。
【主键】:
1、主键的注意事项? 主键默认为空!主键默认唯一性约束!
只有主键才能设置自动增长(主键不一定自动增长,自动增长必须是主键)
2、设置主键的方式?
① 在列定义是设置: age SMALLINT(3) PRIMARY KEY,
② 在列定义完成后设置: PRIMARY KEY(age),
【外键】
1、设置外键有哪些注意事项
① 只有innodb的数据库引擎支持外键,修改mysql.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;
CREATE TABLE IF NOT EXISTS tb1( -- IF NOT EXISTS 可以省略,省略后重复创建报错.如果不省略,则创建时会检测表是否已存在,如果表存在则不再执行创建语句id INT(3), `name` VARCHAR(255) NOT null, -- name是系统关键字,所以使用反引号``包裹age SMALLINT(3) AUTO_INCREMENT PRIMARY KEY, lalala INT UNIQUE, height DOUBLE(3,2) DEFAULT 1.2 -- 设置默认值约束:默认值为1.2-- PRIMARY KEY(age));create table if not exists classes( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, classname VARCHAR(255) NOT NULL );CREATE table if not EXISTS `user`( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, clsId INT UNSIGNED, `name` VARCHAR(255) NOT NULL, CONSTRAINT user_fk_classes FOREIGN KEY (clsid) REFERENCES classes(id) ON DELETE SET NULL on update CASCADE)-- auto_increment-- 显示表结构SHOW TABLES;-- 显示表内容结构SHOW COLUMNS FROM TB1;-- 现实表的建表语句show create TABLE tb1;-- 删除表DROP TABLE IF EXISTS TB1;DROP TABLE IF EXISTS classes;DROP TABLE IF EXISTS `user`;-- 修改表名 ALTER table tb1 rename tb2;-- 修改字段 列-- alter table 表名 change 旧列名 新列名 列定义 [first|after某一列]-- first 将这个字段调整为表格第一列; after某一列: 将这个字段放到某一列后面alter table tb1 change height width VARCHAR(200) not NULL FIRST; -- 删除表中某一列alter table tb1 drop name;-- 新增一列:必选部分:alter table tb1 add haha DOUBLE(8,2)alter table tb1 add haha DOUBLE(8,2) DEFAULT 1.2 after age;-- 新增多列:不能调整列的位置,只能插在最后。alter table tb1 add ( ha1 DOUBLE(3,2) UNSIGNED, ha2 VARCHAR(255) );-- 同时修改多表明 rename table tb3 to tb1[,`USER`to user1];rename table tb2 to tb1,`USER`to user1;-- 增加主键约束alter table tb1 add PRIMARY KEY(id);-- 删除主键约束alter table tb1 drop PRIMARY KEY;-- 新增唯一性约束ALTER table tb1 add unique key(ha1);-- 删除唯一性约束:由于创建唯一性约束会默认创建索引,所以删除时,需删除索引ALTER table tb1 drop index ha1; -- 设置默认值约束:前提必须设置default 属性ALTER table tb1 alter ha1 set default 20;-- 删除默认值约束ALTER table tb1 alter haha drop default;-- 设置外键约束 必选部分 alter table tb1 add foreign key (clsid)REFERENCES classes(id)alter table tb1 add constraint waijianming foreign key (clsid)REFERENCES classes(id) ON DELETE SET NULL on update CASCADE;-- 删除外键约束,由于常见外键时会生成索引,所以删除外键后,需要删索引。alter table tb1 drop foreign key waijianming;alter table tb1 drop INDEX waijianming; SHOW COLUMNS FROM TB1;
4 数据库的三大范式 |
1、第一范式(1NF):数据表中的每一列(字段),必须是不可拆分的最小单元。也就是确保每一列的原子性。
例如: userInfo:'山东省烟台市 13181621008'
userads:'山东省烟台市' userTel:'13181621008'
2、第二范式(2NF):满足1NF后,要求:表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系。 也就是说,一个表只描述一件事情。
例如: 订单表,只能描述订单相关的信息,所以所有的字段都必须与订单ID相关;
产品表,只能描述产品相关的信息,所以所有的字段都必须与产品ID相关;
因此: 不能在同一张表中同事出现订单信息与产品信息。
3、第三范式(3NF):表中的每一列都要与主键直接相关,而不是间接相关。(表中的每一列,只能依赖于主键)。
例如:订单表中,需要有客户相关信息,在分理处客户表之后。订单表中,只需要有一个用户ID即可。而不能有其他的客户信息。因为,其他的用户信息是直接关联于用户ID,而不是关联于订单ID。
【第二范式与第三范式的本质区别】
在于没有分出两张表,第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表。
第三范式是要求,已经分好了多张表的化,那么,一张表中只能有另一张表中的ID(主键),而不能有其他的任何信息(其他的任何信息,一律用主键在另一表查询)
学习时候的笔记,可能会有一些错误的地方,欢迎各位的批评指点。
反思,复盘,每天收获一点---------------------期待更好的自己
以上是学习基础mysql语法的详细内容。更多信息请关注PHP中文网其他相关文章!

在数据库优化中,应根据查询需求选择索引策略:1.当查询涉及多个列且条件顺序固定时,使用复合索引;2.当查询涉及多个列但条件顺序不固定时,使用多个单列索引。复合索引适用于优化多列查询,单列索引则适合单列查询。

要优化MySQL慢查询,需使用slowquerylog和performance_schema:1.启用slowquerylog并设置阈值,记录慢查询;2.利用performance_schema分析查询执行细节,找出性能瓶颈并优化。

MySQL和SQL是开发者必备技能。1.MySQL是开源的关系型数据库管理系统,SQL是用于管理和操作数据库的标准语言。2.MySQL通过高效的数据存储和检索功能支持多种存储引擎,SQL通过简单语句完成复杂数据操作。3.使用示例包括基本查询和高级查询,如按条件过滤和排序。4.常见错误包括语法错误和性能问题,可通过检查SQL语句和使用EXPLAIN命令优化。5.性能优化技巧包括使用索引、避免全表扫描、优化JOIN操作和提升代码可读性。

MySQL异步主从复制通过binlog实现数据同步,提升读性能和高可用性。1)主服务器记录变更到binlog;2)从服务器通过I/O线程读取binlog;3)从服务器的SQL线程应用binlog同步数据。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

MySQL的安装和基本操作包括:1.下载并安装MySQL,设置根用户密码;2.使用SQL命令创建数据库和表,如CREATEDATABASE和CREATETABLE;3.执行CRUD操作,使用INSERT,SELECT,UPDATE,DELETE命令;4.创建索引和存储过程以优化性能和实现复杂逻辑。通过这些步骤,你可以从零开始构建和管理MySQL数据库。

InnoDBBufferPool通过将数据和索引页加载到内存中来提升MySQL数据库的性能。1)数据页加载到BufferPool中,减少磁盘I/O。2)脏页被标记并定期刷新到磁盘。3)LRU算法管理数据页淘汰。4)预读机制提前加载可能需要的数据页。

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver Mac版
视觉化网页开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

WebStorm Mac版
好用的JavaScript开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)