一、创建一张表:
-
create table 数据库名.表名(字段 类型,……)
-
例如:
-
create table ruozedata(
-
id
int,
-
name varchar(
100),
-
age
int,
-
createtime timestamp,
-
createuser varchar(
100),
-
updatetime varchar(
100),
-
updateuser varchar(
100)
-
);
注意:在创建表的时候,必须有createtime和updatetime
在DBeaver表示如下:
点击表 ruozedata 我们能查看相关信息:
二、删除一张表:
drop table ruozedata;
执行删除操作:
点左边的表刷新后,发现表ruozedata已经删除:
三、插入一条数据:
insert into ruozedata(id,name,age) values(1,'jepson',16);
点击ruozedata右边的数据,就会显示我们刚刚插入的一条数据:
四、更新一条数据:
update ruozedata set age=22 where name='jepson';
右边有个刷新,点击刷新后,年龄从16岁就更新到22岁:
五、删除一条数据:
delete from ruozedata where name='jepson'
删除数据执行后,刷新完,发现数据确实删除了:
插入三条语句测试:
当插入三条语句的时候,我们要点击右边的,执行脚本,这样三条语句就都执行了。
查看结果:
六、查询数据:
select * from ruozedata;
七、插入的内容没有指定列,就需要补全所需的列:
insert into ruozedata
values(4,'ZX1',119,'2017-10-10 00:00:00','xxx','2017-12-10 00:00:00','xxx1');
查看结果:
八、update insert等操作后面的where条件要加好,如果不加好会导致更新整个列:
原表信息:
更新不加where条件信息提示:
生产中禁止不加where条件的操作!!!
八、MySQL默认不区分大小写测试:
select * from ruozedata where name ='ly';
九、创建一张表让 id自增长测试:
create table ruozedata(
id int AUTO_INCREMENT primary key, (再这里设为主键加了自增长)
name varchar(100),
age int,
createtime timestamp,
creuser varchar(100),
updatetime timestamp,
updateuser varchar(100)
)
然后往表里面插入一些数据,不带id这列:
insert into ruozedata(name,age) values('jepson',16);
insert into ruozedata(name,age) values('LY',18);
insert into ruozedata(name,age) values('ZX',19);
insert into ruozedata(name,age) values('ZX1',119);
查看结果,自动增长ID这一列:
十、在生产环境创建一张表需要注意哪些事项:
create table ruozedata(
id int AUTO_INCREMENT primary key,(再这里设为主键加了自增长)
(这里会写一下根据建表的需求写一些其他的列的值和内容)
name varchar(100),
age int,
createtime timestamp DEFAULT CURRENT_TIMESTAMP, (创建时间用的是默认的当前时间)
creuser varchar(100),
updatetime timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,(更新的时间要从创建的时间加更新当前时间)
updateuser varchar(100)
)
插入一条信息测试:
本条数据不带ID列:
insert into ruozedata(name,age) values('jepson',16);
注意创建表和更新表的时间都有了,都是一样的,因为我们这张测试表没有做过更新的操作,
所以createtimie和updatetime的时间是一样的:
做一次更新操作,让更新的时间不同于创建的时间:
update ruozedata set age=22 where name='jepson';
查看更新后的表,updatetime时间更新了:
通过DDL查看创建表的信息:
最后一行我标记了1、2、3
1:MySQL引擎从5.7以后都使用的是innoDB,默认的也是使用innoDB引擎
2:关于自增长,如果是delete table停留在之前的,并不会初始化为0
新的数据导入进来,自增长会有问题,不是从1开始,要考虑当场的业务场景,
如果是 drop 表的话,从新创建,表的自增长是从1开始的。
create table ruozedata(
id int AUTO_INCREMENT primary key,
name varchar(100),
age int,
createtime timestamp DEFAULT CURRENT_TIMESTAMP,
creuser varchar(100),
updatetime timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updateuser varchar(100)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=Latin1;
1 2 3
3:字符集:
当前我们可以看数据库字符集,拉丁字符集
Server拉丁字符集
查看创建数据库时的字符集,创建的时候默认没有选字符集:
字符集不是utf8测试:
insert into ruozedata(name,age) values('若泽',16);
测试下来发现不是utf8不支持中文
我们删除表从新创建表的最后改成字符集utf8:
create table ruozedata(
id int AUTO_INCREMENT primary key,
name varchar(100),
age int,
createtime timestamp DEFAULT CURRENT_TIMESTAMP,
creuser varchar(100),
updatetime timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
updateuser varchar(100)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
查看创建后的字符集:
插入一条中文试试看结果如何:
insert into ruozedata(name,age) values('若泽',16);
显示中文成功:
查看MySQL表ruozedata字符集:
十一、创建复制一张表:
create table test select id,name from ruozedata;
查看结果:
十二、复制一张表的表结构:
create table test1 select id,name from ruozedata where 1<>1;
复制表结构信息:
查看是否和创建的时候一样只复制了ID和name:
十三、查看ruozedata的表结构:
show colums in ruozedata;
十四、修改表的名字:
rename table test to apple;
查看修改后结果:
十五、更改表结构:
alter table ruozedata add address varchar(512);
更改表结构后发现加入了address字段:
十六、删除某一列
alter table ruozedata drop address ;
查看删除结果:
十七、指定某一列,插入到指定列的后面:
alter table ruozedata add address varchar(512) after age;
查看结果:
address再age之后
大数据课程推荐: