MySQL基础篇

一、常用开发工具

1、Navicate

Navicat是一套快速、可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设。它的设计符合数据库管理员、开发人员及中小企业的需要。Navicat 是以直觉化的图形用户界面而建的,让你可以以安全并且简单的方式创建、组织、访问并共用信息。 下载网址Navicat | 支持 MySQL、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 破解方式https://www.jb51.net/database/710931.html

2、SQLyog

MySQL可能是世界上最流行的开源数据库引擎,但是使用基于文本的工具和配置文件可能很难进行管理。SQLyog提供了完整的图形界面,即使初学者也可以轻松使用MySQL的强大功能。其拥有广泛的预定义工具和查询、友好的视觉界面、类似 Excel 的查询结果编辑界面等优点。 下载网址SQLyog Ultimate - Powerful MySQL Development and Administration - Webyog

3、使用客户端工具

1:创建一个数据库,选择编码为utf-8 2: 创建数据表 3: 往数据表里面存储数据

二、SQL语句基础

结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存放数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

1.SQL分类

1.1 数据定义语言(DDL)

数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由CREATE、ALTER与DROP三个语法所组成,最早是由 Codasyl (Conference on DataSystems Languages) 数据模型开始,现在被纳入 SQL 指令中作为其中一个子集。

1.2 数据操纵语言(DML)

数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。

1.3 数据查询语言(DQL)

数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有FROM,WHERE,GROUP BY,HAVING和ORDER BY。这些DQL保留字常与其他类型的SQL语句一起使用。

1.4 数据控制语言(DCL)

数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。由GRANT 和 REVOKE 两个指令组成。DCL以控制用户的访问权限为主,GRANT为授权语句,对应的REVOKE是撤销授权语句。

2.DDL

数据定义语言 (Data Definition Language, DDL) ,它主要包括三个关键字:create ,alter , drop(数据库关键字不分大小写 ),主要操作对象 有数据库、表、索引、视图等.

2.1 操作数据库

创建数据库 create database 数据库名称; 使用这个数据库 use 数据库名称; 删除这个数据库  drop database 数据库名称; 注意:执行的SQL语句不区分大小写,一个SQL语句末尾要加上 ;

2.2 操作表结构

表【TABLE】是数据库中存储数据的载体。

2.2.1 语法结构

创建数据表 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... ); 示例:创建用户表T_USER CREATE TABLE T_USER ( id int(3) , user_name varchar(30) );

2.2.2 添加注释

创建数据表并添加注释 CREATE TABLE 表名称 ( 列名称1 数据类型 COMMENT '列1注释', 列名称2 数据类型 COMMENT '列2注释', 列名称3 数据类型 COMMENT '列3注释', .... )COMMENT='表注释'; 示例:创建用户表并添加注释 CREATE TABLE T_USER ( id int(3), user_name varchar(30) COMMENT '用户名' )COMMENT='用户表';

对已有表添加注释 ALTER TABLE 表名称 MODIFY COLUMN 列名 数据类型 COMMENT '列注释' ; 示例:对已有用户表添加注释 ALTER TABLE t_user MODIFY COLUMN user_name varchar(20) COMMENT 'aaa' ;

2.2.3 删除表

删除表 DROP TABLE 表名; 示例:删除用户表 DROP TABLE T_USER;

2.2.4 修改表

添加字段 ALTER TABLE 表名 ADD 列名 数据类型; 示例:添加字段 ALTER TABLE T_USER ADD address VARCHAR(2);

修改字段类型 ALTER TABLE 表名 MODIFY 列名 数据类型; 示例:修改字段类型 ALTER TABLE T_USER MODIFY address VARCHAR(50);

修改字段名称 ALTER TABLE 表名 RENAME COLUMN 旧列名 TO 新列名; 示例:修改字段名称 ALTER TABLE T_USER RENAME COLUMN address TO address666;

删除字段 ALTER TABLE 表名 DROP COLUMN 列名; 示例:删除字段 ALTER TABLE T_USER DROP COLUMN address666;

2.2.5 表结构的约束

对已有表添加非空约束

ALTER TABLE 表名 CHANGE 旧列名 新列名 INT NOT NULL COMMENT '列注释'; 示例:对已有用户表添加非空约束 ALTER TABLE T_USER CHANGE id id INT NOT NULL COMMENT '主键';

创建数据表并添加非空约束 CREATE TABLE 表名 ( 列名1 数据类型 NOT NULL COMMENT '列名1注释', 列名2 数据类型 COMMENT '列名2注释', 列名3 数据类型 COMMENT '列名3注释' DEFAULT 18 )COMMENT='表注释' ;

示例:创建用户表并添加非空约束 CREATE TABLE T_USER ( id INT(5) NOT NULL COMMENT '主键', user_name VARCHAR(20) COMMENT '账号' , age INT(2) COMMENT '年龄' DEFAULT 18 )COMMENT='用户表' ;

默认值 创建数据表并设置默认值 CREATE TABLE 表名 ( 列名1 数据类型 DEFAULT 默认值 ); 示例:创建数据表并设置默认值 CREATE TABLE T_USER ( age INT(2) COMMENT '年龄' DEFAULT 18 );

