SQL中的DDL与DML

常见数据类型介绍

  1. 整数类型:INT
  2. 小数类型:DOUBLE
  3. 字符类型:VARCHAR(字符个数)
  4. 日期类型:
    DATE 表示年月日
    TIMESTAMP 表示年月日时分秒,如果不插入数据,会自动保存插入同一条记录其他字段的时间

DDL

操作数据库

  1. DDL Data Definition Language 数据定义语言
  2. 操作范围:管理数据库,管理数据表
  3. 使用的关键字:
    增:CREATE
    删:DROP
    改:ALTER
    查:SHOW

一、查询

-- 一、查询
-- 1.查看当前存在所有数据库
SHOW DATABASES;
-- 2.使用指定的数据库
-- USE 库名;
USE offcn;
-- 3.查询当前所在库:需要使用到一个函数
SELECT DATABASE();
-- 4.查询数据库的字符集
SHOW CREATE DATABASE library;

二、创建

-- 二、创建数据库
-- 语法:CREATE DATABASE [IF NOT EXISTS] 库名;
CREATE DATABASE library;
CREATE DATABASE IF NOT EXISTS library;

CREATE DATABASE IF NOT EXISTS aaa;

三、删除

-- 三、删除数据库
-- 语法:DROP DATABASE [IF EXISTS] 库名;
DROP DATABASE aaa;
DROP DATABASE IF EXISTS aaa;

四、修改

-- 四、修改数据库
-- 修改数据库的字符集
ALTER DATABASE library CHARACTER SET utf8;

操作数据表

一、查询

-- 一、查询表
-- 查看数据库中的所有表
SHOW TABLES;
-- 查询表结构
DESC book;
-- 查询表的字符集
SHOW CREATE TABLE book;

二、创建

-- 二、创建表
/*
语法:CREATE TABLE [IF NOT EXISTS] 表名(
	字段名1 数据类型 [约束],
	字段名2 数据类型 [约束],
	...
	字段名n 数据类型 [约束]
);
*/
CREATE TABLE IF NOT EXISTS books(
	id INT,
	b_name VARCHAR(30),
	price DOUBLE,
	author VARCHAR(20),
	publishDate DATE
);

三、修改

-- 三、修改表
/*
同样是修改,
修改字段名,使用的关键字是:CHANGE
修改字段的数据类型,使用的关键字是:MODIFY

*/
-- 修改表名
ALTER TABLE books RENAME TO book;
-- 添加一个字段
ALTER TABLE book ADD COLUMN type VARCHAR(20);
-- 修改表字段的数据类型
ALTER TABLE book MODIFY COLUMN price INT;
-- 修改表字段的名称
ALTER TABLE book CHANGE COLUMN type class VARCHAR(20);
-- 删除表中的字段
ALTER TABLE book DROP COLUMN class;
-- 修改表的字符集
ALTER TABLE book CHARACTER SET gbk;

四、删除

-- 4.删除表
DROP TABLE book;
DROP TABLE IF EXISTS book;

数据表约束的介绍

字段的约束:对字段的数据的一些限定

分类:
	主键约束:PRIMARY KEY,作用:限定字段的值唯一且不能重复,一个表只能有一个主键
	唯一键:UNIQUE,作用:限定字段的值唯一
	不为空:NOT NULL,作用:添加的字段值不能是空,即必须要有值
	默认值:DEFAULT,作用:当某些字段不去添加值的时候,会有一个默认的值
	
	外键:FOREIGN KEY,作用:表示表与表的关联
	检查:CHECK,作用:当添加一个字段值的时候,判断这个值是否在允许的情况内

DML

  1. DML:Data Manipulation Language 数据操作语言
  2. 操作主要是针对数据进行增删改
  3. 操作:
    增:INSERT
    删:DELETE
    改:UPDATE

插入数据

/*
语法1:INSERT INTO 表名(字段名1, 字段名2, ...) VALUES(值1, 值2, ... );

注意事项:
	1、表名之后的字段罗列,要和VALUES之后的值一一对应
	2、抛开约束的影响,表名后面罗列了几个字段,将来添加的时候就只添加这几个字段的值
	3、如果想要对表中的所有数据都添加值,则可以将语法简化为:
			INSERT INTO 表名 VALUES(值1, 值2, ... );
			这种情况下,如果某一个字段的值不想添加,则必须用null占位
	4、如果一次想插入多行数据,可以写成:
			INSERT INTO 表名 
			VALUES(值1, 值2, ... ), (值1, 值2, ... ), (值1, 值2, ... );

语法2:INSERT INTO 表名 SET 字段名1 = 字段值1, 字段名2 = 字段值2, ...;

比较语法1和语法2:
1、语法1相较于语法2更加连贯易用,所以语法1使用很多
2、语法1可以一次插入多条记录,但语法2一次只能插入一条记录
*/
INSERT INTO books SET b_name = '二十四史', price = 400, class = '中国历史';

修改数据

/*
语法:UPDATE 表名 SET 字段名 = 字段值 WHERE 筛选条件;

注意事项:修改数据的时候,如果不加筛选条件,会对整个表的数据全都做出修改
*/
UPDATE books SET price = 6 WHERE id = 14;
UPDATE books SET publishDate = '2000-1-1';

删除数据

  1. 语法1:DELETE FROM 表名 WHERE 筛选条件;

  2. 注意事项:删除数据的时候,如果不加筛选条件,会对整个表的数据全都进行删除

  3. 语法2:TRUNCATE TABLE 表名;TRUNCATE只能进行全表数据的清空操作

  4. TRUNCATE和DELETE清空表数据的区别
    (1)TRUNCATE清空全表数据的效率要比DELETE要高
    (2)TRUNCATE只能删除整个表的数据,但DELETE更加灵活
    (3)TRUNCATE删除不会返回删除的记录个数,DELETE删除会返回删除了几条记录


版权声明:本文为weixin_45233415原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。