SQL分类
1.DDL【Data Definition Language】 数据定义语言,用来维护存储数据的结构– 对数据库和表的更多的属性操作
代表指令:create,drop,alter
2.DML【Data Manipulation Language】数据操作语言,用来对数据进行操作–对数据库和表结构,更多的是数据内容操作
代表指令:insert,delete,updata
3.DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务–整个Mysql的系统安全&&账户管理工作主动和被动下都是比较可靠的
代表指令: grant,revoke,commit
存储引擎
存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎
查看mysql存储引擎命令
mysql> show engines;

上图中默认引擎在mysql的配置文件已经设置了,图片如下倒数第二行
库的操作
.查看数据库
show databases;
创建数据库
create database db_name;
db_name是要创建的库名。
相当于在linux下/var/lib/mysql 里面创建名为db_name的目录
注意:库名可以用加上反引号`db_name`,但当库名和数据库里面的关键字冲突,就需要加上反引号例如`create`,删除也一样;
删除数据库
drop database db_name;
db_name是要删除的库名。
相当于删除linux下/var/lib/mysql 里面的名为db_name的目录
显示创建数据库的sql的语句
show create database db_name;

在/* */这里面的意思是如果mysql的版本大于4.01就用里面的语句
总结
1.mysql大小写不敏感
2.建库和建表名称建议都带上反引号· ·
字符集和校验规则
首先看下图理解什么是字符集和校验规则

圆圈表示数据
查看系统默认字符集以及校验规则
show variables like 'chararcter_set_database';//字符集
show variables like 'collation_database';//校验规则


注意:
一般字符集和校验规则是匹配的。
查看数据库支持的字符集
show charset;
查看数据库支持的字符集校验规则
show collation;
1.创建数据库详细篇
语法:
CREATE DATABASE [IF NOT EXISTS] db_name[create_specification [, create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_nam
说明:
IF NOT EXITSTS:如果不存在创建
大写的表示关键字
[] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则
在我们创建数据库后,在linux里面/var/lib/mysql进入和创建数据库名相同的目录里,后会发现一个.opt的文件,这个文件里面就存储这个数据库的默认的字符集和校验规则

举例:
只设置字符集
create database db_name character set gbk;//第一种写法
create database db_name character=gbk;//第二种写法
在linux下查看.opt文件

发现系统会自动找匹配的校验规则
设置字符集和校验规则
create database db_name character=utf8 collate=utf8_bin;//第一种写法
create database db_name character=utf8 collate utf8_bin;//第二种写法
//注意这里没有collate和校验规则之间没有set是空格

校验规则对数据库的影响
校验规则使用不区分大小写
create database test1 collate utf8_general_ci;
校验规则使用区分大小写
create database test2 collate uft8_bin;
分别创建表person
create table `person` (name varchar(20));
分别插入a,A,b,B,c,C
insert into person values('a'),('A'),('b')('B'),('c')('C');
然后分别在数据库test1和test2中person表中查询name=a
select name from person where name =‘a’;
test1(不区分大小写)库中查询结果

test2(区分大小写)库中查询结果

发现在test1数据库里查询结果不分大小写,而test2中区分大小写。
这就是校验规则带来的差别。
修改数据库
语法:
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]…]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
举例将数据库test1的校验规则改utf8_bin
alter database test1 collate =utf8_bin;
备份和恢复
备份
mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径
举例:
# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql
还原
mysql> source D:/mytest.sql;
查看连接情况
show processlist
表的操作
语法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;
说明:
field 表示列名
datatype 表示列的类型
character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
创建表的案例
create table users(
id int,
name varchar(20) comment '用户名',
password char(32) comment '密码是32位的md5值',
birthdy date comment '生日'
)character set utf8 engine MyISAM;
查看表结构
desc 表名;

查建表语句
show create table 表名 \G;
MySQL基础:DDL、DML、DCL与数据库管理详解,

被折叠的 条评论
为什么被折叠?



