1.什么是数据库:
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库
常见数据库
Oracle
DB2
SQL Server
Postgre SQL
MySQL
相关术语
数据库系统(Database System):DBS
数据库(Database)
数据库管理系统(Database Management System):DBMS
应用开发工具
管理员及用户
SQL语言
Structured Query Language:结构化查询与颜
DDL
数据定义语言
DML
数据操作语言
DQL
数据查询语言
DCL
数据控制语言
2.MySQL相关操作
配置文件
my.cnf是MySQL的配置文件
登陆/退出MySQL
登陆
mysql -uroot -p(然后输入密码)
mysql -uroot -proot(此处的-p后的root是密码)
得到版本号
mysql -V
mysql --version
登陆的同时打开指定数据库
mysql -uroot -p -D db_name(db_name就是数据库名称)
退出
exit
quit
登陆信息中需要掌握的
命令行结束符默认使用;或者\g来结束
可以通过help或者\h或者?加上相关关键字来查看手册
\c可以取消当前命令的执行
SQL语句语法规范
常用MySQL的关键字我们需要大写,库名、表名、字段名称等使用小写
SQL语句支持折行操作,拆分的时候不能把完整单词拆开
数据库名称、表名称、字段名称不要使用MySQL的保留字,如果必须要使用,需要用反引号``将其括起来
常用SQL语句
SELECT USER()
得到登陆的用户
SELECT VERSION()
得到MySQL的版本信息
SELECT NOW()
得到当前的日期时间
SELECT DATABASE()
得到当前打开的数据库
3.数据库相关操作
创建数据库
CREATE {DATABASE|SCHEMA} db_name;
检测数据库名称是否存在,不存在则创建
CREATE DATABASE [IF NOT EXISTS] db_name;
在创建数据库的同时指定编码方式
CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset;
注意
数据库名称最好有意义
名称不要包含特殊字符或者是MySQL关键字
查看当前服务器下全部数据库
SHOW DATABASES|SCHEMAS;
查看指定数据库的详细信息
SHOW CREATE DATABASE db_name;
修改指定数据库的编码方式
ALTER DATABASE db_name [DEFAULT] CHARACTER SET [=] charset;
打开指定数据库
USE db_name;
得到当前打开的数据库
SELECT DATABASE()|SCHEMA();
删除指定的数据库
DROP DATABASE db_name;
如果数据库存在则删除
DROP DATABASE [IF EXISTS] db_name;
4.数据表相关操作
数据表
是数据库最重要的组成部分之一,数据是保存在数据表中
数据表由行(row)和列(column)来组成
每个数据表中至少有一列,行可以有零行一行或者多行组成
表名要求唯一,不要包含特殊字符,最好含义明确
创建表
CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名称 字段类型 [完整性约束条件],
字段名称 字段类型 [完整性约束条件],
...
)ENGINE=存储引擎 CHARSET=编码方式;
UNSIGNED
无符号,没有负数,从0开始
ZEROFILL
零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED
NOT NULL
非空约束,也就是插入值的时候这个字段必须要给值,值不能为空
DEFAULT
默认值,如果插入记录的时候没有给字段赋值,则使用默认值
PRIMARY KEY
主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空
AUTO_INCREMENT
自动增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1
UNIQUE KEY
唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,但是NULL值除外
FOREIGN KEY
外键约束
查看当前数据库下已有数据表
SHOW TABLES;
SHOW [FULL] TABLES [{FROM | IN} db_name]
[LIKE 'pattern' | WHERE expr]
查看指定数据表的详细信息
SHOW CREATE TABLE tbl_name;
查看表结构
DESC tbl_name;
DESCRIBE tbl_name;
SHOW COLUMNS FROM tbl_name;
删除指定的数据表
DROP TABLE [IF EXISTS] tbl_name;
表结构相关操作
添加字段
ALTER TABLE tbl_name
ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称]
删除字段
ALTER TABLE tbl_name
DROP 字段名称
添加默认值
ALTER TABLE tbl_name
ALTER 字段名称 SET DEFAULT 默认值;
删除默认值
ALTER TABLE tbl_name
ALTER 字段名称 DROP DEFAULT
修改字段类型、字段属性
ALTER TABLE tbl_name
MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称]
修改字段名称、字段类型、字段属性
ALTER TABLE tbl_name
CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称]
添加主键
ALTER TABLE tbl_name
ADD PRIMARY KEY(字段名称)
删除主键
ALTER TABLE tbl_name
DROP PRIMARY KEY;
添加唯一
ALTER TABLE tbl_name
ADD UNIQUE KEY|INDEX [index_name] (字段名称)
删除唯一
ALTER TABLE tbl_name
DROP index_name;
修改数据表名称
ALTER TABLE tbl_name
RENAME [TO|AS] new_tbl_name
RENAME TABLE tbl_name TO new_tbl_name;
修改AUTO_INCREMENT的值
ALTER TABLE tbl_name AUTO_INCREMENT=值
5.MySQL中的数据类型
数值型
整数型
浮点型
字符串类型
CHAR效率高于VARCHAR,CHAR相当于拿空间换时间,VARCHAR拿时间换空间
CHAR默认存储数据的时候,后面会用空格填充到指定长度;而在检索的时候会去掉后面空格;VARCHAR在保存的时候不进行填充,尾部的空格会留下
TEXT列不能有默认值,检索的时候不存在大小写转换
日期时间类型
二进制类型