我正在参加「掘金·启航计划」
数据表基本操作
创建表
创建表格式:
create table 表名(
字段名 类型 约束,
字段名 类型 约束
...
);
其中,在创建数据表之前,需要先指定具体是哪个数据库,再创建数据表。(use 数据库名;)
例1:创建学生表,字段要求如下: 姓名(长度为10), 年龄,身高(保留小数点2位)
#使用数据库
use demo;
# 判断创建表是否存在
drop table if exists students;
# 创建表
create table students(
id int unsigned primary key auto_increment,
name varchar(20),
age int unsigned,
height decimal(5,2)
);
删除表
格式1:
drop table 表名;
格式2:
drop table if exists 表名;
例2:删除例1中的学生表students
drop table students;
或
drop table if exists student
数据基本操作
增加
# 添加一行数据
格式1:所有字段设置值,值的顺序与表中字段的顺序对应
说明:主键列是自动增长,插入时需要占位,通常使用0或default或null占位,插入成功后以实际数据为
准。
insert into 表名称 (字段名称,字段名1,字段名2,……,字段名n) values (值1,值2,……,值n)
格式2:部分字段设置值,值的顺序与给出的字段顺序对应
insert into 表名(字段1,...) values(值1,...);
# 添加多行数据
方式1:写多条insert语句,语句之间用英文分号隔开
insert into 表名(字段名,...) values(值);
insert into 表名(字段名,...) values(值);
方式2:写一条insert语句,设置多条数据,数据之间用英文逗号隔开
格式1:
insert into 表名 values(...),(...)...格式2:
insert into 表名(列1,...) values(值1,...),(值1,...)...
例3:在例1建立的students表基础上,添加一条学生信息
insert into students values(0,'张三',22,177.56);
例4:在例1建立的students表基础上,插入一个学生,只设置姓名
insert into students(name) values('李四');
例5:,添加多个学生信息
insert into students(name) values('张三2');
insert into students(name) values('张三3');
insert into students values(0,'李四2',23,167.56);
例6:在例1建立的students表基础上,插入2个学生,设置所有字段的信息
insert into students values(0,'王五',23,167.56),(0,'赵六',23,167.56);
例7:在例1建立的students表基础上,插入多个学生,只设置姓名
insert into students(name) values('张三5'),('张三6');
修改
update 表名 set 列1=值1,列2=值2... where 条件;
例8:在上述例题的基础上,修改id为5的学生数据,姓名改为 狄仁杰,年龄改为 20
update students set name='狄仁杰',age=20 where id=5;
删除
delete from 表名 where 条件;
例9:在上述例题的基础上,删除id为6的学生数据
delete from students where id=6;
查询
在进行数据查询操作前,先准备数据表students如下:
# 创建数据表:
drop table if exists students;
create table students (
studentNo varchar(10) primary key,
name varchar(10),
sex varchar(1),
hometown varchar(20),
age tinyint(4),
class varchar(10),
card varchar(20)
);
# 准备数据:
insert into students values
('001', '王昭君', '女', '北京', '20', '1班', '340322199001247654'),
('002', '诸葛亮', '男', '上海', '18', '2班', '340322199002242354'),
('003', '张飞', '男', '南京', '24', '3班', '340322199003247654'),
('004', '白起', '男', '安徽', '22', '4班', '340322199005247654'),
('005', '大乔', '女', '天津', '19', '3班', '340322199004247654'),
('006', '孙尚香', '女', '河北', '18', '1班', '340322199006247654'),
('007', '百里玄策', '男', '山西', '20', '2班', '340322199007247654'),
('008', '小乔', '女', '河南', '15', '3班', null),
('009', '百里守约', '男', '湖南', '21', '1班', ''),
('010', '妲己', '女', '广东', '26', '2班', '340322199607247654'),
('011', '李白', '男', '北京', '30', '4班', '340322199005267754'),
('012', '孙膑', '男', '新疆', '26', '3班', '340322199000297655');
得到表
查询所有字段
select * from 表名;
例:查询所有学生数据
select * from students;
查询指定字段
在select后面的列名部分,可以使用as为列起别名,这个别名出现在结果集中。
select 列1,列2,... from 表名;
例:查找students表中name、age字段
select students.name,students.age from students;
例:可以通过 as 给表起别名
select s.name,s.age from students as s;
例:如果是单表查询,可以省略表名
select name,age from students;
例:使用as给字段起别名
select studentNo as 学号,name as 名字,sex as 性别 from students;
消除重复行
在select后面列前使用distinct可以消除重复的行
select distinct 列1,... from 表名;
例:消除性别sex的重复行
select distinct sex from students;