数据库常用操作
数据库操作(DDL)
1.创建数据库(在磁盘上创建一个对应的文件夹) create database [if not exists] db_name [character set xxx]
2.查看数据库 show databases;查看所有数据库 show create database db_name; 查看数据库的创建方式
3.修改数据库 alter database db_name [character set xxx]
4.删除数据库 drop database [if exists] db_name;
5.使用数据库 切换数据库 use db_name; -- 注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换 查看当前使用的数据库 select database();
数据库数据类型
数值类型
日期和时间类型
字符串类型
数据表操作
1.创建表
(类似于一个excel表)
id 姓名 性别 生日 入职时间 职务部门 薪水
创建表语法格式
create table tab_name( field1 type [完整性约束条件], field2 type, ... fieldn type )[character set xxx];
创建一个员工表employee
create table employee( id int primary key auto_increment , name varchar(20), gender bit default 1, -- gender char(1) default 1 ----- 或者 TINYINT(1) birthday date, entry_date date, job varchar(20), salary double(4,2) unsigned );
约束的作用 约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。 约束有列级和表级之分,列级约束作用于单一的列,而表级约束作用于整张数据表。 下面是 SQL 中常用的约束,这些约束虽然已经在关系型数据库管理系统一章中讨论过了,但是仍然值得在这里回顾一遍。 NOT NULL 约束:保证列中数据不能有 NULL 值 DEFAULT 约束:提供该列数据未指定时所采用的默认值 UNIQUE 约束:保证列中的所有数据各不相同 主键约束:唯一标识数据表中的行/记录 外键约束:唯一标识其他表中的一条行/记录 CHECK 约束:此约束保证列中的所有值满足某一条件 索引:用于在数据库中快速创建或检索数据 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。 创建约束 当使用CREATE TABLE语句创建表时,或者在使用ALTER TABLE语句创建表之后,可以指定约束。 语法 CREATE TABLE table_name ( column_name1 data_type(size) constraint_name, column_name2 data_type(size) constraint_name, column_name3 data_type(size) constraint_name, .... ) 删除约束 任何现有约束都可以通过在 ALTER TABLE 命令中指定 DROP CONSTRAINT 选项的方法删除掉。 例如,要去除 EMPLOYEES 表中的主键约束,可以使用下述命令: ALTER TABLE EMPLOYEES DROP CONSTRAINT EMPLOYEES_PK; 一些数据库实现可能提供了删除特定约束的快捷方法。例如,要在 Oracle 中删除一张表的主键约束,可以使用如下命令: ALTER TABLE EMPLOYEES DROP PRIMARY KEY; 某些数据库实现允许禁用约束。这样与其从数据库中永久删除约束,你可以只是临时禁用掉它,过一段时间后再重新启用。 完整性约束 完整性约束用于保证关系型数据库中数据的精确性和一致性。对于关系型数据库来说,数据完整性由参照完整性(referential integrity,RI)来保证。 有很多种约束可以起到参照完整性的作用,这些约束包括主键约束(Primary Key)、外键约束(Foreign Key)、唯一性约束(Unique Constraint)以及上面提到的其他约束。 批注 约束的种类有很多,通过约束我们可以让进入数据库的数据更加规范,虽然这样做会很麻烦,有时候甚至还可能影响用户体验,但是还是建议尽量让你的数据库设计的更加规范,只有数据规范了,在之后的数据处理过程中或数据查询分析过程中才会更加高效。本节主要介绍语法部分,下一节会着重介绍各个约束的使用方法。
2.查看表信息
desc tab_name 查看表结构 show columns from tab_name 查看表结构 show tables 查看当前数据库中的所有的表 show create table tab_name 查看当前数据库表建表语句
3.修改表结构
(1)增加列(字段) alter table tab_name add 列名 类型[完整性约束条件][first|after 字段名]; alter table user add addr varchar(20) not null unique first/after username; #添加多个字段 alter table users2 add addr varchar(20), add age int first, add birth varchar(20) after name;
(2)修改一列类型 alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名]; alter table users2 modify age tinyint default 20; alter table users2 modify age int after id;
(3)修改列名 alter table tab_name change 列名 新列名 类型 [完整性约束条件][first|after 字段名]; alter table users2 change age Age int default 28 first;
(4)删除一列 alter table tab_name drop 列名; -- 思考:删除多列呢?删一个填一个呢? alter table users2 add salary float(6,2) unsigned not null after name, drop addr;
(5)修改表名 rename table 表名 to 新表名;
(6)修该表所用的字符集 alter table student character set utf8;
4.删除表
drop table tab_name;
5 添加主键,删除主键
alter table tab_name add primary key(字段名称,...) alter table users drop primary key; eg: mysql> create table test5(num int auto_increment); ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key create table test(num int primary key auto_increment); -- 思考,如何删除主键? alter table test modify id int; -- auto_increment没了,但这样写主键依然存在,所以还要加上下面这句 alter table test drop primary key;-- 仅仅用这句也无法直接删除主键
6.索引
alter table tab_name add unique [index|key] [索引名称](字段名称,...) alter table users add unique(name)-- 索引值默认为字段名show create table users; alter table users add unique key user_name(name);-- 索引值为user_name -- 添加联合索引 alter table users add unique index name_age(name,age);#show create table users; -- 删除唯一索引 alter table tab_name drop {index|key} index_name