目录
1.数据库
1)什么是数据库
数据库(Database,简称DB)
概念
长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”
作用
保存、管理数据
2)数据库总览
关系型数据库(SQL)
MySQL、Oracle、SQL Server、SQLite、DB2
非关系型数据库(NOSQL)
Redis、MongoDB
2.MySQL
1)概念
是现流行的开源、免费的关系型数据库
2)特点
免费、开源数据库
小巧、功能齐全
使用便捷
可运行于Windows或Linux操作系统
可适用于中小型甚至大型网站应用
3)连接数据库
mysql -h 服务器主机地址 –u 用户名 -p用户密码
4)结构化查询语句分类
DDL
(数据定义语言)
定义和管理数据对象,如数据库,数据表等
CREATE、DROP、ALTER
DML
(数据操作语言)
用于操作数据库对象中所包含的数据
INSERT、UPDATE、DELETE
DQL
(数据查询语言)
用于查询数据库数据
SELECT
DCL
(数据控制语言)
用来管理数据库的语言,包括管理权限及数据更改
GRANT、COMMIT、ROLLBACK
5)命令行操作数据库
创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
删除数据库
DROP DATABASE IF EXISTS 数据库名;
查看数据库
SHOW DATABASES;
使用数据库
USE 数据库名;
6)工具建表
显示表结构
desc 表名
显示表创建语句
show create table 表名
7)创建数据表
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
8)列类型分类
NULL值
理解为“没有值”或“未知值”
不要用NULL进行算术运算,结果仍为NULL
选择数据类型
整数和浮点
日期类型
char和varchar
9)数据字段属性
UNSIGNED
无符号的
声明该数据列不允许负数
ZEROFILL
0填充的
不足位数的用0来填充,如 int(3),5则为 005
AUTO_INCREMENT
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
NULL 和 NOT NULL
默认为NULL,即没有插入该列的数值
如果设置为NOT NULL,则该列必须有值
DEFAULT
默认的
用于设置默认值
10)数据字段注释
CREATE TABLE [ IF NOT EXISTS ] `test` (
`id` int (11) UNSIGNED COMMENT ‘编码号’
)COMMENT=‘测试表’;
11)数据表的类型
ENGINE = MyISAM
ENGINE = InnoDB
12)设置数据表字符集
可为数据库、数据表、数据列设定不同的字符集
设定方法
创建时通过命令来设置
CHARSET = utf8;
如无设定,则根据MySQL数据库配置文件my.ini
13)修改数据表
修改表(ALTER TABLE)
修改表名
ALTER TABLE 旧表名 RENAME AS 新表名
添加字段
ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ]
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [ 属性 ]
删除字段
ALTER TABLE 表名 DROP 字段名
14)删除数据表
DROP TABLE IF EXISTS 表名
IF EXISTS 为可选,判断是否存在该数据表
如删除不存在的数据表会抛出错误
3.MySQL数据管理
1)添加数据
INSERT命令
INSERT INTO 表名 ( 字段1, 字段2, 字段3, … ) VALUES ( '值1', '值2', '值3', …);
字段或值之间用英文逗号隔开
“字段1, 字段2…”该部分可省略,但添加的值务必与表结构数据列顺序相对应,且数量一致
可同时插入多条数据,values 后用英文逗号隔开
2)修改数据
UPDATE命令
UPDATE 表名 SET column_name = value , column_name2 = value2, …. WHERE condition ;
column_name 为要更改的数据列
value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果
condition为筛选条件,如不指定则修改该表的所有列数据
WHERE条件子句
有条件地从表中筛选数据
3)删除数据
DELETE命令
DELETE FROM 表名 WHERE condition;
condition为筛选条件,如不指定则删除该表的所有列数据
TRUNCATE命令
TRUNCATE TABLE table_name;
用于完全清空表数据,但表结构、索引、约束等不变
4)区别
相同
都能删除数据、不删除表结构,但TRUNCATE 速度更快
不同
使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器
使用TRUNCATE TABLE不会对事务有影响