MySQLdayday05(创建个表 数据类型 默认编码表 默认值 增删改 约束 )

来源:互联网 发布:扫雷技巧红包软件 编辑:程序博客网 时间:2024/05/20 06:51

create table tableName{

columnName dateType(length),

.....

colunmName dataType(length)

};

set character_set_results='gbk';

应该想指定多少个字段 字段类型 字段长度多少合适 字段名称要望文生义

1、表格(table) 用来存储数据 表格是一种结构化文件 

2、表格行被称为记录(表中的数据) 表格列被称为字段

3、表格的字段属性包括:字段名称 字段数据类型 字段长度 字段约束

4、创建表的语法

create table tableName(

columnname dataType(length),

columnname dataType(length),

columnname dataType(length),

columnname dataType(length)

);

5、关于MySQL数据库中的数据类型

varchar 可变长度字符串超过定长就报错 根据实际长度动态分配空间

节省空间 但是降低效率 因为要检测实际长度

char 定长字符串 不管传入多少都分配固定的空间

varchar 和char对比

都是字符串类型

varchar比较智能可以根据实际的数据长度分配空间比较节省空间 但是在分配的时候需要执行相关的判断程序 效率较低

char不需要动态分配空间 所以执行效率很高 但是可能会导致空间浪费

若字段中的数据不具备伸缩性 建议采用char类型存储

若字段中的数据具备很强伸缩性 建议采用varchar类型存储

char(3)表示存储的数据不能超过3个字符长度

int  整数型

int(3) 表示最大可以存储999

bigint  长整型

对应的java程序中的long类型

float 浮点型单精度

double 浮点型双精度

double(7,2) 7表示7个有效数字 2表示两个小数位

date 日期类型

在实际开发中为了通用 所以日期类型一般不使用 采用字符串代替日期

blob binary large object 二进制大对象

专门存储图片声音视频等数据

数据库表中存储一个图片是很常见的 但是存储一个比较大的视频是很少的

一般都是提供一个视频的链接位置

clob character large object  字符大对象

可以存储比较大的文本 4G+的字符串可以存储  char之类不够大用它

其他......

6、创建表格[学生表] 

建立学生信息表 字段包括 学号姓名 性别 生日 邮箱地址

create table t_student(

no int(10),

name varchar(32),

sex char(1),

birth date,

email varchar(128)

)

表格的名字最好以t_ / tb1_开始 增强可读性

varchar 长度最好是2的倍数 方便存储中文

drop table t_student; 这种删除方式若数据库中没有这样的表格 报错

drop table if exists t_sfds; 如果存在就删掉 不存在就返回结果 最好采用这种方式删除一个表格 

但是 是MySQL 的一种特色 其他数据库没有

desc t_student;查看表的结构

7、向t_student 表格中插入数据

向表格插入数据必须使用insert 语句属于DML语句

DML 语句包括 insert update delete 增删改表中的数据 与表的结构无关

insert语句的语法格式

insert into tablename (columnname1,columnname2,columnname3....) values(value1,value2,value3...)

字段和值必须一一对应 个数必须相同数据类型必须一致

向t_student 表格中插入数据

insert into t_student(no,name,sex,birth,email) values(1,'zhangsan','m','1940-10-11','3213123312@qq.com');

可以这样执行insert语句么

insert into t_student (no,name) values (2,'lisi');

默认情况下 当一张表被创建之后 没有指定约束的话 可以为null  并且没有指定任何默认值的话

默认值为NULL 这里的默认值NULL表示 若插入数据的时候 没有给该字段指定任何数据 默认插入NULL值


no,sex,birth我们可以再向no ,sex ,birth字段中插入值么

insert into t_student(no,sex,birth) values(23,'','')

以上执行insert 语句只能导致底层数据库表中新增一条记录

若希望null中变成其他数据 需要使用update 语句进行更新操作

insert 语句中字段的名字可以省略么

insert into  t_student() values(4,'zhangsan','m','','');能插入

insert into  t_student() values(5,'zhaoliu') ; 后面没有足够字段的话  不能匹配 

结论 建议 不要将前面的字段省略 若省略就表示将表中所有的字段全部加上 无法一一对应

省略之后程序不健壮  无法修改表结构 修改表结构 可能导致insert语句执行失败

插入中文

insert into t_stdent (no,name) values (5,'王五');

