数据库
提示:
数据库中的注释的符号:/* */ # --
MySQL数据类型
(tinyint byte) (smallint short) (int int) (double double)
字符串类型
Mysql中提供两种字符串,char varchar
char(n) 定长字符串 范围:n:小于255字符
varchar(n) 不定长的字符串 n:指定为65535个字节,其中n仍然指定字符串
char(10) 如果是存放113,占用三个字符,其他的字符用空格进行填满 varchar(10),加入放入123三个字符,只会占用三个字符,不会用空格进行填充,不会造成资源的浪费
面试题:char和varchar有什么区别
varchar()适合放长度不固定的的数据,虽然效率会比char类型的略低一些,但是不会有空间上的浪费
char()适合存储长度固定的数据,这样就不会有空间上的浪费,效率上还会比varchar()方法高一些
日期的类型:
date :日期格式 年月日
time:时间格式,时分秒
datetime:时间加日期:格式年月日时分秒
timestamp:时间戳,格式是年月日 时分秒
datetime和timestamp两种方法的异同:
不同点:datetime:表示的是年月日加时分秒,存储的和显示的内容是相同的,范围是1000-9999(年份)
timestamp:代表的是从1970年一月一日到指定的日期的毫秒值 范围:1979-2038(年份),可以自动的更新时间为当前的时间
查看建表的语句:show create table Student; 默认的是创库
进行查看表结构的语句:desc Student;
字符串和日期都是单引号
数据库中的增删改查的语句
插入数据的乱码的问题:
解决的方案,确认在建库的语句是不是指定了UTF-8,
create database mydb1 charset utf-8,如果建库时候没有指定编码,默认的编码是latin1,而latin1中没有中文,所以在存储数据时候,必然会出现乱码的问题,因此要将库进行删除,然后指定编码,然后进行重新创建数据库
或者直接将数据库的编码utf-8 alter datebase 库名 charset utf-8
set names GBK 只对当前的窗口有效,下一次需要进一步进一步配置
mysql数据库的字段约束
思考1:如果id是编号,编号应该是唯一的且不能为空,如何保证这一点?
1、主键约束:如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。
添加主键约束:
create table Student(id int primary key, ...);
2、唯一约束:如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。
添加唯一约束:
create table user(username varchar(50) unique, ...);
3、非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。
添加非空约束:
create table user(password varchar(50) not null, ...);
思考2:在插入数据时,如何保证插入的id不会因为重复而报错?
可以采用主键自增长策略,如果id主键是数值,可以设置主键自增,即在插入数据时,给id赋值一个null,数据库如果检测到id设置了自增策略,会自动获取一个id值插入到表中,而且每次插入完之后,都会自增1
思考3:如果id主键设置了自增后,在插入数据时,是否可以设置id的值?
可以,如果给自动增长的主键id设置了一个值,只要值不冲突,是可以设置的。并且设置完后,数据表中保存的自增变量的值,会在设置值的基础上+1
知识点的运用:
一、建库、建表,插入记录、修改记录、删除记录
----------------------------------
01、删除mydb2库(如果存在)
drop database if exists mydb2;
02、再次创建mydb2库,指定编码为utf8,并选择mydb2库
create database mydb2 charset utf8;
use mydb2;
03、在mydb2库中,创建员工(emp)表,并添加如下列:
编号(整型、主键、自增)
姓名、性别ÿ