基础篇(SQL通用语法及分类)
SQL通用语法
1,SQL语句可以单行书写或多行书写,以分号结尾。
2,SQL语句可以使用空格/缩进来增强语句的可读性。
3,Mysql数据库的SQL语句不区分大小写,关键字建议大写。
4,注释:
- 单行注释:--注释内容或#注释内容(数据库特有)
- 多行注释:/*注释内容*/
SQL分类
DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)
DML:数据操作语言,用来对数据库表中的数据进行增删改
DQL:数据查询语言,用来查询数据库中表的记录
DCL:数据控制语言,用来创建数据库用户,控制数据库的控制权限
DDL
DDL-数据库操作
查询
查询所有数据库
SHOW DATABASES; |
查询当前数据库
SELECT DATABASE(); |
创建
CREATE DATABASE [IF NOT EXISTS] 数据库名[DEFAULT CHARSET字符集] [COLLATE排序规则]; |
删除
DROP DATABASE [IF EXISTS]数据库名; |
使用
USE 数据库名; |
注意
- []当中的内容是可选的
- [IF NOT EXISTS]是如果不存在该数据库名则创建,存在则不创建,不发生报错,防止在创建数据库名发生报错
- UTF8字符集长度为3字节,有些符号占4字节,所以推荐用utf8mb4字符集
- 注意查询当前数据库后面有一个()
DDL-表操作-查询
查询当前数据库所有表
SHOW TABLES; |
查询表结构
DESC 表名; |
查询指定表的建表语句
SHOW CREATE TABLE 表名; |
DDL-表操作-创建
CREATE TABLE 表名( 字段1 字段1类型[COMMENT 字段1注释], 字段2 字段2类型[COMMENT 字段2注释], 字段3 字段3类型[COMMENT 字段3注释], ...... 字段4 字段4类型[COMMENT 字段4注释] )[COMMENT 表注释]; |
注意:
- 最后一个字段没有逗号
- 在创建表时记得切换自己所需要的数据库,不要在系统数据库内创建表
创建表
查看表结构
DDL-数据类型
数据类型
- 精度是整个数值的长度,标度是小数点的长度’
例如:123.45
精度是5标度是2
- 有符号与无符号的区别
例如:年龄的数据类似可以用TINGINT(因为人的年龄在0-100多岁之间,而TINGINT的范围正好在这个范围之间),又因为年龄是没有负数的,所以我们要用无符号,在后面加一个UNSIGNED
age TINGINT UNSIGNED
字符串类型
- 定长char与变长varchar的区别
char(10)--性能好
varchar(10)--性能相对较差
注意:
- 10表示最多只能占10个字符,超过10个字符会报错
- 定长char即使用一个字符它也会占用10个字符的空间,未占用的字符用空格补位
- 变长varchar如果存储一个字符那么就占用一个字符的空间,如果存储两个字符就占用两个字符的空间
4,确定的值用char,不确定的值用varchar
日期类型
DDL-表操作-修改
添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMEN注释][约束]; |
案例:
为abb表增加一个新的字段”昵称“为nickname,类型为varchar(20)
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度); |
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新类型(长度)[COMMENT注释][约束]; |
案例:
将abb表中nickname改为usename ,类型为varchar(30)
删除字段
ALTER TABLE 表名 DROP 字段名; |
案例:
将abb表的字段usename删除
LATER TABLE abb DROP usename; |
修改表名
ALTER TABLE 表名 RENAME TO 新表名; |
案例:
将abb的表名改为acc表名
ALTER TABLE abb RENAME TO acc; |
删除表
DROP TABLE (IF EXISTS) 表名; |
删除指定的表,并重新创建该表
TRUNCATE TABLE 表名; |
注意:清除数据,结构还在
DML
DML的介绍
用来对数据库中的表的数据进行增删改
- 增加数据(INSERT)
- 修改数据(UPDATE)
- 删除数据(DELETE)
DML-增加数据
给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,....) VALUES(值1,值2,....); |
给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,..); |
值1对应表中第一个字段名,值2对应表中第二个字段名......
批量添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),...(值1,值2,...); |
INSERT INTO 表名 VALUES (值1,值2,...),...(值1,值2,...); |
注意
- 插入数据时,指定的字段顺序需要与值的顺序一一对应。
- 字符串和日期型数据应该在引号当中
- 插入的数据大小,应该在字段规定的范围内
DML-修改数据
UPDATE 表名 SET 字段名1=新值1,字段名2=新值2,...[WHERE条件]; |
注意:修改的语句条件可以有,可以没有,如果没有条件,会修改整张表的所有数据