数据库学习笔记
Sql基本操作
1、基本操作CRUD(增删改查)
2、将sql基本操作根据操作对象分类:库操作,表操作(字段),数据操作。
2.1库操作:
对数据库的增删改查;
2.1.1新增数据库:
基本语法:
Create datebase 数据库名字 [库选项] 库选项:用来约束数据库,分为两个选项
? 字符集设定:charset(数据存储的编码格式):常用的有GBK与UTF8 ? 校对集设定:collate(数据比较的规则)
当创建数据库的sql语句执行之后,发生了什么? 1、 在数据库系统中增加了对应的数据库信息;
2、 会在保存数据的文件夹下:Date目录,创建一个对应数据库名字的文件夹; 3、 每个数据库下都有一个opt文件,保存了库选项。
2.1.2:查看数据库:
1、查看所有数据库 Show databases;
2、查看指定部分的数据库:模糊查询
Show databases like ‘pattern’;---pattern是匹配模式 %:表示匹配多个字符; _:表示匹配单个字符;
3、查看数据库创建语句:
Show create database 数据库名字; eg: SHOW CREATE DATABASE imooc;
数据库在执行sql语句之前会优化sql,系统保存的结果是优化后的结果。
2.1.3更新数据库:
数据库名字不可修改;
数据库的修改仅限库选项:字符集和校对集(校对集依赖字符集)。 Alter database 数据库名字 [库选项]; Charset/character set 字符集; Collate 校对集;
2.1.4删除数据库:
Drop database数据库名字;
当删除数据库语句执行之后发生了什么? 1、 在数据库内部看不到对应的数据库;
2、 在对应的数据库存储的文件夹内,数据库名字对应的文件夹也被删除(级联删除:里面
的数据表全部删除),数据库删除不可逆。
2.2表操作
表与字段密不可分
2.2.1新增数据表
语法:
Create table [if not exists] 表名( 字段名字数据类型(x),(如果数据类型是字符型,需要将字符长度加上) 字段名字数据类型, ······· -----最后一行不需要逗号
)[表选项];
If not exists :如果表名不存在则创建,如果存在则不执行创建代码:检查功能; 表选项:控制表的表现, 字符集:charset/character set 具体字符集;--保证表中数据存储的字符集; 校对集:collate 具体校对集; 存储引擎:engine 具体存储引擎(innodb和myisam); 任何一个表的设计都必须指定数据库 方案1:显示的指定表所属的数据库
Create table [if not exists] 数据库名.表名();--将当前数据表创建到指定的数据库下。 方案2:隐式的指定数据表所属数据库:先进入到某个数据库环境,然后这样创建的数据表自动归属到该数据库。
进入数据库环境:use 数据库名字;
2.2.2查看数据表
1、查看所有表 show tables; 2、查看部分表:模糊匹配: Show tables like‘pattern’; %:表示匹配多个字符; _:表示匹配单个字符; 3、 查看表的创建语句; Show create table 表名;
4.查看表结构:查看表中的字段信息
Desc/describe/show columns(列)from 表名;
2.2.3修改数据表
2.2.3.1修改表本身
表本身可以修改:表名和表选项; 1、修改表名:
Rename table 老表名 to 新表名; 2、修改表选项: A
2.2.3.2修改字段(增、删、改、查)
1、新增字段:
Alter table 表名 add[column] 字段名数据类型 [列属性] [位置]; 位置:字段名可以存放表中任意位置 First:第一个位置;
After:在哪个字段之后:after 字段名;默认的是在最后一个字段之后。
2、修改字段:
Alter table 表名 modify 字段名数据类型【属性】【位置】;
3、重命名字段
Alter table 表名 change旧字段新字段名数据类型【属性】【位置】;
4、 删除字段:
Alter table 表名 drop字段名;
注意:如果表中已经存在数据,那么删除字段会清空该字段的所有数据(不可逆)。
2.2.4删除数据表
Drop table 表名1,表名2,表名3···;可以一簇删除多张表。
2.3数据操作:
2.3.1新增数据:
两种方案:
方案1、给全表字段插入数据,不需要指定字段列表;要求数据的值出现的顺序必须与表中设计的字段出现的顺序一致,凡是非数值数据都需要使用引号(建议使用单引号)包裹。
Insert into 表名 values(值列表)【,(值列表)】;--可以一次插入多条数据。
方案2、给部分字段插入数据,需要选定字段列表,字段列表出现的顺序与字段的顺序无关,但是值列表的顺序必须与选定的字段的顺序一致 Insert into 表名(字段列表)values (值列表)【,(值列表)】;