mysql是主流的关系型数据库管理系统(RDBMS---relation database management system),操作是需要用SQL(Structured Query Language:结构化查询语言)语句的。现在写这个博客,是想把学习的基础知识,做个小结,适合小白基础学习者。
一、SQL语句的分类:
DDL(Data Definition Language):数据定义语言,主要是操作数据库和表达结构 命令主要有:create ,drop,truncate和alter,;
DML(Data Manipulation Language):数据操作语言,用于操作表格中的数据 ,命令主要有:insert ,update和delete;
DCL(Data Control Language):数据控制语言,用于设置用户的访问权限,安全等,命令包括:grant,deny,revoke等;
DQL(Data Query Language):数据查询语言,用于查询表格数据,命令主要有:select from where
1、DDL语言
1.1操作数据库
创建数据库:create database 数据库名字
删除数据库:drop database 数据库名字
修改数据库:alter database chracter set 字符集
查看数据库:show databases(用于查看所有的数据库);
查看数据库定义:show create database 数据库名字;
查看正在使用的数据库:select database();
选中数据库:use 数据库名字
1.2操作数据表
查看选中数据库中的所有表:show tables;
查看表的结构:desc 表名
查看表的定义结构/创建语句:show create table 表名
创建表:create table 表名(列名1 列的类型(长度)约束,列名2 列的类型(长度)约束);
(说明:列的约束主要有:主键约束:primary Key 唯一约束:unique 非空约束:not null 默认约束:default,外键约束:foreign key)
主键和唯一:
1、区别:
①、一个表至多有一个主键,但可以有多个唯一
②、主键不允许为空,唯一可以为空
2、相同点
都具有唯一性
都支持组合键,但不推荐
外键:
1、用于限制两个表的关系,从表的字段值引用了主表的某字段值
2、外键列和主表的被引用列要求类型一致,意义一样,名称无要求
3、主表的被引用列要求是一个key(一般就是主键)
4、插入数据,先插入主表
删除数据,先删除从表
可以通过以下两种方式来删除主表的记录
方式一:级联删除
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE;
alter table 表名 add [constraint 约束名] foreign key(字段名) references 主表(被引用列)on delete cascade;
方式二:级联置空
ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL;
alter table 表名 add [constraint 约束名] foreign key(字段名) references 主表(被引用列)on delete set null;
注意:mysql不支持check约束
删除表:drop table 表名
修改表
添加列: alter table 表名 add 列名 列的类型 列的约束
修改列:alter table 表名 modify 列名 列的类型 列的约束
修改列名: alter table 表名 change 旧列名 新列名 列的类型 列的约束
删除列:alter table 表名 drop 列名
修改表的字符集:alter table 表名 character set 字符集
修改表名:rename table 旧表名 to新表名
修改表的储存引擎:alter table 表名 engine=引擎名(InnoDB,MyISAM,Archive,Blackhole,CSV等引擎)
2.DML语言
表中的增,删,改操作
2.1增加表格数据(插入数据)
插入数据 语句1:insert into 表名(列名1,列名2)values(值1,值2);
语句2:insert into 表名 values(值1,值2);
批量插入:insert into 表名 values(值1,值2),(值1,值2),(值1,值2);
2.2删除表格数据:
删除数据:delete from 表名[where 条件];
先删除表,再重建表:truncate table 表名(truncate虽然是DDL语句,但是也是只删除数据表数据,不删除数据表结构);
2.3更新数据:
update 表名 set 列名=值,列名=值[where 条件]
truncate、delete和drop的区别可以参考: drop、truncate和delete的区别 或者参考:MySQL删除表操作(delete、truncate、drop的区别)
博客园的总结:MySQL DELETE语句和TRUNCATE TABLE语句的区别
结构化查询语言比较复杂,再开一篇文章总结。
详见:mysql基础知识(二)