博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL基础-建表
阅读量:5220 次
发布时间:2019-06-14

本文共 4107 字,大约阅读时间需要 13 分钟。

一、建表

1、创建表的两种方式

*客户端工具 *SQL语句

2、使用SQL语句创建表

表名和字段名不能使用中文;(一般为字母开头,字母、数字、下划线组成的字符串);CREATE TABLE关键字后跟上表名,字段名在括号中列出且以逗号分隔;最后以分号结尾;不区分大小写,但最好关键字都大写;按一定的规则缩进;每个字段都需要设置数据类型;常用的数据类型有以下几个大类:    字符类    数值类    日期和时间类    二进制类

3、常见的数据类型

字符串数据类型

数据类型的两个作用:    存储什么数据     如何储存字符串数据类型:    姓名     身份证     家庭地址    电话号码     书名    电脑型号所有的文字都是字符,都可以使用字符串数据类型来存储!定长字符串:    长度固定的字符串类型,其长度是在创建表时指定的。比如邮政编码‘510623’,是6位的字符。如果向一个6位的定长字符串类型的字段,只插入2位字符,则数据库默认会在2个字符末尾补4个空格,以补足6位。不定长字符串:    长度不固定的字符串类型,创建表时指定一个最大长度,或不指定长度。比如姓名,有2位、3位、4位甚至更长的。    比如:‘冯巩’、‘周杰伦’、‘仓央嘉措’、‘库尔班-热合曼’。定长字符串优缺点:    优点:处理性能高,产生较少的存储碎片    缺点:占用存储多不定长字符串优缺点:    优点:占用存储少    缺点:处理性能低,产生较多存储碎片

CHAR(10)和VCHAR(10):

首先明确的是,char的长度是不可变的,而varchar的长度是可变的;定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的;char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的;char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据;VARCHAR虽然比CHAR节省空间,但是如果一个VARCHAR列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR会更好一些。

数值数据类型

所有的定量的数值,都可以用数值数据类型来存储!如:    年龄     身高     厚度    速度     利率     人数整数数值:    不带小数点的数值。比如,中国有4个直辖市,2016年深圳市常住人口有11988400人;小数数据值:    带小数点的数值。比如,珠穆朗玛峰高度8844.43米,一年期定期存款利率2.75%;

日期和时间数据类型

如:    报名日期     国庆节     下班时间    下单时间     秒表记时     时间间隔日期:    只包含年、月、日的日期。比如,中华人民共和国建国日期是1949年10月1日;时间:    包含时、分、秒、毫秒的时间。比如,工作日上班时间08:30:00;日期+时间:    包含年、月、日、时、分、秒、毫秒的日期和时间。比如,从银行取出1000元现金的时间是2017年9月2日12:35:11.734

二进制数据类型

如:    图片     多媒体图像     文档

4、设置字段默认值

为什么要为字段设置默认值?    当插入数据但不想或不需要对某个字段赋值时,如果字段有设置默认值,则会以默认值来填充该字段的值而不会导致错误;比如,在网上下订单时,    对于下订单日期字段,可以使用数据库的系统变量“当前日期”,这样就不需要在下订单时,单独再对下订单日期字段进行赋值;    提高使用性能;如果一个字段不赋值,那么这个字段就会被赋NULL值,会影响使用性能;使用SQL语句设置字段默认值:关键字DEFAULT设置默认值需要注意的几个问题:    表中所有的字段都可以设置默认值;    默认值的数据类型必须与字段保持一致;(不一致时,数据库虽然有时也会默认做隐式类型转换,但并不推荐这样做。    一方面是这样做并不规范,另一方面是这样做可能会导致未知的错误);    除主键字段外,建议其他所有字段都设置默认值;如何赋默认值?    用mysql建数据表设置默认值:    int 类型:default 1; (直接加数值)    varchar类型:default 'aaa'(用单引号)

二、建表

1、设置注释

使用SQL语句设置字段默认值:关键字COMMENTCREATE TABLE teacher(    teacher_id varchar(20) COMMENT ‘老师编号’,    teacher_name varchar(50) COMMENT ‘老师姓名’,    gender varchar(10) COMMENT ‘性别’) COMMENT ‘老师’;假如对一张已经存在的表添加注释,可以使用ALTER TABLE关键字:alter table teacher comment '老师’;

