数据库
一、数据库基础
1.字段(列);记录(行);主键(唯一标记某字段)
2.数据类型
(1)使用原则:够用就行,尽量使用取值范围小的。
(2)常用数据类型
-
整数:int,bit(有符号signed 无符号unsigned) -
小数:decimal(decimal表示浮点数,如decimal(5,2)表示共存5位数,小数占2位) -
字符串:varchar(varchar表示可变长度的字符串,如varchar(3)如果填充’ab’时就会存储’ab’) ? char(char表示固定长度的字符串,如char(3)如果填充’ab’时会补一个空格为’ab ') ? text(字符串text表示存储大文本,当字符大于4000时推荐使用) -
日期时间:date,time,datetime -
枚举类型:enum(枚举中下标从1开始,可用数字来表示枚举的类型)(对于图片,音频,视频等文件,不存储在数据库中,而是上传到某服务器上,然后在表中存储这个文件的保存路径)
3.约束
(1)主键(primary key: 物理上存储的顺序(主键字段可以用0 null default 来占位(自动增长))
(2)非空(not null:此字段不允许写空值
(3)唯一(unique:此字段的值不允许重复
(4)默认(default:当不填写此值时会使用默认值,如果填写时以填写为准
(5)外键(foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常(虽然外键约束可以保证数据的有效性,但在进行数据的crud(增加,修改,删除查询)时会降低数据库的性能,不推荐使用,保证数据有效性可以在逻辑层进行控制)
4.MySQL存储引擎:MyISAM InnoDB(两种类型主要差别是InnoDB支持事务处理与外键和行级锁,而MyISAM不支持)
5.curd:增删改查
create创建
update更新
retrieve读取
delete删除
二、数据库基本操作
链接数据库
mysql -uroot -p(密码);
退出数据库
exit/quit/ctrl+d;
显示数据库版本
select version();
显示时间
select now();
查看所有数据库
show databases;
创建数据库
create database 数据库名 charset=utf8;
查看创建数据库的语句
show create database 数据库名;
删除数据库
drop database 数据库名;
若数据库名中含有特殊字符,加Tab键上边的 ` 键
drop database `数据库名`;
使用数据库
use 数据库名;
查看当前使用的数据库
select database();
三、数据表的基本操作
查看数据库中所有表
show tables;
创建表
- –auto-increment 表示自自动增长
- –not null 表示不能为空
- –primary key 表示主键
- –default 默认值
create table 数据表名字(字段 类型 约束[,字段 类型 约束]);
create table xxxxx(id int, name varchar(30));
create table yyyyy(id int primary key not null auto_increment, name varchar(30));
create table zzzzz(
id int primary key not null auto_increment primary key,
name varchar(30)
);
create table students(
id int unsigned not null auto_increment primary key,
name varchar(30),
age tinyint unsigned default 0,
high decimal(5,2),
gender enum("男","女","保密")default "保密",
cls_id int unsigned
);
insert into students values(0, "老王", 18, 188.88, "男", 0);
insert into studentsvalues(default, "小李", 20, 170.55, 1, 1); 性别处写1,2,3可用来表示相应位置的性别
select * from student;
查看数据表结构
desc 数据表名字
查看表的创建语句
show create table 表名字;
删除表
drop table 表名;
四、修改数据表
添加字段
alter table 表名 add 列名 类型;
alter table students add birthday datetime;
添加字段—重命名
alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth datetime not null;
alter table students change birthday birth date default "2000-01-01";
修改字段—不重命名
alter table 表名 modify 列名 类型及约束;
alter table students modify birth date not null;
五、增删改查
1.增加
(1)全列插入
insert into 表名 values(...);
insert into classes values(0, "班级"); 若为指明插入字段则每个字段都要写上插入的值
insert into students values(default,"西施",20,"女",1,"1990-01-01"),(default,"王昭君",20,"女",1,"1990-01-01");
(2)部分插入
insert into 表名 (列1,...) values (值1);
insert into students(name, gender) values("大乔",2);
insert into students(name, gender) values("大乔", 2),("貂蝉", 2);
2.修改
update 表名 set 列1=值1, 列2=值2... where 条件;
update students set gender=2 where name="小乔";
update students set gender=2 where id=3; 条件要唯一就where id
update students set age=22,gender=2 where id=3;
update students set gender=1; 全部都改
3.查询
(1)查询所有列
select * from 表名;
(2)指定条件查询
select * from 表名 where 条件;
select * from students where name="小乔";
select * from students where id=4;
(3)查询指定列
select 列1,列2,... from 表名;
select name,gender from students;
(4)可用as为字段或表指定别名
select 字段[as 别名], 字段[as, 别名] from 数据表 where ...;
select name as 姓名, gender as 性别 from students;
(5)修改字段顺序(哪个字段写前面先显示哪个字段)
select id as 序号, gender as 性别, name as 姓名 from students; 显示顺序: id gender name
select name as 姓名, gender as 性别 from students; 显示顺序: name, gender
4.删除
(1)物理删除
delete from 表名 where 条件;
delete from stidents; 没有条件,整个数据表中的所有数据都被删除
delete from students where name="小乔";
(2)逻辑删除(用一个字段来表示这条信息是否已经不能再用了)
alter table students add is_delete bit default 0;
update students set is_delete=1 where id=6;
|