一、MySQL语言组成
1.数据定义语言DDL
- CREATE 创建数据库或数据库对象
- ALTER 对数据库过数据库对象进行修改
- DROP 删除数据库或数据库对象
2.数据操纵语言DML
- SELECT 从表或视图中检索数据
- INSERT 将数据插入到表或视图中
- UPDATE 修改表或视图中的数据
- DELETE 从表或视图中删除数据
3.数据控制语言DCL
- GRANT 授予权限
- REVOKE 收回权限
4.MySQL扩展增加的语言
- 常量、变量、运算符、表达式、内置函数
二、数据库和表
1.创建和使用数据库
- 创建数据库
CREATE DATABASE IF NOT EXISTS mytest;
- 选择数据库
USE mytest;
- 修改数据库
1
2
3ALTER DATABASE mytest
DEFAULT CHARACTER SET gb2312 /* 设置字符集为gb2312 */
DEFAULT COLLATE gb2312_chinese_ci; /* 设置默认校对规则 */ - 删除数据库
DROP DATABASE IF EXISTS mytest;
- 查看数据库
SHOW DATABASE [LIKE ‘mytest’] /* 列出当前用户权限范围内的数据库*/
2.创建和操纵表
创建表
1
2
3
4
5
6
7
8
9
10
11USE mytest
CREATE TABLE students
(
student_id INT NOT NULL AUTO_INCREMENT, /* 使用自增长 */
student_name CHAR(50) NOT NULL,
student_sex CHAR(1) NOT NULL DEFAULT 0,
student_age INT NOT NULL,
student_major CHAR(50) NOT NULL,
student_contact CHAR(50) NULL,
PRIMARY KEY(student_id) /* 设置student_id字段为主键 */
)ENGINE=InnoDB /* 使用InnoDB引擎 */- 字段的数据类型
- 数值类型
- 日期和时间类型
- 字符串类型
- AUTO_INCREMENT的使用
- 每个表只能有一个,并且它必须被索引
- 指定默认值
- DEFAULT,不同数据类型的默认值不一样
- NULL值
- 空串’’与0不是无值,注意区分
- 主键
- PRIMARY KEY,一个表只能有一个主键约束,而且约束中的列不接受空值,主键约束确保唯一数据,经常用来定义标识列
- 引擎类型
- SHOW ENGINES显示数据库引擎和默认引擎,InnoDB为默认引擎
- 字段的数据类型
更新表
ADD [COLUMN] 增加一列(增加一个属性)
1
2
3ALTER TABLE mytest.students
ADD COLUMN student_from char(10) NOT NULL AFTER student_sex
/* 通过AFTER关键字向表中指定的列后插入新列,同样也有FIRST */CHANGE [COLUMN] 修改表中指定列的名称和数据类型
1
2
3ALTER TABLE mytest.students
CHANGE COLUMN student_from student_city char(20) NULL; /* 注意数据的兼容丢失 */
/* 修改student_from列重命名为student_city,且修改数据类型 */ALTER [COLUMN] 修改或删除表中指定列的默认值
1
2
3ALTER TABLE mytest.students
ALTER COLUMN student_sex SET DEFAULT 1;
/* 修改默认值为女 */MODIFY [COLUMN] 修改指定列的数据类型,但是不会干涉他的列名
1
2
3ALTER TABLE mytest.students
MODIFY COLUMN student_name char(20) FIRST;
/* 将char(50)改为char(20) */DROP [COLUMN] 删除表中的列
1
2ALTER TABLE mytest.students
DROP COLUMN student_contact;RENAME [TO] 重命名一个表
1
2
3
4ALTER TABLE mytest.students
RENAME TO university_student;
-------------或者------------
RENAME TABLE mytest.students TO mytest.students;
复制表
- 为students创建一个备份students_copy
CREATE TABLE mytest.students_copy LIKE mytest.students;
- 为students创建一个备份students_copy
删除表
- DROP TABLE 表名[, 表名, 表名]
DROP TABLE students_copy;
- DROP TABLE 表名[, 表名, 表名]
查看表
- SHOW TABLES [FROM <数据库名>] [LIKE <模式>]
SHOW TABLE FROM mytest;
- 显示表的结构
SHOW COLUMNS FROM students;
- SHOW TABLES [FROM <数据库名>] [LIKE <模式>]
表结构进阶
关于空值
不可将它与数字0或字符类型的空字符混淆,表的关键字不允许为空,任意两个空值不相等。关于列的标志(IDENTITY)属性
一个表只允许有一个,可以作为键值,可以指定起始值和增量值关于列类型的隐含改变
定义数据类型时,数据库会偷偷的改变某些类型以提高效率的!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 年轻没有梦!
评论