目录
一、上手篇
-
SQL分类
- DDL(Data Definition Language)数据定义语言,用来定义数据库对象(数据库、表、字段)
- DML(Data Manipulation Language)数据操作语言,用来对数据库表中的数据进行增删改
- DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录
- DCL(Data Control Language)数据控制语言,用来创建数据库用户、控制数据库访问权限
-
三大范式:
- 第一范式是数据表中每个字段都是不可再次差分的最小数据单元;
- 第二范式是确保数据表中除了主键之外的每个字段都必须依赖主键;
- 第三范式是在第二范式的基础上,确保数据表中的每一列都和主键字段直接相关;也就是要求数据表中的所有非主键字段不能依赖与其他非主键字段。反范式化:提升数据库的读性能,通过在数据表中增加冗余字段。
-
登录mysql数据库的几种方式
-
通过mysql自带的客户端,MySQL 5.5 Command Line Client(不推荐)注意:这种登录方式,只适用于root用户,不够灵活!(只适合于root用户登录,只限于root用户,以后我们可能还有很多其他的用户,那其他用户就无法用这种方式登录了,所以这种方式登录mysql数据库有局限性),所以不推荐使用这种方式登录mysql数据库。
-
使用windows的dos命令窗口,使用mysql命令 (推荐)
-
此方法需配置PATH环境变量
-
右键计算机点击“属性”
-
找到"高级设置",点击“环境变量”
-
在系统变量中,双击“PATH”进入
-
找到Mysql文件(目录需要根据大家各自下载地址)
-
将此目录地址添加到PATH中,点击“确定”即可
-
-
win + r 打开 cmd
-
窗口中输入命令 mysql -h localhost -P 3306 -u root -proot
-
最前面的mysql你可以理解成一个关键字或者理解成一个固定的命令,是固定写法,类似于java、jdk中的javac命令或java命令
-
-h表示host,即主机的ip地址
-
-P表示port,端口,mysql数据库的默认端口是3306,当然啦,你可以自己改端口号,我这里没改端口号(注意:这是大写的字母P)
-
-u表示user用户名
-
-p表示password密码(注意:这是小写的字母p)
下面说说mysql这个命令的注意事项:
大写的P表示端口号,小写的p表示密码,-p和密码之间一定不能有空格,其他的像-u,-h,-P之类的,是可以有空格的,也可以没有空格
注意:如果是本机的话,主机ip和端口号可以不写(即主机ip和端口号可以省略),直接写成mysql -u root -proot
如果是本机,但是端口号你改成了其他的端口号,不是默认的3306了,比如你把端口号改成了6688,那你就加上端口号,即mysql -P 6688 -u root -proot
-
-
-
二、操作篇
-
创建和删除数据库
- DROP DATABASE 数据库名;(删除数据库)
- CREATE DATABASE 命名;(创建数据库)
- SELECT DATABASE();(查询当前数据库,注意:括号不能丢)
- SHOW DATABASES;(查看当前MySQL中存在的数据库,注意:分号不要丢)
- USE 数据库名;(使用某数据库)
-
进入MySQL自带客户端输入登陆密码(如下)
-
创建数据表
- (首先指定到某个数据库中(use 数据库名;)再进行建表)
- 创建空数据表
- 语法格式:CREATE TABLE 表名(字段,数据类型 [ 值 ] ,)
- 实例:先创建goods数据库,再创建boys表;
- 每一点回车结束
- use goods;
- create table boys(
- -->id int primary key,
- -->name varchar(100)
- );
- 查看表结构:describe/desc 表名;
- create database 数据库 default charset 字符集;(如:create database Mysql default charset utf8mb4;)
- 每一点回车结束
-
SQL通用语法
- SQL语句可单行或多行书写,默认以分号结尾;
- SQL语句可以使用空格/缩进来增强语句的可读性;
- MYSQL语句不区分大小写,关键字建议用大写。
-
注释
- ( -- 和 # )单行注释
- #注释内容(无空格,MySQL特有)
- -- 注释内容(注意:两个短隔号后与注释内容有一个空格)
- 多行注释 /*注释内容*/
- ( -- 和 # )单行注释
-
表操作
- 查询
- SHOW TABLES;(查询当前数据库所有表)
-
DESC 表名;(查询表结构)
-
SHOW CREATE TABLE 表名;(查询建表语句,其中ENGINE=InnDB表示存储引擎,default charset=utf8为默认字符集)
-
创建(上面有提到)
- 删除
- delete from 表名;(部分删除)
- drop table 表名;(完全删除,无法恢复)
- truncate table 表名;(清空表,删除内容,释放空间,但不删除定义(保留表的数据结构))
- 查询
对比:
- drop是DDL语句,删除表结构及所有数据,同时删除表的结构所依赖的约束,触发器,索引;
- truncate也是DDL语句,删除的是表中全部的数据,不能选择删除部分数据,不删除表结构;
- delete是DML语句,可以选择删除部分数据,也可以删除全部数据;
- drop,truncate和不带where子句的delete都会删除表内的数据;
- drop,truncate都是DDL语句,执行后会自动提交;
- 在执行速度上,drop > truncate > delete;
- 在使用drop和truncate时要格外谨慎,虽然可以恢复,但会比delete删除麻烦很多。