目录
操作数据库>操作数据库中的表>操作数据库表中的数据
mysql不区分大小写因为在创建表的时候的核对选项是utf-8_general_ci
SQL语句注释语句: --
结构化查询语句分类
SQL语言在功能上主要分为如下3大类:
-
DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
-
主要的语句关键字包括CREATE、DROP、ALTER等。
-
-
DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记录,并检查数据完整性。
-
主要的语句关键字包括INSERT、DELETE、UPDATE、SELECT等。
-
SELECT也可以说是分类中的DQL (数据查询语言),最为重要,用于查询数据库数据。
-
-
DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和安全级别。
-
主要的语句关键字包括GRANT、REVOKE、COMMIT、ROLLBACK、SAVEPOINT等。
-
数据库操作
创建数据库 : create database [if not exists] 数据库名;
删除数据库 : drop database [if exists] 数据库名;
查看数据库 : show databases;
使用数据库 : use '数据库表';
数据值和列类型
数值
-
tinyint十分小的数据1个字节
-
smallint较小的数据2个字节
-
mediumint中等大小的数据3个字节
-
int标准的整数4个字节(常用)
-
bigint较大的数据8个字节
-
float浮点数4个字节
-
double浮点数8个字节(精度问题)
-
decimal字符串形式的浮点数,金融计算的时候,一般用
字符串
-
char 字符串固定大小 0-255
-
varchar 可变字符串 0-65535(常用)
-
tinytext 微型文本 2^8-1
-
text 文本串 2^16-1 (保存大文本)
时间日期
java.util.Date
-
date YYYY-MM-DD 日期
-
time HH:mm:ss 时间格式
-
datetime YYYY-MM-DD HH-MM-SS 最常用的时间格式
-
timestamp 时间戳 1970.1.1到现在的毫秒数
-
year年份表示
null
-
没有值,未知
-
注意,不要使用null进行运算,结果为null
数据字段属性
UnSigned
-
无符号的
-
声明该数据列不允许负数 .
ZEROFILL
-
0填充的
-
不足位数的用0来填充 , 如int(3),5则为005
Auto_InCrement(自增?)
-
自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)
通常用于设置主键 , 且为整数类型
-
可定义起始值和步长,当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)
NULL 和 NOT NULL(非空?)
-
默认为NULL , 即没有插入该列的数值
-
如果设置为NOT NULL , 则该列必须有值
DEFAULT(默认)
-
默认的
-
用于设置默认值
-
例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值
创建数据表格式
CREATE TABLE [IF NOT EXISTS] '表名'(
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释],
...
'字段名' 列类型 [属性] [索引] [注释]
--最后一行不加,
-- Mysql注释
-- 1. # 单行注释
-- 2. /*...*/ 多行注释
)[表类型] [字符集设置][注释]
--例:ENGINE = MyISAM (or InnoDB) DEFAULT CHARSET=utf8
--常用命令:
-- 查看mysql所支持的引擎类型 (表类型)
SHOW ENGINES;
-- 查看创建数据库的定义语句
SHOW CREATE DATABASE school;
-- 查看创建数据库表的定义语句
SHOW CREATE TABLE student;
-- 显示表的结构
DESC student; -- 设置严格检查模式(不能容错了)SET sql_mode='STRICT_TRANS_TABLES';
数据表的类型
数据库的引擎
InnoDB 默认使用~
MyISAM 早些年使用
MyISAM | InnoDB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
事务支持:举个例子:假设两个SQL语句同时在执行,要么都成功,要么都失败,
数据行锁定:假设两个SQL语句要查询同一个表,第一个查询到的会把表锁住,InnoDB只锁一行记录.
外键约束:
全文索引:在一篇大型的文章中寻找某一个字段
表空间的大小:
适用范围
-
适用 MyISAM : 节约空间及相应速度,擅长于处理“读”的任务,比如select
-
适用 InnoDB : 安全性 , 事务处理及多用户操作数据表,功能性而言侧重于写的任务,比如insert、update、alter
修改数据库
修改表 ( ALTER TABLE )
修改表名 :ALTER TABLE 旧表名 RENAME AS 新表名
添加字段 : ALTER TABLE 表名 ADD 字段名 列属性[属性]
修改字段 :ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
重命名: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
注: MODIFY能修改字段的类型与约束 CHANGE不能
删除字段 : ALTER TABLE 表名 DROP 字段名
删除数据表
DROP TABLE [IF EXISTS] 表名
-
IF EXISTS为可选 , 判断是否存在该数据表
-
如删除不存在的数据表会抛出错误
注:所有创建和删除操作最好加上判断,以免报错...
注意点
1.可用反引号(`)为标识符(库名、表名、字段名、索引、别名)包裹,以避免与关键字重名!中文也可以作为标识符!
2. 每个库目录存在一个保存当前数据库的选项文件db.opt。
3. 注释:
单行注释 # 注释内容
多行注释 /* 注释内容 */
单行注释 -- 注释内容 (标准SQL注释风格,要求双破折号后加一空格符(空格、TAB、换行等))
4. 模式通配符:
_ 任意单个字符
% 任意多个字符,甚至包括零字符
单引号需要进行转义 \'
5. CMD命令行内的语句结束符可以为 ";", "\G", "\g",仅影响显示结果。其他地方还是用分号结束。delimiter 可修改当前对话的语句结束符。
6. SQL对大小写不敏感 (关键字)
7. 清除已有语句:\c