1.建表语言的语法格式
1.1 建表语言的语法格式
creat table 表名( 字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型, ... ); 复制代码
1.2 关MySQL当中字段的数据类型,以下只说常见的
1.3 char 和 varchar 怎么选择
- 在实际开发中,当某个字段中的数据长度不发生改变的时候,是定长,例如;性别、生日等都是采用char;
- 当一个字段的书库长度不确定,例如 :简介、姓名都是采用的 varchar
1.4 表明在数据库当中一般建议以 : t_ 或者 tbl_ 开始
1.5 实现案例 :创建学生表
学生信息包括:学号、姓名、性别、班级编号、生日
- 学号 : bigint
- 姓名 : varchar
- 性别 : char
- 班级编号 : int
- 生日 : char
创建学生表语言格式:
create table t_student( no bigint, name varchar(255), sex char(1), classno varchar(255), birth char(10) ); 复制代码
1.6 删除t_student表
注意 : 当这个表存在的时候删除掉。
drop table if exists t_student;
2. insert插入数据
2.1 语法格式 :
insert into 表名(字段名1,字段名2,字段名3,...) values(值1,值2,值3,...) 复制代码
要求 : 字段的数量和值的数量相同,并且数据类型要对应相同。
2.2 实现案例:向 t_student表中插入数据
2.2.1 按照建表时字段名的顺序进行插入
第一步 :插入数据
insert into t_student(no,name,sex,classno,birth) values(1.'zhangsan’,'1','gaosan3ban');
第二步 :查看插入后的数据
select * from t_student;
2.2.2 不按照建表时字段名的顺序进行插入
第一步 :插入数据
insert into t_student(name,sex,classno,birth,no) values('lisi','1','gaosan3ban','2020-01-02',2);
第二步 :查看插入后的数据
select * from t_student;
2.2.3只插入部分字段的数值 (一个字段或者多个字段)
第一步 :插入数据
insert into t_student(name) values('wangwu');
第二步 :查看插入后的数据
select * from t_student;
注意 : 除了name字段以外,其他的字段自动插入NULL。
2.3 删除 t_student 这张表
当这个表存在的话删除
drop table if exists t_student;
2.4创建包含默认值的 t_student 表
create table t_student( no bigint, name varchar(255), sex char(1) default 1, classno varchar(255), birth char(10) ); 复制代码
看此时的表结构,发现 sex 字段中的 Default有默认值1
desc t_student;
第一步 :插入数据
insert into t_student(name) values('zhangsan');
第二步 :查看数据
select * from t_student;
上表注意 :此时并没有输入 sex 的值,建表的时候将sex赋值为1 所以在sex中存在默认值 1
关于insert语句的注意 :
- 当一条insert语句执行成功之后,表格当中必然会多出一行记录。
- 即使多的这一行记录当中有某些字段是NULL,后期也没有办法在执行insert语句插入数据
- 只能使用 update 进行更新。
2.5 省略的 insert 查询语句
insert into t_student values(4,'lisi','1','gaosan3ban','2020-01-02');
insert into t_student values(2,'wangwu','1','gaosan3abn');
此时输入的字段值数量不够,会报错。
注意 :
- 字段可以省略不写,但是后面的value对数量和顺序都有要求。
- 这个省略了字段名称,直接输入的就是字段的值。
- 输入字段值的时候一定要注意输入字段值的顺序要和表中的字段顺序保持一致。
2.6 一次插入多行数据
insert into t_student(no,name,sex,classno,birth) values(3,'wangwu','1','gaosan3ban','2020-01-02'),(5,'zhouliu','0','gaosan2ban','2020-02-03');
3. 表的复制以及批量插入
3.1 表的复制语法:
creat table 表名 as select语句; 将查询的结果常见出来。 复制代码
3.2 将整张表进行复制
第一步 : 创建一个新表并进行复制整张表的字段
create table emp1 as select * from emp;
第二步 : 查看表的结构
desc emp1;
第三步 : 查看表中的数据
select * from emp1;
重点 : 此时发现 emp1 表的数据完全 copy的就是 emp 表的数据
3.3 对某张表的部分字段进行复制
第一步 : 创建一个新表并进行复制某张表的部分字段
create table emp2 as select ename,sal from emp;
第二步 : 查看表结构
desc emp2;
第三步 : 查看表中的数据
select * from emp2;
重点 : 此时的emp2表只是复制了 emp 表的ename,sal字段的数据。
3.4 将查询结果插入到一张表中
第一步 : 创建一个新表并进行复制
create table dept1 as select * from dept;
第二步 : 查询表的结构
desc dept1;
第三步 : 查询表的数据
select * from dept1;
第四步 : 向 dept1 中插入数据
insert into dept1 select * from dept;
第五步 : 查看表中的数据
select * from dept1;
重点 :
- 在创建表的时候复制的就是dept,其中已经有了一份dept的数据
- 并且在插入数据的时候使用的还是dept表中的数据,所以此时dept1中的数据有两份
4. 修改数据 (update)
4.1 语法格式 :
update 表名 set 字段名1=值1,字段值2=值2...where 条件; 复制代码
注意 : 没有条件整张表数据全部更新。
4.2 实现案例 :将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU;
第一步 : 修改数据(loc字段和dname字段,只修改10部门的数据)
update dept1 set loc = 'SHANGHAI',dname = 'RENSHIBU' where deptno = 10;
第二步 : 查看数据
select * from dept1;
重点 :语句意思,将10部门的loc改为SHANGHAI,dname改为RENSHIBU;
注意 :一定要注意连接两个字段的是英文下的逗号,而不是and
4.3 更新所有记录
第一步 :修改全部数据(修改loc字段和dname字段,全部部门都修改)
update dept1 set loc = 'x',dname = 'y';
第二步 : 查看数据
select * from dept1;
5. 删除数据 (delete)
5.1 语法格式
delete from 表名 where 条件; 复制代码
注意 : 没有条件全部删除
5.2 实现案例 : 删除10部门数据
第一步 : 删除 10 部门的数据
delete from dept1 where deptno = 10;
第二步 : 查看数据
select * from dept1;
5.3 删除所有数据
delete from dept1;
5.4 怎么删除大表(重点)
// 表被截断,不可回滚。永久丢失,删除表中的数据马,表结构还在
truncate table 表名;
5.5 删除整个大表,包括表结构和数据
drop table 表名; 通用的删除表语言 drop table if exists 表名; mysql中特有,oracle中不存在
6. 表的结构修改
- DQL(select)
- DML(insert delet update)
- DDL(create drop alter)
修改表结构的语句不会出现在java代码中,出现在java代码当中的sql包括:insert、delete、update、select(这些都是表中的数据操作)
增删改查有一个术语 : CRUD操作
- Creat (增)
- Retrieve (检索)
- Update (修改)
- Delete (删除)