SQL的通用语法
以分号结尾,用空格/缩进来增强可读性,对代码的大小写不敏感。
单行注释用--
或#
,多行注释用/**/
。
SQL语言可以分成以下几类:
DDL (Data Definition Language): 数据定义语言,用来定义数据库对象。
DML (Manipulation): 数据操作语言,用来对数据表中的数据进行增删改。
DQL (Query): 数据查询语言,查询数据库表的记录
DCL (Control): 数据控制语言,创建数据库用户,控制访问权限。
DDL 数据定义语言
数据库操作指令
show databases; --查询所有数据库
select database(); --查询当前数据库
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则]; --创建数据库,中括号里的内容是可选的
drop database [if exists] 数据库名; --删除数据库
use 数据库名; --使用数据库
表操作指令
MySQL支持的数据类型
可以分为三类:数值类型,字符串类型以及日期类型。
数值类型有:tinyint (1 byte), smallint (2 bytes), mediumint (3 bytes), int/integer (4 bytes), bigint (8 bytes), float, double。此外还有decimal,是用来精确描述小数的,大小根据精度(总共几位)和标度(有几位小数)而定。如果需要设置成无符号数,则在后面加unsigned。
字符串类型有:char (0 - 255 bytes)定长字符串,varchar (0 - 65535 bytes)变长字符串,需要指定长度,如char(10);tinyblob (0 - 255 bytes) 不超过255字节的二进制数据,tinytext (0 - 255 bytes) 短文本字符串;blob, text (0 - 65535 bytes); mediumblob, mediumtext (0 - 2^24 bytes); longblob, longtext (0 - 2^32 bytes)。
日期类型有:date(yyyy-mm-dd, 3bytes), time(hh:mm:ss), 3 bytes), year(yyyy, 1 byte), datetime (8bytes, yyyy-mm-dd hh:mm:ss), timestamp(4 bytes, 时间戳)。
查询
show tables; --查询所有表
desc 表名; --查询表结构
show create table 表名; --查询指定表的建表语句
如何创建一个表结构
create table 表名(
字段1 字段1类型 [comment 字段1注释],
字段2 字段2类型 [comment 字段2注释],
...
字段n 字段n类型 [comment 字段n注释]
)[comment 表注释];
如何修改表
修改数据类型
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
删除字段
alter table 表名 drop 字段名;
修改表名
alter table 表名 rename to 新表名;
删除表,重新创建表
drop table [if exists] 表名;
truncate table 表名;
DML 数据操作语言
给指定字段添加数据
insert into 表名 (字段1名, 字段2名, ...) values (值1,值2, ...), (...), (...);
--可以批量插入多条记录
给全部字段添加数据
insert into 表名 values (值1,值2, ...), (...), (...); --可以批量插入多条记录
修改数据
update 表名 set 字段名1 = 值1, 字段名2 = 值2, ... [where 条件];
-- 如 where id = 1
-- 如果没有条件,会修改整张表
删除数据
delete from 表名 [where 条件];
-- 如果不加where的话那就全删了
delete
不可以用来删除某一个字段值,如果需要,则用update
把这个字段改为null
。