学习内容:
数据库系统的结构
1. 一个DBMS(数据库系统)中 可以有多个数据库(database)
2. 一个数据库(database)中 可以有多个表(table)
3. 一个表中 可以有多条数据 多个字段(列)
比如说,把一个数据库比化成一个excel文件,一个excel文件中可以有多个表,一个单独的表中我们可以列多行数据。
1,SQL基本分类
1)DDL 数据定义语言:
对数据库的创建和删除 以及对数据库表的创建删除和修改 关键字:create、drop
2)DML 数据操作语言:
对数据库表中数据的增 删 改 关键字:insert、delete、update
3)DQL 数据查询语言:
对数据库表中数据 查询 关键字:select
4)DCL 数据控制语言:
指定用户 分配权限 关键字:grant、revoke
2,MYSQL数据库中的数据类型
1)整形
tinyint / smallint / int / bigint byte(-128 127) short int long
2)浮点型
float(n,m) double(n,m) decimal(n,m) 准确值 n和m可以省略
n:整数位+小数位的个数
m:小数位的个数
例如:decimal(6,2) 总共能存6位数字,末尾2位是小数,字段最大值 9999.99
3)字符型,
实际开发中,varchar相对比较多
varchar(n) 变长字符串 n必选 保存字符最大个数 性能低
例如: 定义姓名数据类型varchar(10), 可以存储的姓名对应的字符个数0-10, 10表示最多可以存储的字符个数, 实际客户姓名叫 AB, 在数据库中存储占有的空间就是2, 不是10
char(n) 定长字符串 n可选 默认为1 保存字符最大个数 性能高
例如: 定义姓名数据类型char(10), 可以存储的姓名对应的字符个数0-10, 10表示最多可以存储的字符个数, 实际客户姓名叫 AB, 在数据库中存储占有的空间还是10, 不是10
4)日期
data 日期 年月日
time 时分秒
datetime 日期 年月日时分秒,默认值为null,最大值到9999年23:59:59
timestamp 时间戳 1970开始 2037年12月31日 23:59:59, 默认值为当前系统时间
mysql中没有boolean类型、通常我们会使用int类型来表示boolean类型 0:false 1:true
3,DDL表的相关操作
Data Definition Language数据定义语言
关键字:create 创建 drop 删除 alter 修改 show 展示 databese 数据库
一,库的基本操作
1,查看所有数据库
show database
2,创建数据库
#语法一:create database 数据库名
create database day01;
#语法二:create database if not exists 数据库名(如果不存在此数据库再创建)
3,删除数据库
#语法:drop database 数据库名;
drop database day01;
4,选中数据库
#语法:use 数据库名
use day01;
选中数据库,数据库系统中一般会有多个数据,我们对数据库操作时,不需要写数据库名,但我们要保证我们操作的数据库是哪一个数据库,此时我们用选中数据库来决定我们的操作是对选中的数据库有效,当我们选中数据库时,数据库名称会变粗,例如:
5,查看创建数据库语句
#语句:show create database 数据库名
show create database day01;
#除此之外我们根据需求,修改show后面的语句来查看其他语句的创建或修改语句
二,表的操作
关键字:show 展示 create 创建 table 表 drop 删除
1,查看所有表
show table;
2,创建表
#语法 create table 表名(
字段1 字段类型,
字段2 字段类型,
...
字段n 字段类型
);
create table student( #创建学生表
sid int, #id号
sname varchar(20), #姓名
ssex char(2) #性别
);
#我们可以在table 后面加上if not exists 表示如果没有此表,再创建
3,删除表
#语法 drop table 表名
drop table student;
4,查看表结构
#语法 desc 表名
desc student;
5,查看创建表语句
#语句 show create table 表名
show create table student
三,修改表
关键字:alter 修改 add 添加列 drop 删除
rename 表名修改 change 列名及类型修改 modlify 修改列的类型
1,修改表名
#语法 alter table 表名 rename 新表名
alter table student rename stu;
2,修改列名
#语法 alter table 表名 change 原列名 新列名 列的类型
alter table student change sname name varchar(20);
3,修改列的类型
#语法 alter table 表名 modify 原列名 新类型;
alter table student modify sname char(10);
4,添加列
#语法:alter table 表名 add 新列名 类型
alter table student add sclass varchar(20);
5,删除列
#语法:alter table 表名 drop 列名
alter table student drop sclass;
modify与change区别
1、modify关键字只能修改列的类型、change关键字既可以修改列的类型也可以修改列的名称
4,DML表中数据的增删改
Data Manipulation Language数据操作语言
一,插入字段(新增数据)
1,不指定字段插入
#语法 插入单个表(表中字段对应值)
insert into 表名 values (值1,值2,值3,值4) 默认情况下需要给所有的列赋值
insert into student values (1,"kenken","男");
注意事项:
1、有多少列对应就应该有多少值
2、如果插入的是数值直接给值、除数值以外用双引号|单引号都可以
2,指定字段插入
#语法:insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3)
insert into student (sid,sname,ssex) values (1,"kenken","男");
#在指定字段添加数据时,可以添加部分数据
#例如:insert into 表名 (列名2,列名3) values (值2,值3)
insert into student (sname,ssex) values ("kenken","男");
注意事项:
1、声明的列和值要一一对应
2、如果插入的是数值直接给值、除数值以外用双引号|单引号都可以
3,字段插入部分值第二种方式
#语法:insert into 表名 set 列名=值
insert into student set sname="kenken"; #只添加一个值
insert into student set id=2,sname="maimai"; #只添加两个值
注意事项:
1、列和值要一一对应
2、如果插入的是数值直接给值、除数值以外用双引号|单引号都可以
4,批量插入
#语法:insert into 表名 (列1,列2,列3) values (值1,值2,值3),(值1,值2,值3);
insert into student (sid,sname,ssex)
values (1,"kenken","男"),
(2,"maimai","nv");
注意:
1. 整型、浮点型 不需要加引号 ,字符型和日期类型 需要加引号
2. 插入的值必须满足类型和约束
3. 值和列名一一对应
4. 如果约束:(对当前列进行限制保证当前列数据的有效性和准确性)是 null 和 default 可以不插入
二,删除字段
1,删除单个字段
#语法 delete from 表名 [where 条件]
delete from student where sid=1; #删除sid为1的字段
2,删除多个字段
#语法:delete from 表名 [where 条件]
delete from student where sid in(1,2); #删除sid为1,2的字段
#可以根据需求在in后面的括号里添加要删除的字段
#或者
delete from student where sid=1,sname="maimai";
3,删除所有
#语法
delete from 表名
truncate table 表名
注意事项:
delete删除和truncate删除的区别
方式上:delete删除是逐行删除、truncate是删除整张表、然后再创建一张一模一样的表结构
效率上:truncate删除效率要高于delete
回滚上:delete删除数据可以回滚(可以找回来)truncate一旦删除数据将无法找回
自增序列上:delete删除会保留原有的自增序列、而truncate不会保留
三,修改
1,修改单个字段数据
#语法:update 表名 set 列1=值1,列2=值2,列3=值3 [where 条件]
update student set sname="lala" where sid = 1;
#where 后面的条件是要告诉计算机要修改那一条数据,set后面的是列名=新数据
2,修改多个字段数据
#1,不加条件
#语法:update 表名 set 列=值;
update student set ssex="男"; #所有字段的ssex列改为男
#2,部分字段修改成同一种值
#语法:update 表名 set 列=值 where 条件
update student set ssex="男" where sname in("kenken","maimai");
#sname为kenken和maimai的字段ssex值改为男
今天就写这么多吧,剩下的看明天能不能写完。。。。