2、设置默认值

为什么要设置默认值?对于刚才的例子,我们在CSDN网站上注册一个新用户时,除了用户名、密码、手机号外,还有一些非必填信息,比如性别、QQ号、职业等。这些信息如果没有填写,那向数据库插入时,就可以使用NULL值替代。如果性别、QQ号、职业等,这些字段被设置为NOT NULL,不可以插入NULL值,那怎么办?如何设置默认值?使用DEFAULT关键字。CREATE TABLE teacher(    teacher_id varchar(20)    teacher_name varchar(50) efault ‘’,    gender  varchar(10));设置默认值需要注意的几个问题:    表中所有的字段都可以设置默认值;    默认值的数据类型必须与字段保持一致;(不一致时,数据库虽然有时也会默认做隐式类型转换,但并不推荐这样做。    一方面是这样做并不规范,另一方面是这样做可能会导致未知的错误)    除主键字段外,建议其他所有字段都设置默认值;常用默认值:    字符型:        空字符串 ''    数值型:        0、1    日期和时间型:        '1900-01-01'        '0001-01-01'        '9999-12-31'        '00:00:00’        CURRENT_DATE

3、设置主键

主键:唯一标识表中每一行的某一列或多列。使用PRIMARY KEY关键字定义。CREATE TABLE teacher(    teacher_id    teacher_name    gender     primary key ( teacher_id ));主键的特点:一个表只能有一个主键;一个表中的所有行,主键字段的值不允许重复;主键的作用是保证数据的唯一性和完整性;主键字段可以为多个,甚至是表中所有字段一起做主键;多个字段一起做主键时,我们称为联合主键或重复主键;不过一般来说不会超过5个,否则会影响操作性能;允许为NULL的字段不能做主键字段;主键不应包含动态变化的数据;主键字段不允许更新??   永远也不要更新主键的值;

4、特殊的NULL

在创建表时,对于表中的每个字段,可以指定字段是否必须包含值。对于可以不包含值的字段,可以向字段中插入NULL值。CREATE TABLE teacher(    teacher_id varchar(20) NOT NULL,    teacher_name varchar(50) NOT NULL,    gender  varchar(10) NULL);每个字段,要么是NOT NULL,要么是可为NULL。创建表时,可以不指定,默认情况下是可为NULL,也就是可以不包含值。NULL是什么?    NULL      ≠ 0          ≠  空格        ≠ 空字符串‘’          ≠ NULL    null 它用来表示一种“不知道”、“不确定”的状态。NULL有什么用?    比如,我们在CSDN网站上注册一个新用户时,除了用户名、密码、手机号外,还有一些非必填信息,比如性别、QQ号、职业等。    这些信息如果没有填写,那向数据库插入时,就可以使用NULL值替代。如何判断某个字段的值是否为NULL?    CREATE TABLE teacher    (        teacher_id varchar(20) NOT NULL,        teacher_name varchar(50) NOT NULL,        gender  varchar(10) NULL    );    gender is null    gender is not null关于NULL值使用时的一些建议:    允许NULL值的字段,不能作为主键字段;    尽量避免将字段设置为可为NULL,事实上,应该定下规范,所有字段都必须设置为NOT NULL;

转载于:https://www.cnblogs.com/weiyiming007/p/11423637.html

你可能感兴趣的文章
STL之map UVa156
查看>>
从Angular.JS菜鸟到专家
查看>>
再谈Vmware NAT的配置和路由流程
查看>>
javaScript数组去重方法汇总
查看>>
评价意见整合
查看>>
MySQL表的四种分区类型
查看>>
C++变量的“总分性”(Mereology)
查看>>
应用软件学习心得之mapgis功能学习
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>
JS之放大镜效果
查看>>
基于UML网络教学管理平台模型的搭建
查看>>
不同的色深条件(8、16、24、32),像素绘制方式
查看>>
二分法原理
查看>>
push指令的执行过程
查看>>
陌生的熟悉地
查看>>
python 案例 011(猜数值)
查看>>
[转]Struts2理解--动态方法和method属性及通配符_默认Action
查看>>
编写一个程序,指定一个文件夹,能自动计算出其总容量
查看>>
排球积分程序
查看>>