Mysql通用语法
- SQL可多行书写,分号结尾
- SQL语句可以使用空格进行缩进,增加可读性
- MYSQL,不区分大小写,但关键字推荐使用大写
- 注释:
单行注释:--注释内容 或#注释内容
多行注释:/*注释内容*/
- SQL语句中[ ]中的内容可以省略;
SQL分类:
- DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)
- DML:数据操作语言,用来对数据库表中的数据进行增制改
- DQL:数据查询语言,用来查询数据库中表的记录
- DCL:数据控制语言,用来创建数据库用户、控制数据库的访问权限
- DDL语句(数据定义语言,主要用来操作数据库的定义)
- 操作数据库:
查询
查询所有数据库:SHOW DATABASES;
查询当前数据库:SELECT DATABASE();
创建数据库:CREATE DARABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集] [ COLIATE 排列规律];
[IF NOT EXISTS] 代表:如果有同名数据库则不创建,否则,创建;
删除数据库:DROP DATABASE[IF EXISTS] 数据库名;
使用数据库:USE 数据库名;
- 操作数据库中的表结构:
DDL-表结构-查询
查询当前数据库所有表结构:SHOW TABLES;
表结构的创建:
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
)[COMMENT 表注释];
创建student(学生数据库表)
create table studenttada(
id int comment '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
);
查询当前表结构:DESC 表名;
查询指定表的建表语句:SHOW CREATE TABLE 表名;
DDL-表操作-数据类型:
分类 | 类型 | 大小 | 范围 | 格式 | 描述 |
日期类型 | DATE | 3 | 1000-01-01至9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59至838:59:59 | HH:MM:SS | 时间值或持续时间 | |
YEAR | 1 | 1901至2155 | YYYY | 年份值 | |
DATETIME | 8 | 1000-01-01 00:00:00至999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 | |
TIMESTAMP | 4 | 1970-01-01 00:00:00至2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
DDL-表操作-添加-修改
添加字段:ALTER TABLE 表名ADD 字段名 类型(长度)[COMMENT 注释] [约束]
案例:将emp2表中添加nickname字段 类型是varchar(20) 备注昵称;
Alter table emp2 add nickname(20) comment ’昵称‘;
修改字段和字段类型:ALTER TABLE 表名CHANGE 旧字段名 新字段名类型(长度) [comment 注释] [约束];
案例:将emp表的nickname字段修改为username,类型为varchar(30)
Alter table emp2 change nickname username varchar(30) comment ’昵称‘ ;
删除字段:ALTER TABLE 表名 DROP字段名;
案例:将emp2表的字段username删除;
ALTER TABLE emp2 drop username;
修改表名:ALTER TABLE 表名 RENAME TO 新表名;
案例:将emp2表名修改为employee;
Alter table emp2 rename to employee;
删除表:DROP TABLE [IF EXISTS] 表名;(if exists 删除表,若没有不报错)
删除指定表,并重新创建该表:TRUNCATE TANLE 表名;
案例1:带IF EXISTES 条件删除emp2表
DROP TABLE IF EXISTS emp2;
案例2:删除student表并重新创建student(删除该表会删除所有数据,重新创建将只保留表结构)
TRUNCATE TABLE student;
DDL语句总结:
DDL-数据库操作语言:
查询所有数据库:SHOW DATABASES;
查询当前数据库:SELECT DATABASE();
创建数据库:CREATE DARABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集] [ COLIATE 排列规律];
[IF NOT EXISTS] 代表:如果有同名数据库则不创建,否则,创建;
删除数据库:DROP DATABASE[IF EXISTS] 数据库名;
使用(切换)数据库:USE 数据库名;
DDL-表操作:
查询当前数据库所有表结构:SHOW TABLES;
表结构的创建:
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
)[COMMENT 表注释];
查询当前表结构:DESC 表名;
查询指定表的建表语句:SHOW CREATE TABLE 表名;
添加字段:ALTER TABLE 表名ADD 字段名 类型(长度)[COMMENT 注释] [约束]
修改字段和字段类型:ALTER TABLE 表名CHANGE 旧字段名 新字段名类型(长度)
[comment 注释] [约束];
删除字段:ALTER TABLE 表名 DROP字段名;
修改表名:ALTER TABLE 表名 RENAME TO 新表名;
删除表:DROP TABLE [IF EXISTS] 表名;(if exists 删除表,若没有不报错)
删除指定表,并重新创建该表:TRUNCATE TANLE 表名;
DML介绍
DML是数据操纵语言,用来对数据库中表的数据记录进行增删改操作。
添加数据:INSERT
修改数据:UPDATE
删除数据:DELETE
一、DML-添加数据
1给指定字段添加数据:INSERT INTO表名(字段1,字段2,...) VALUES(值1,值2);
insert into employee (id, wordno, name, gender, age) values (101,'01','小明','男',18);
- 给全部字段添加数据:INSERT INTO 表名 VALUES(值1,值2,...);
insert into employee values(103,'03','小华','男',20);
- 批量添加数据:
INSERT INTO 表名(字段1,字段2,...)VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO 表名 VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
insert into employee values(104,'04','小明','男',20),(105,'05','小蓝','男',20);
注意:
- 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
- 字符串和日期型数据应该包含在引号中。
- 插入的数据大小,应该在字段的规定范围内。
二、DML-修改数据
修改数据:UPDATE 表名 SET 字段名1= 值1,字段名2= 值2,...[WHERE 条件];
UPDATE employee SET name = '小昭', gender = '女' WHERE id= 101;(只修改id = 101的)
UPDATE employee SET age = 20;(会修改表中所有的数据)
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
三、DML-删除数据
删除数据:DELETE FROM 表名 [WHERE 条件]
DELETE FROM employee WHERE gender = '女';
DELETE FROM employee;
注意:
DELETE语句的条件可以有,也可以没有,如果没有,则会删除整张表的所有数据。
DELETE语句不能删除某一个字段的值(可以使用UPDATE)。