day2(数据库SQL)

 标准SQL语句分类

1、DDL:Data Define Language 定义数据结构
(CREATE/DROP/ALTER 数据库、表)
2、DML:Data Munipulate Language 操作数据
(INSERT/DELETE/UPDATE)
3、DQL:DATA Quary Language 查询数据
(SELECT)
4、Data Control Language 控制用户权限

(GRANT授权/REVOKE授权)

 

1、计算机存储字符

   (1)如何存储英文字符

  ASCII: 总共有128个,对所有的英文字符及标点符号进行了编码。Hello  --> 72102108108111

  Latin-1 :总共有256个,兼容ASCII码,同事对欧洲符号进行了编码。MySQL默认就使用这种编码。

   (2)如何存储中文字符

  GB2312:  对常用的6千多汉字进行了编码,兼容ASCII码

  GBK:对2万多个汉字进行了编码,兼容GB2312

  BIG5:台湾繁体字编码,兼容ASCII 

  Unicode:对世界上主流的语言常用的字符进行了编码,兼容ASCII,不兼容GBK,GB2312,BIG5等系列。具体分为UTF-8、UTF-16、UTF-32等存储方案。

   (3)解决MySQL存储中文乱码

  sql脚本文件存储的编码为UTF-8

  客户端连接服务器使用的编码为UTF-8

  服务器端创建数据库存储使用的编码为UTF-8

#设置客户端连接服务器端使用的编码为UTF-8

  SET NAMES UTF8;

#创建数据库,生命存储的编码为UTF8

  CREATE DATABASE xz CHARSET=UTF8

2、MySQL中的列类型

     创建数据表的时候,指定的列可以存储的数据类型。

  CREATE TABLE book(bid   列类型);

  (1)数据类型

    TINYINT    微整形  占1个字节(范围-128--127)

              SMALLINT      小整形  占2个字节(范围-32768--32767)

    INT     整形  占4个字节(范围--2147483648--2147473647)

    BIGINT   大整形  占8个字节

    FLOAT       单精度浮点型,占4个字节,范围比INT大的多。可能产生计算误差。

    DOUBLE   双精度浮点型,占8个字节,范围比BIGINT大的多。

    DECIMAL(M,D)  定点小数,不会产生计算误差,M代表总的有效位数,D代表小数点后的有效位数、

      BOOL      布尔型,只有两个结果TRUE、FALSE

 

       (2)日期时间类型

    DATE     日期型:2018-12-31

    TIME      时间型:14:22:30

    DATETIME  日期时间型:‘2018-12-31  14:22:30’

 

       (3)字符串类型

    VARCHAR(M)  变长字符串,不会产生空间浪费,操作速度相对较慢,M最大值是65535

    CHAR(M)         定长字符串,可能产生空间浪费,操作速度相对较快,M最大值是255,用于存储手机号码,身份证号码等固定长度的字符。

    TEXT(M)     大型变长字符串,最多存2G

3、列约束

  MySQL 可以对插入的数据进行特定的验证,只有满足条件才允许插入到数据表中,否则被认为是非法的插入

  例如:一个人的性别只能是男或女,一个人的年龄0~100之间。

  (1)主键约束——PRIMARY KEY

    声明了主键列上的值不能出现重复,表中查询的记录会按照主键由小到大排序——加快查找速度;通常主键添加到编号列中。

    注意:一个表中只能有一个主键

  (2)唯一约束——UNIQUE

    声明了唯一约束的列上不能插入重复的值,允许插入NULL,而且允许插入多个NULL

    NULL 表示空,在插入数据时,无法确定要保存的数据。

    例如:无法确定员工的姓名、工资。  

  (3)非空约束——NOT NULL

    声明了非空约束的列上不能插入NULL

  (4)默认值约束——DEFAULT

    可惜使用DEFAULT关键字声明默认值,有两种方式可以应用默认值

    INSERT INTO xz_laptop_family VALUES(40,'苹果',DEFAULT)

    INSERT INTO xz_laptop_family(fid,fname) VALUES(50,'华硕');

  (5)检查约束——CHECK

    检查约束可以对插入的数据进行检验

    CREATE TABLE student(age TINYINT CHECK(age>=18 AND age<=60));

  MySQL不支持检查约束,会降低数据的插入速度。

  (6)外键约束——FOREIGN KEY

    声明了外键约束的列,取值必须在另一个表的主键列上出现过,列类型要保持一致,取值可以使NULL

    FOREIGN KEY(familyId)  REFERENCES xz_laptop_family(fid) 

        

      

     

 

 

posted @ 2019-10-14 19:16  无双灬灵  阅读(315)  评论(0)    收藏  举报