この記事では、mysql に関する関連知識を提供し、主に高度な DML、ページング検索、SQL 制約、および複数テーブル操作の学習に関する関連問題を紹介します。一緒に見ていきましょう。それはみんなを助けます。
推奨学習: mysql ビデオ チュートリアル
#首先简单的创建一个student表为后序操作做准备 use test; create table student ( id int, name varchar(8), age tinyint ) engine = innodb default charset = utf8mb4; desc student;
alter table student add addr varchar(20); #新增一个addr列出来
alter table student modify addr varchar(15); #修改student表中addr列的数据类型 (长度修改) alter table student modify addr char(20); #修改student表中addr列的数据类型 (类型修改为char(20))
alter table student change addr stu_addr varchar(20); # change 相比 modify 而言功能更加强大可以修改列名字. # modify不可以修改列名
alter table student drop stu_addr; # 删除student表中的stu_addr列
insert into student(id, name, age) values(1000, '张三', 18); # 向student表中插入一条id 为1000 name 为张三, age 18的记录
insert into student(id, name, age) values(1001, '李四', 20), (1002, '王五', 22), (1003, '胖子', 25); #还可以支持values后面跟上多条记录 #每条记录之间使用,隔开
## 方法 2、すべてのフィールドに値を挿入、形式: insert into table name names(value 1, value 2, ...);
insert into student values(1004, '李四他爸', 47), (1005, '王五它妈', 40), (1006, '胖子它老特', 20); #可以向这样不指定任何字段,默认顺序插入所有字段
値とフィールドは対応しなければなりません。それぞれが同じです。数値も型も同じです。
update student set name = '胖子他爹' where id = 1005; # 跟新student表中id = 1005这条记录的name为胖子他爹
update student set name = '我是你爸', age = 100 where id = 1005; # 跟新student表中id = 1005这条记录的name为我是你爸, age为100
列名の種類と変更された値は一貫している必要があります
##値を変更する場合、フィールドの長さの範囲を超えることはできません
delete from student where id = 1005; # 从student 表中删除id=1005这条记录
delete from student where name = '胖子' # 从student 表中删除name=胖子这条记录
格式: 字段名 整数类型[长度][约束] auto_increment 注意: alter table 表名 add 列名 类型(长度) 新增一列 alter table 表名 modify 列名 oldtype newtype 针对一列仅仅只做类型修改 alter table 表名 change old列名 new列名 oldtype newtype 针对一列可做类型 + 列明修改 alter table 表名 drop 列名; 针对一列做删除操作 insert into 表名(指定字段) values(指定值), (指定值); 指定插入字段值 (插入记录) insert into 表名 values(所有字段顺序写入值); 按照建表字段顺序插入字段值 update 表名 set 字段 = 值 where 条件指定记录 更改记录 delete from 表名 where 条件指定记录 从指定表中删除满足条件的记录 约束就是一种限制 主键约束 (相当于是 unique 约束 + 非 null约束的结合), 用来唯一标识表中的记录 unique 约束, 也是保持不可重复, 列字段值唯一, 但是允许为null 非 null 约束. 就是不允许为null 不可以传入null作为参数 默认约束, 如果传入null 就默认字段值为初始默认值 朋友们,虽然今日介绍的东西不难, 但是简单的东西我们需要下细的掌握, 可以的话还是尽量测试一下, 祝大家学业有成,工作升职加薪 推荐学习:mysql视频教程
#模拟这样一个场景, 每一页5条数据
select * from student limit 0, 5; # 第一页
select * from student limit 5, 5; # 第二页
select * from student limit 10, 5; # 第三页
-- 后台计算出页码、页数(页大小)
-- 分页需要的相关数据结果分析如下,
-- 注意:下列是伪代码不用于执行
int curPage = 2; -- 当前页数
int pageSize = 5; -- 每页显示数量
int startRow = (curPage - 1) * pageSize; -- 当前页, 记录开始的位置(行数)计算
三. SQL约束详解
约束的定义
主键约束 PRIMARY KEY 约束
添加主键约束
create table user_table(
id int primary key, #添加主键约束
name varchar(10),
age tinyint
) engine = innodb charset = utf8mb4;
insert into user_table
values(1001, '翠花', 18);
#插入第一条记录翠花是没有问题的
insert into user_table
values(1001, '王五', 20);
#插入这条记录应当是报错, 重复插入主键了
# [Err] 1062 - Duplicate entry '1001' for key 'PRIMARY'
# 重复加入1001 作为主键
insert into user_table
values(null, '大胖', 30);
# 区别唯一约束, 主键约束不可以为null
#[Err] 1048 - Column 'id' cannot be null
create table persons (
pid int,
lastname varchar(255),
firstname varchar(255),
address varchar(255),
constraint persons_pk primary key(lastname, firstname)
#通过constraint 增添联合主键
) engine = innodb default charset = utf8mb4;
alter table user_table
add constraint name_id_pk primary key(name, id);
# 向user_table表中增加一个name + id的联合主键
删除主键约束
alter table user_table drop primary key;
# 删除user_table表中的主键约束
自动增长列 (介绍主键约束如何离得开它)
create table test(
id int primary key auto_increment,
# 添加一个主键约束, 设置自动增长. 默认增长为1
age tinyint,
name varchar(20)
) engine = innodb default charset = utf8mb4;
insert into test values(null, 18, '小呼噜');
# 我们设置了主键自动递增可以不再需要传入主键字段
# 或者主键传入null 他会自动设置从1开始默认增量1
非空约束
添加非空约束
drop table test;
create table test(
id int primary key auto_increment,
name varchar(10) not null,#设置非null 插入数据不能传入null
age tinyint
) engine = innodb auto_increment = 10 default charset = utf8mb4;
# 我们还可以向这般指定auto_increment的值
insert test values(null, null, 28);
# 会出错, 第二个字段增加了not null 约束
# 传空会报错[Err] 1048 - Column 'name' cannot be null
删除非空约束
alter table test modify name varchar(10);
# 非常简单的方式, 直接更改数据类型的不加null约束即可
desc test;
唯一约束
添加唯⼀约束
drop table test;
create table test (
id int unique, # 添加一个唯一约束
name varchar(20) not null,
age tinyint
) engine = innodb default charset = utf8mb4;
desc test;
insert into test values(null, '张三', 19);
# 允许传入null 区别primary key
insert into test
values(1, '李四', 30),
(1, '王五', 38);
#报错[Err] 1062 - Duplicate entry '1' for key 'id'
删除唯一约束, 方式一样跟刚刚删除主键约束
默认约束
CREATE TABLE persons (
pid INT,
lastname VARCHAR(255),
firstname VARCHAR(255),
address VARCHAR(255) DEFAULT '香港' -- 添加默认约束
)engine = innodb default charset = utf8mb4;
# 传入null 则会按照default 赋值
insert into persons(pid, lastname, firstname)
values(2, '德华', '刘');
# 或者指定字段, default字段可以不用传入val
小结
以上がmysql 概要共有 DML アドバンスト、ページング検索、SQL 制約、および複数テーブル操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。