创数据表添加唯一约束 唯一约束该字段中不能出现相同的值,null除外 CREATE TABLE 表名 ( 列名1 数据类型 UNIQUE COMMENT '列1注释', 列名2 数据类型 COMMENT '列2注释', 列名3 数据类型 COMMENT '列3注释' DEFAULT 默认值 )COMMENT='表注释' ; 示例:创用户表添加唯一约束 CREATE TABLE T_USER ( id INT(5) UNIQUE COMMENT '主键', user_name VARCHAR(20) COMMENT '账号' , age INT(2) COMMENT '年龄' DEFAULT 18 )COMMENT='用户表' ;

对已有表添加唯一约束 ALTER TABLE 表名 add CONSTRAINT 约束名 UNIQUE(列名); alter table 表名 add unique (列名); 示例:对已有表添加唯一约束 ALTER TABLE t_user add CONSTRAINT unique_name UNIQUE(user_name); alter table t_user add unique (user_name);

创表添加主键 能唯一标识一条记录的字段不能为空,唯一约束,只能有一个主键。 CREATE TABLE 表名 ( 列名1 数据类型 PRIMARY KEY COMMENT '列名1注释', 列名2 数据类型 COMMENT '列名2注释', 列名3 数据类型 COMMENT '列名3注释' DEFAULT 默认值 )COMMENT='表注释' ; 示例:创表添加主键 能唯一标识一条记录的字段不能为空,唯一约束,只能有一个主键。 CREATE TABLE T_USER ( id INT(5) PRIMARY KEY COMMENT '主键', user_name VARCHAR(20) COMMENT '账号' , age INT(2) COMMENT '年龄' DEFAULT 18 )COMMENT='用户表' ;

对已有数据表添加联合主键:  多个字段组合的信息是不能出现重复的 ALTER TABLE 表名 ADD PRIMARY KEY (列名1,列名2); 示例:对已有数据表添加联合主键:  多个字段组合的信息是不能出现重复的 ALTER TABLE t_user ADD PRIMARY KEY (id, user_name);

创表添加外键 外键就是在主表中可以重复出现,但是它的值是另一个表的主键,外键使两个表相关,外键可约束表的数据的更新;外键和主键表联系,数据类型要统一,长度(存储大小)要统一,在更新数据的时候会保持一致性 CREATE TABLE 表名 ( 列名1 数据类型 PRIMARY KEY COMMENT '列名1注释', 列名2 数据类型 COMMENT '列名2注释', 列名3 数据类型 COMMENT '列名3注释' DEFAULT 默认值, 列名4 数据类型 , CONSTRAINT 外键名 FOREIGN KEY(列名) REFERENCES 外部表名(外部表列名) )COMMENT='表注释' ; 示例:创表添加外键 外键就是在主表中可以重复出现,但是它的值是另一个表的主键,外键使两个表相关,外键可约束表的数据的更新;外键和主键表联系,数据类型要统一,长度(存储大小)要统一,在更新数据的时候会保持一致性 CREATE TABLE T_USER ( id INT(5) PRIMARY KEY COMMENT '主键', user_name VARCHAR(20) COMMENT '账号' , age INT(2) COMMENT '年龄' DEFAULT 18, deptid INT(30) , CONSTRAINT FK_DEPT_ID FOREIGN KEY(deptid) REFERENCES T_DEPT(dept_id) )COMMENT='用户表' ;

对已有数据表添加外键 ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(列名) REFERENCES 外部表名(外部表列名); 示例:对已有数据表添加外键 ALTER TABLE T_USER ADD CONSTRAINT FK_DEPT_ID FOREIGN KEY(deptid) REFERENCES T_DEPT(dept_id); 注意:外键字段的级联关系,如果我们要删除外键对应的主键记录,那么必须要先删除该注解对应的所有的外键记录,否则删除不成功,实际开发中我们对主键的使用比较少。

check 粒度更细的约束。 CREATE TABLE 表名 ( 列名1 数据类型 PRIMARY KEY COMMENT '列名1注释', 列名2 数据类型 COMMENT '列名2注释', 列名3 数据类型 COMMENT '列名3注释', CHECK (条件表达式) )COMMENT='表注释' ; 示例:check 粒度更细的约束。 CREATE TABLE T_USER ( id INT(5) PRIMARY KEY COMMENT '主键', user_name VARCHAR(20) COMMENT '账号' , age INT(3) COMMENT '年龄' , CHECK (age > 0 AND age < 40) )COMMENT='用户表' ;

2.2.6 字段类型

MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

日期和时间类型 字符串类型

3.DML

数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据 访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。

3.1 INSERT

插入单行记录

INSERT into 表名(列名1,列名2,列名3,…) values(值1,值2,值3,…);

插入多行记录

复制表结构和数据 create table 目标表名 as select * from 来源表名; 复制表结构 create table 目标表名 as select * from 来源表名 where 1 <> 1; 把其他表结构中的数据插入到表中 insert into 目标表(列名1,列名2) select 列名1,列名2 from 来源表;

3.2 UPDATE

语法结构 update 表名 set 列名=值,列名=值 where 条件表达式;


版权声明:本文为qq1196676009原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。