SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作,数据检索以及数据维护的标准化语言
使用SQL语句,程序员和数据库管理员可以完成如下的任务:
SQL语句的分类:
SQL语句的书写规范:
1、在数据库系统中,SQL语句不区分大小写(建议用大写) 。
2、字符串常量区分大小写。
3、SQL语句支持单行||多行书写,但必须以;结尾。
4、关键字||词汇不能跨行书写。
5、支持空格或缩进以提升语句的可读性。
6、子语句通畅位于独立行,便于编辑,提高可读性
数据库名称可以由字母、数字和下划线组成。【】表示可写可不写
在MySQL中,若没有指定字符集则数据表及表中的字符将使用默认字符集latin1
语法:CREAT DATABASE 数据库名称【库选项】;

库选项表示设置数据库的相关特性,如字符集CHARSET,校对集COLLATE等等
在创建数据库时,如果数据库名已存在则程序会报错,因此我们可以在数据库名前添加IF NOT EXISTS来表示如果创建数据库名已存在则忽略此操作
语法:CREATE DATABASE IF NOT EXISTS 数据库名称【库选项】;

数据库的创建就是在存储数据的文件夹data中创建一个与数据库同名的目录,因此我们也可以通过在data下创建目录的方式来完成数据库的创建
查看MYSQL服务器下所有数据库:
SHOW DATABASES;

查看指定数据库的创建信息:
SHOW CREATE DATABASE 数据库名称;

在对数据和数据表进行操作前,首先需要选择数据库
语法:USE 数据库名称;

补充:我们可以在登录mysql服务器时选择数据库
MySQL -u用户名 -p密码 数据库名
删除数据库就是清除数据库中的所有数据,回收为数据库分配的内存空间
语法:DROP DATABASE 数据库名称;

在删除数据库时,若待删除的数据库不存在则程序会报错,因此我们可以在删除数据库时加入IF EXISTS
语法:DROP DATABASE IF EXISTS 数据库名称;
SELECT DATABASE();

SELECT VERSION();

SELECT USER();

SELECT User,Host [,PassWord] FROM mysql.user;

注释
在服务器实际运行时被忽略的注释
单行注释:以#或--进行单行注释,但在使用--时须在最后一个-后添加至少一个控制字符(如空格、制表符、换行符等)防止注释--与减法运算的混淆
多行注释:使/* 注释内容 */进行多行注释
Mysql自带数据库(系统库):
information_schema:主要存储了系统中的一些数据库对象信息,如用户信息,列信息,权限信息,字符集信息,分区信息等(数据字典)
performance_schema:主要存储了数据库服务器的性能参数
mysql:主要存储了系统的用户权限信息和帮助文档
sys:5.7后新增产物,information_schema和performance_schema的结合体,并以视图形式显示出来的,查询出更加令人容易理解的数据。
原则: 不轻易访问,不轻易修改,不轻易删除!!
在MySQL数据库中,所有数据都存储在数据表中
在创建数据表时,应先选择数据库即USE 数据库名
其语法如下:
CREATE 【TEMPORARY】TABLE 【IF NOT EXISTS】表名(
列名(字段名) 类型,
列名(字段名) 类型,
列名(字段名) 类型,
列名(字段名) 类型,
列名(字段名) 类型
) ENGINE = 存储结构;

TEMPORARY表示临时表,在当前会话中可见,当会话关闭时自动删除
字段名表示数据表的列名
字段类型表示设置字段中保存的数据类型
字段属性表示字段的默写特殊约束条件
表选项用于设置表的相关特性,如存储引擎(ENGINE)、字符集(CHARSET)
在创建表时可以使用COMMENT来添加注释内容,并将其保存到表结构中
在操作数据表时可以不先选择数据库,可以直接将表名的位置改为数据库.表名的形式,其语法如下:
CREATE TABLE 数据库.表名;
语法:SHOW TABLES 【FROM 数据库名】【LIKE 匹配模式】;

不添加【LIKE 匹配模式】则表示查看当前数据库中的所有数据表
【LIKE 匹配模式】中匹配模式符有两种分别为“%”和“_”,前者表示一个或多个字符代表任意长度的字符串,也可以为0;后者仅表示一个字符
LIKE后的匹配模式必须使用单引号或者双引号包裹
查看数据表的相关信息,如数据表的名称、存储引擎、创建时间等
语法:SHOW TABLE STATUS【FROM 数据库】【LIKE 匹配模式】;

在MySQL中提供了两种修改数据表名称的方式
语法一:ALTER TABLE 旧表名 RENAME 【TO/AS】新表名;
语法二:ALTER TABLE 旧表名1 TO 新表名1【,旧表名2 TO 新表名2】...;
语法:ALTER TABLE 表名 表选项 【=】 值;
MYSQL提供的DESCRIBE语句可以查看数据表中的所有字段或指定字段的信息,包括字段名、字段类型等
语法格式一:查看所有字段的信息
{DESCRIBE/DESC} 数据表名;
语法格式二:查看指定字段的信息
{DESCRIBE/DESC} 数据表名 字段名;
语法:SHOW CREATE TABLE 表名;
语法格式一:SHOW 【FULL】 COLUMNS FROM 数据表名 【FROM 数据库名】;
语法格式二:SHOW 【FULL】 COLUMNS FROM 数据库名.数据表名;
可添加选项FULL表示显示详细信息,不添加FULL情况下与DESC语句查看的信息相同
使用FULL后除了DESC语句查看到的信息以外还可看到字段的权限,COMMENT注释的内容等
仅修改数据表的字段名可使用CHANGE实现
其语法如下:
ALTER TABLE 表名 CHANGE 【COLUMN】旧字段名 新字段名 字段类型【字段属性】;
MYSQL中修改字段类型通常使用MODIFY来实现
其语法如下:
ALTER TABLE 数据表名 MODIFY 【COLUMN】字段名 新类型 【字段属性】;
字段的存储位置为字段编写的先后顺序,在调整字段位置时也可使用MODIFY来实现
其语法如下:
ALTER TABLE 数据表名
MODIFY 【COLUMN】字段名1 数据类型【字段属性】【FIRST/AFTER 字段名2】;
可使用ADD来增加新的字段
语法格式一:新增一个字段,可指定位置
ALTER TABLE 数据表名
ADD 【COLUMN】新字段名 字段类型【FIRST/AFTER 字段名2】;
语法格式二:同时新增多个字段
ALTER TABLE 数据表名
ADD 【COLUMN】(新字段名1 字段类型1,新字段名2 字段类型2,...);
通过DROP完成
语法:ALTER TABLE 数据表名 DROP 【COLUMN】字段名;
删除数据库中已存在的表,删除数据表的同时,其中的数据都将被删除
DROP 【TEMPORARY】TABLE【IF EXISTS】数据表1【,数据表2】...;
- 复制表的结构有两种手段
-
- 方式1:
- 在 CREATE TABLE 语句的末尾加入 LIKE 源表;
- >>> CREATE TABLE Students1 LIKE Students;
-
- 方式2:
- 在 CREATE TABLE 语句末尾添加 SELECT 关键字;
- >>> CREATE TABLE Students2 SELECT * FROM Students;
-
- 方法3:
- 如果已经有一张表了(结构一定要和源表一样)
- >>> INSERT INTO 表名 SELECT * FROM 源表;