DML语言
插入
#语法,方式一,可以进行子查询
insert into 表名
values 值
#实例
#省略列名就是列名全写,必须按照顺序写
#个数必须一致,必须类型相同
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES (13,'唐艺昕','女','1999-4-23','18888888888',NULL,2),
(13,'唐艺昕','女','1999-4-23','18888888888',NULL,2),
(13,'唐艺昕','女','1999-4-23','18888888888',NULL,2);#可以同时插入多行
#语法,方式二
insert into 表名
set 列名=值,....
#实例
INSERT INTO beauty
SET id=50,NAME='堂行',phone='1823';
修改
#修改单表的语法
update *
set 列=新值,...
where 条件
#实例
UPDATE beauty
SET phone = '123'
WHERE id='20';
#修改多表
#92
update 表1,表2
set 列=新值,...
where 条件
and 条件
#99
update 表1,表2
inner|left|right join 表2
on 条件
set 列=新值,...
where 条件
#实例
UPDATE boys bo
INNER JOIN beauty b
ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='114'
WHERE bo.`boyName`='张无忌';
删除
#delete语法
#单表
delete from 表
where 条件
limit 条目数
#实例
DELETE FROM beauty
WHERE phone LIKE '%9';
#多表
#92
delete 表1的别名,表2的别名(看你选择删那个)
from 表1 别名,表二 别名
where 连接方式
and 筛选方式;
#99
delete 表1的别名,表2的别名(看你选择删那个)
from 表1 别名
inner|left|right join 表2
on 条件
where 条件
#实例
DELETE b
FROM beauty b
INNER JOIN boys bo ON b.`boyfriend_id`=bo.id
WHERE bo.`boyName`='张无忌';
#truncate语法全部删除
truncate table 表名
#实例
TRUNCATE TABLE boys
DDL语言
数据定义语言
通用写法
DROP DATABASE IF EXISTS *;
CREATE DATABASE IF NOT EXISTS *;
库的管理
创建(create)
#语法
create database 库名;
#案列
CREATE DATABASE IF NOT EXISTS books;
#IF NOT EXISTS判断是否存在
修改(alter)
ALTER DATABASE books CHARACTER SET gbk;#修改库的字符集
删除(drop)
DROP DATABASE IF EXISTS books;
#IF EXISTS判断是否存在
表的管理
创建(create)
#语法
create tables 表名(
列名 列的类型{(长度) 约束},
....
);
#案列
CREATE TABLE book(
id INT,
bName VARCHAR(20),
price DOUBLE,
authorid INT,
publishDate DATETIME
);
修改(alter)
#列名,
ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME;
#类型或约束,
ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;
#添加,
ALTER TABLE book ADD COLUMN annual DOUBLE {first|after 字段名};
#删除,
ALTER TABLE book DROP COLUMN annual;
#改表名
ALTER TABLE author RENAME TO book_author;
删除(drop)
DROP TABLE IF EXISTS book_author;
#IF EXISTS判断是否存在
复制
#仅仅复制表的结构
CREATE TABLE copy LIKE author;
#复制表的结构+数据
CREATE TABLE copy3
SELECT * FROM author
WHERE nation='中';
常见约束
#一种限制表中的数据
#六大约束
NOT NULL#非空
DEFAULT#默认值
PRIMARY KEY#主键,保证字符值具有唯一性,非空,一个表中只有一个,多个元素可以组成一个主键,称为组合主键
PRIMARY KEY(id,al);
UNIQUE#唯一性,可为空,可以多个,也允许组合
UNIQUE(seat,ll)
CHECK#检测约束 添加限制条件 mysql不可用
FOREIGN KEY#外键,限制两个表的关系,在从表添加外键约束,用于主表中的某列的值,要求从表设置外键关系,从表的外键列属性必须和主表的一致或者兼容,主表关联列必须是一个key(一般是主键或者唯一),插入数据先主表后从表,删除从表在主表
#约束分类
#列级约束 六大约束语法都支持,但是外键约束没有效果
#表级约束 除了非空,其他都可
#通用写法
CREATE TABLE students(
id INT PRIMARY KEY,
stuname VARCHAR(20) NOT NULL,
gender CHAR(1) CHECK(gender='男' OR gender = '女'),
seat INT UNIQUE,
age INT DEFAULT 18,
majorid INT ,
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);
#列级约束
#案例
CREATE TABLE students(
id INT PRIMARY KEY,
stuname VARCHAR(20) NOT NULL,
gender CHAR(1) CHECK(gender='男' OR gender = '女'),
seat INT UNIQUE,
age INT DEFAULT 18,
majorid INT REFERENCES major(id)
);
#表级约束
{constraint 约束名} 约束类型(字段名)
#案例
CREATE TABLE stuinfo(
id INT,
stuname VARCHAR(20),
gender CHAR(1),
seat INT,
age INT,
majorid INT,
CONSTRAINT pk PRIMARY KEY(id),
CONSTRAINT uq UNIQUE(seat),
CONSTRAINT ck CHECK(gender='男' OR gender = '女'),
CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
);
#修改表的约束
#列级约束
alter table stuinfo modify column stuname varchar(20) not null;
#表级约束
alter table stuinfo add column primary key(id);
#删除
#列级约束
alter table stuinfo modify column stuname varchar(20) null;
#表级约束
alter table stuinfo drop column primary key;
标识列
AUTO_INCREMENT,可以不用手动插入值,系统提供默认的序列号
特点:必须是一个key,一个表只能有一个标识列,标识列只能是数值型,可以设置步长
CREATE TABLE tab_i(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20)
);
SET auto_increment_increment = 3;#修改标识列增长值
INSERT INTO tab_i(id,NAME) VALUES(5,'lucy');#可以直接先插入一个值为开头
INSERT INTO tab_i(NAME) VALUES('lucy');#直接插入后自动排序
alter table tab_i modify column id int PRIMARY KEY AUTO_INCREMENT;#修改
alter table tab_i modify column id int;#删除