创建表、表的复制、增/删/改 表结构
* 本博客涉及到的数据为bjpowernode.sql,数据见文末,SQL文见MySQL入门(9)文末。
* 该数据有三张表,分别是部门表dept(deptno部门编号、dname部门名称、loc位置)、
员工表emp(empno工号、ename员工姓名、job职位、mgr直属领导工号、
hiredate入职日期、sal月薪、comm补贴、deptno部门编号)、
薪水等级表salgrade(grade等级、losal区间下限、hisal区间上限)
表
1、表格(table),用来存储数据,表格是一种格式化文件。
2、表格行被称为记录(表中的数据),表格列被称为字段。
3、表格的字段属性包括:字段名称、字段数据类型、字段长度、字段约束
4、建表最大的难度是字段个数,每个字段的长度,数据类型
5、语法结构:
create table tableName(
columnName dataType(length),
columnName dataType(length),
columnName dataType(length),
);
set character_set_results= ‘gbk’;
6、关于MYSQL数据库中的数据类型
-varchar
* 可变长度字符串:根据实际长度动态分配储存空间
* varchar(3)表示存储的数据不能超过3个字符长度
-char
* 定长字符串:不用判断,效率高
* varchar和char相比:
- 都是字符串类型
- varchar比较只能,可以根据实际数据长度分配空间,比较节省空间,
但是在分配的时候需要执行相关的判断程序,效率较低
- char不需要动态分配空间,所以执行效率很高,但是可能会导致空间浪费。
- 若字段中数据不具备伸缩性,如性别,建议采用char类型存储
- 若字段数据具备很强伸缩性,建议采用varchar类型存储
* char(3) 表示存储的数据不能超过3个字符长度
-int
* 整数型
* int(3)表示最大可以存储999
-bigint
* 长整型
* 对应java程序中的long类型
-float
* 浮点型单精度
-double
* 浮点型双精度
* double(7,2),表示7个有效数字,两个小数位
-date
* 日期类型
* 在实际开发中为了通用,所以日期类型一般不使用,一般采用字符代替
-blob
* Binary LargeObject 二进制大对象
* 专门存储图片、声音、视频等数据
* 数据库表中存储一个图片是很常见的,但是存储一个比较大的时间是很少的,一般都是提供一个视频的链接地址
-clob
* CharacterLarge Object 字符大对象
* 可以存储比较大的文本,4G+的字符串可以被储存
- 其他...
7、创建表格【学生表】
字段:学号【int】、姓名【varchar】、性别【char】、出生日期【date】、邮箱地址【varchar】
建表语句:
CREATE TABLE t_student(
no INT(15),
name VARCHAR(32),
gender CHAR(1),
birth DATE,
email VARCHAR(128)
);
注意: *表格名字最好以t_或者tbl_开始,增强可读性
* VARCHAR最好是2的幂数,方便储存中文
mysql>desc t_student;
+--------+--------------+------+-----+---------+-------+
|Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| no | int(15) | YES | | NULL | |
| name | varchar(32) | YES | | NULL | |
| gender |char(1) | YES | |NULL | |
|birth | date | YES | | NULL | |
|email | varchar(128) | YES | |NULL | |
+--------+--------------+------+-----+---------+-------+
删除表格:
drop table t_student;【若数据可中没有t_student,会报错】
drop table if exists t_student;【最好此阿勇这种方式删除一个表格,是MYSQL的特色,其他数据库没有】
8、向t_student表格中插入数据
8.1向表格中插入数据必须使用insert语句,这属于DML语句
8.2DML语句包括:insert,delet,update【增删改表中的数据,与表的结构无关】
8.3insert语句的语法格式:
INSERTINTO tablename(columnname1,columnname2,columnname3...)values(value1,value2,value3...)
字段和值必须一一对应:个数必须相同,数据类型必须一致。
8.4向t_student表格中插入数据
INSERTINTO t_student(no,name,gender,birth,email)
INSERT INTO t_student(no,name,gender,birth,email)
mysql> select * from t_student;
+------+----------+--------+------------+--------------------------+
| no |name | ge