浅学一下SQL 1
[ code ]

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

Reference