一、SQL通用语法
1.书写
(1).SQL语句可以单行或多行书写,以分号结尾。
(2).SQL语句可以使用空格/缩进来强化语句的可读性。
(3).MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
(4).注释:
·单行注释:-- 注释内容 或 # 注释内容(MySQL特有)
·多行注释:/*注释内容*/
二、SQL分类
三、DDL
1.DDL-数据库操作
(1).查询
查询所有数据
SHOW DATABASES;
查询当前数据库
SELECT DATABASE();
(2).创建
CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET 字符集][COLLATE 排序规则];
注意[ ]里的可省略
演示
(1).查询
输入
SHOW DATABASES;
查询所有数据
可以看到里面有四个数据库,这四个数据库是安装完毕MySQL之后自带的数据库
(2).创建
1.默认
输入
CREATE DATABASE 你好;
创建了一个名为你好
的数据库
看到Query OK, 1 row affected (0.01 sec)
数据库就创建成功了
我们再次查询一下所有数据库
SHOW DATABASES;
那么我们再创建一个
你好
数据库会发生什么呢?
他会回这样一句ERROR 1007 (HY000): Can't create database '你好'; database exists
报错,原因是数据库已经存在了
这句话的意思是:不能创建一个’你好’数据库,因为数据库已经存在了
接下来我们输入一句
如果数据库已经存在就不要创建了,如果数据库不存在再创建
2.IF NOT EXISTS(如果数据库已经存在就不要创建了,如果数据库不存在再创建)
代码如下:
CREATE DATABASE IF NOT EXISTS 你好;
3.设置字符集(default charset 字符集名)
创建一个数据库名字为
你好世界
字符集为utf8mb4
代码如下:
CREATE DATABASE 你好世界 default charset utf8mb4;
(3).删除
删除指定数据库
DROP DATABASE [IF EXISTS]数据库名;
注意[ ]里的可省略
IF EXISTS :如果存在则删除
删除
世界
数据库
代码如下:
DROP DATABASE 世界;
我们再删除一次不存在的数据库
世界
试试看会发生什么
可以看到他报错了
如果不想让他报错可以加上
IF EXISTS
(4).使用
代码如下:
USE 数据库名;
我们试试看把!
USE 你好
:指我要切换到你好
数据库,来使用这个数据库
Database changged
:指数据库发生改变,已经切换到了你好
数据库
如果忘了当期处在的数据库怎么办呢?
那么就可以用上面的查询当前数据库
代码如下:
SELECT DATABASE();
下面是使用另一个数据库并查询的实例:
总结:DDL-数据库操作
查询:
1.查询所有数据库
SHOW DATABASES;
2.查询当前数据库
SELECT DATABASE();
创建
CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET 字符集][COLLATE 排序规则];
删除
DROP DATABASE [IF EXISTS]数据库名;
使用
USE 数据库名;
2.DDL-表操作-查询&创建
首先我们先查询一下我们有哪些数据库
接着我们使用一个数据库(
你好
)
(1).查询
查询当前数据库所有表
代码如下:
SHOW TABLES;
返回了一个Empty set
:空的集合
我们再使用系统的数据库试试吧
可以看到系统sys
里有好多的表
(2).创建
代码如下:
CREATE TABLE 表名{
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
·······
字段n 字段n类型[COMMENT 字段n注释]
}[COMMENT 表注释];
首先我们要查询我们有哪些数据库
然后我们使用
你好世界
数据库
我们创建表(
璃月员工表
)
接下来我们开始实践把
我们先创建一个璃月员工表
吧
验证数据库是否创建完毕
我们想要查询表里有哪些字段,类型
我们要展示详细信息
我来解释一下最后一行是什么东西把
总结-DDL-表操作-查询&创建
1.查询当前数据库所有表
SHOW TABLES;
2.查询表结构
DESC 表名;
3.查询指定表的建表语句
SHOW CREATE TABLE 表名;
4.创建表
CREATE TABLE 表名{
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
·······
字段n 字段n类型[COMMENT 字段n注释]
}[COMMENT 表注释];
3.DDL-表操作-数据类型
MySQL 中的数据类型有很多,主要分为三类,数值类型,字符串类型,日期时间类型。
(1).数值类型
1.整数类型
整数类型 | 含义 |
---|---|
TINYINT | 很小的整数 |
SMALLINT | 小的整数 |
MEDIUMINT | 中等大小的整数 |
INT或INTEGER | 普通大小的整数 |
BIGINT | 极大整数值 |
例一:在一张表中描述用户的年龄
第一种(比较占用内存空间)
年龄 INT,
第二种
年龄 TINYINT,
因为年龄不会出现负数
年龄 TINYINT UNSIGNED,
2.浮点类型
浮点类型(小数) | 含义 |
---|---|
FLOAT(m,n) | 单精度 |
DOUBLE(m,n) | 双精度(m规定DOUBLE的整个长度,n规定小数点后面的长度) |
例一:在一张表中描述用户的分数(100.0,85.5,75.5…)
分数 DOUBLE(4,1),
(2).字符串类型
字符串类型 | 含义 | 字节 |
---|---|---|
char(n) | 固定长度,储存英文字符;储存定长数据,存入数据长度不够自动补上空格,不能包含中文字符 | 1 |
nchar(n) | 比char(n) 多了 一个可储存中文 | |
varchar(n) | 可变长度,储存英文字符,不能包含中文字符,(常用场景,地址,名称)(节省空间) | 2 |
nvarchar(n) | 比varchar(n) 多一个可储存中文 | |
text | 长文本数据 |
例一:在一张表中描述用户的用户名
用户名 varchar(50),
例二:在一张表中描述用户的性别(男/女)
性别 nchar(1),
(3).日期时间类型
日期时间类型 | 范围 | 格式 | 描述 |
---|---|---|---|
DATE | 1000 - 01 - 01至9999 - 12 - 31 | 年 - 月 - 日 | 日期值 |
TIME | -838 : 59 : 59 至 838 : 59 : 59 | 时 :分 :秒 | 时间值或持续时间 |
YEAR | 1901 至 2155 | 年 | 年份值 |
DATETIME | 1000 - 01 - 01 00 : 00 : 00 至 9999 - 12 - 31 23 : 59 : 59 | 年 - 月 - 日 时:分:秒 | 混合日期和时间值 |
TIMESTAMP | 1970 - 01 - 01 00 : 00 : 01 至 2038 - 01 - 19 03 : 14 : 07 | 年 - 月 - 日 时:分:秒 | 混合日期和时间值,时间戳 |
例一:在一张表中描述用户的生日
生日 DATE,
案例:
我们先创建一个数据库名为
员工信息
CREATE DATABASE 员工信息;
使用数据库
员工信息
USE 员工信息;
创建一张表名为
员工信息表
CREATE TABLE 员工信息表(
-> 编号 INT COMMENT'编号(纯数字)',
-> 员工工号 VARCHAR(10) COMMENT'工号',
-> 员工姓名 NVARCHAR(10) COMMENT'姓名',
-> 性别 NCHAR(1) COMMENT'性别',
-> 年龄 TINYINT UNSIGNED COMMENT'年龄',
-> 身份证号 CHAR(18) COMMENT'身份证号',
-> 入职时间 DATE COMMENT'入职时间'
-> )COMMENT'员工表';
我们完成之后查询一下
SHOW TABLES;
4.DDL-表操作-修改&删除
(1).修改
1.添加字段
代码结构如下
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT注释][约束];
案例:
为员工信息表
添加一个新的字段昵称
,类型为varcahr(20)
。
我们添加的代码为
ALTER TABLE 员工信息表 ADD 昵称 varchar(20);
好的我们添加成功了,让我们查询一下
DESC 员工信息表;
2.修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
3.修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT注释][约束];
案例:
将员工信息表
的昵称
字段修改为牛逼的名称
,类型为varchar(30)
代码如下:
ALTER TABLE 员工信息表 CHANGE 昵称 牛逼的名称 varchar(30) COMMENT'牛逼的名称';
我们查看一下表结构
4.删除字段
ALTER TABLE 表名 DROP 字段名;
案例:
将员工信息表
的字段牛逼的名称
删除。
代码如下:
ALTER TABLE 员工信息表 DROP 牛逼的名称;
接下来我们查看一下
5.修改表名
ALTER TABLE 表名 RENAME TO 新表名;
案例:
将员工信息表
改名为璃月员工表
。
ALTER TABLE 员工信息表 RENAME TO 璃月员工表;
接下来我们查询一下
6.删除表
DROP TABLES [IF EXISTS] 表名;
7.删除指定表,并重新创建该表(删除表里的数据)
TRUNCATE TABLE 表名;