插入失败因为dos窗口是GBK的编码方式 但是数据库只能接受UTF8

使用MYSQL Front工具插入数据 MYSQL的客户端软件 在实际开发中使用较多

使用mysq front 工具插入数据成功在DOS 窗口中使用select 语句查询的时候出现乱码怎么解决

怎么解决

修改查询结果集的显示编码方式 这里修改的不是DOS 窗口

set character_set_results = ‘GBK’; 只对当前会话有效

查看MYSQL的相关字符编码方式 show variables like '%char%'; 

底层接受utf8  要把运行窗口改成utf8 或者 把 数据库即底层改为gbk   但是都不用很麻烦

用mysql图形化管理 MySQL Front  端口3366连接类型 direct 只是种辅助工具

show variables like '%char%';查看编码格式

set character_set_results = 'GBK';查看结果的编码表格式设为GBK

退出后重进 恢复原样

set character_set_results 只对当前会话 有效

8、创建表格的时候给字段添加默认值

drop table if exists t_student;

create table t_student(

no int(10),

name varchar(32),

sex char(1) default 'm' --性别默认男

);

关于SQL脚本

怎么查看SQL脚本

该文件是一个普通的文本文件 后缀名.sql 被称为SQL脚本

在SQL脚本中有大量的SQL语句 想批量执行SQL语句 可以将这些SQL语句写入SQL脚本文件

直接使用source执行这个脚本 可以执行大量的SQL语句

若项目中期就职  可能数据库表 以及表中的记录都已经准备好了

可能Team Leader 会直接给程序员一个sql脚本 直接执行这个SQL脚本 

将底层数据库中的数据完成初始化就可以开发了[64MB 可以使用subline Text工具打开]

9、获取系统当前时间

select now();

创建表 机构表

create  table t_organization(

code char(10),

name varchar(32),

createTime date

);

insert into t_organization (code,name.createTime) values('23','河南省',now());

10、表的复制 (快速创建表)

create table emp1 as select * from emp;

create table emp1 as  selectempno,ename,sal from emp; 复制了3个字段根据 查询结果创建表

11、将查询结果插入到某张表中

insert into emp2 select * from emp2;  不能用超过 被插入表 的字段个数 

12、增/删/改 表的结构

desc t-student;

给t_student 表增加一个联系电话【增】

alter table t_student add tel varchar(10);

将t_student 表格中的tel字段长度扩展到20个长度【改】

alter t_student modify tel varchar(20);

将t_student 表格中的tel字段删除【删】

alter table t_student drop tel;

13、增/删/改 表中的数据【insert、update、delete DML语句】

update 

update语句的语法格式

update tablename set 字段名 = 字段值,字段名 = 字段值,字段名 = 字段值 where 条件

注意:update 没加 条件会对所有数据进行更新

将no = 3的记录那么修改为zhangsan  

update t_student set name = 'zhangsan' where no=3;

将所有的那么都修改为lisi

update t_student set name ='lisi' ;

将员工名字中含有o的都改成zhangsan

update t_student set name ='zhangsan' where ename like '%O%';

将岗位为'MANAGER' 的工资提高10%

update t_student set sal = sal*1.1 where job = 'MANAGER';

delete

delete语句的语法格式

delete from tablename where 条件

注意:如果没有条件限制 会将这张表中所有的记录全部删除

删除学号=3的学生

delete from t_student where no=3;

select count(*) from t_student; 查看总数

将20部门中的MANAGER删除

delete from emp where job = 'MANAGER' and deptno =20;


约束 

1、什么是约束 为什么要使用约束

约束对应的英语单词 constraint

约束实际上就是表中数据的限制条件

表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效

t_user 用户信息

name 添加约束保证不重复  保证记录有效完整

zhangsan

2、约束包括哪些

非空约束 not null

唯一性约束 unique

主键约束 primary key 简称 PK

外键约束 foreign key 简称FK

检查约束【目前MySQL不支持 ORACLE数据库支持】

3、

not null 约束的字段不能为NULL值 必须给定具体的数据

创建表 给字段添加非空约束【创建用户表 用户名不能为空】

drop table if exists t_user;

create able t_user(

id int(10),

name varchar(32) not null,

email varchar(128)

);

insert into t_user (id,name,email) values(1,'zangsan',1121@');

insert into t_user (id,name,email) values(1,'3214213@'); 出错 name have a default value

阅读全文
0 0
原创粉丝点击