Web前端之sql(2)

一、复习

1.关系型数据库
Server -> Database -> Table -> Row -> Column

2.MySQL数据库
(1)服务器端启动
(2)客户端连接

 mysql.exe -h127.0.0.1 -P3306 -uroot -p
 mysql -uroot

(3)MySQL常用管理命令

  quit/show databases/use 数据库名/show tables/desc 表名

(4)SQL命令

3.标准SQL语句分类
DDL: Data Define Language 定义数据结构

CREATE/DROP/ALTER

DML: Data Munipulate Language 操作数据

INSERT/DELETE/UPDATE

DQL:Data Query Language 查询数据

 SELECT

DCL:Data Control Language 控制用户权限

 GRANT(授权)/REVOKE(收权)

4.练习
创建脚本文件xz.sql,创建数据库xz,进入该数据库;

USE xz;

创建数据表user,包含uid、uname、upwd、email、phone、sex、userName(真实姓名)、registerTime(注册时间)、isOnline(是否在线)

CREATE TABLE user(
   uid  INT,
   uname VARCHAR(16),
   upwd VARCHAR(32),
   emai VARCHAR(32),
   phone VARCHAR(11),
   sex VARCHAR(1),  #M/F
   userName VARCHAR(6),
   registerTime  VARCHAR(10),  #2018-12-10
   isOnline  VARCHAR(1),  #Y/N
);

插入5条数据,删除其中2条数据,修改2条数据,最后查询结果。

INSERT  INTO  user  VALUES (‘1’,  ’dingding’, ‘123456’,  ’dingding@163.com’);
UPDATE  user  SET  isOnline = ’Y’, registerTime= ’2019-3-1’WHERE uid = ’3’;
DELETE  FROM  user  WHERE uid = ’2’;
SELECT  *  FROM  user

二、DDL详解

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存储中文乱码
Mysqld.exe是后台运行的服务端程序也是mysql服务,mysql.exe是命令行客户端程序
1° sql脚本文件存储的编码utf8
2° 客户端连接服务器端使用的编码为utf8
SET NAMES UTF8;
3° 服务器端创建数据库存储使用的编码为utf8
CREATE DATABASE xz CHARSET= UTF8;
在这里插入图片描述

练习:创建脚本文件01_dangdang.sql,创建数据库dangdang,设置编码为utf8,进入该数据库,创建保存图书数据的表book,包含bid、title、author(作者)、price(价格)、publish(出版社)、pubTime(出版时间)
插入4条记录,修改第2条记录,删除第3条记录。

   //设置客户端连接服务器编码
      SET NAMES UTF8;
     //丢弃数据库,如果存在
      DROP DATABASE IF EXISIT dangdang;
      //创建数据库dangdang,设置存储的编码
      CREATE DATABASE dangdang CHARSET=UTF8;
      #进入该数据库
      USE dangdang;
      //创建数据表
      CREATE TABLE book(
         bid   INT,
         title  VARCHAR(16),
         author  VARCHAR(6),
         price    DECIMAL(6,2),
         publich    VARCHAR(10),
         pubTime   DATE
       };
      //插入数据
      INSERT INTO book VALUES(……);
      //查询数据
      SELECT * FROM book
      //删除数据
      DELETE FROM book WHEHE bid=’’;

2.MySQL中的列类型
创建数据表的时候,指定的列可以存储的数据类型。
CREATE TABLE book( bid 列类型);
(1)数值类型——引号可加可不加
TINYINT 微整型,占1个字节 范围-128~127
SMALLINT 小整型,占2个字节 范围-32768~32767
INT 整型,占4个字节 范围 -2147483648~2147483647
BIGINT 大整型,占8个字节
FLOAT 单精度浮点型,占4个字节,范围3.4e38,范围比INT大的多,可能产生计算误差。
DOUBLE 双精度浮点型,占8个字节,范围比BIGINT大的多
DECIMAL(M,D) 定点小数,不会产生计算误差,M代表总的有效位数,D代表小数点后的有效位数
BOOL 布尔型,只有两个结果TRUE/1、FALSE/0,TRUE和FALSE不能添加引号;真正存储数据的时候,会使用TINYINT。
(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

CHAR(5) 定长VARCHAR(5) 变长
aa\0\0\0\0a\0
abab\0\0\0ab\0
abcabc\0\0abc\0
 CREATE  TABLE  t1(
   id  SMALLINT,
   age  TINYINT,
   commentCount INT,
   price  DECIMAL(6,2),
   phone  CHAR(11),
   article  VARCHAR(8000),
   pubTime  DATE
 );

3.练习:创建02_xuezi.sql脚本文件,创建数据库xuezi,使用UTF8,进入该数据库,创建保存笔记本数据的表laptop,包含lid,title、price、stockCount(库存量)、shelfTime(上架时间)、isIndex(是否为首页推荐)
插入4条记录。

  SET NAMES UTF8;
  DROP DATABASE IF EXISIT xuezi;
  CREATE DATABASE xuezi CHARSET=UTF8;
  USE xuezi;
  CREATE TABLE laptop(
     lid SMALLINT,
     title  VARCHAR(128),
     price  DECIMAL(7,2),
     stockCount  SMALLINT,
     shelfTime TIME,
     isIndex  BOOL
);

 INSERT INTO xuezi VALUES(……);

练习:创建脚本文件03_tedu.sql,创建数据库tedu,设置UTF8编码,进入该数据库。
创建保存部门数据的表dept,包含did、dname(部门名称)、empCount(员工数量)
10 研发部 3
20 市场部 2
30 运营部 2

  SET NAMES UTF8;
  DROP DATABASE IF EXISIT tedu;
  CREATE DATABASE tedu CHARSET=UTF8;
  USE tedu;
  CREATE TABLE tedu(
     did TINYINT,
     dname  VARCHAR(8),
     empCount  SMALLINT
);

INSERT INTO tedu VALUES( 10, ‘研发部’, 3 ),( 20 , ‘ 市场部 ‘, 2 ),( 30 , ‘ 运营部 ‘ , 2);

创建保存员工数据的表emp,包含eid、ename、sex、birthday(生日)、salary(工资)、deptId(所属部门的编号)
插入4条记录

  SET NAMES UTF8;
  DROP DATABASE IF EXISIT emp;
  CREATE DATABASE emp CHARSET=UTF8;
  USE empi;
  CREATE TABLE emp(
     eid SMALLINT,
     ename  VARCHAR(18),
     sex  BOOL,                      //1->男  0->女
     birthday DATE,                   //1995-110-20
     salary  DECIMAL(7,2),
     deptId  SMALLINT
);

4.列约束
MySQL可以对插入的数据进行特定的验证,只有满足条件才允许插入到数据表中,否则被认为是非法的插入。
例如:一个人的性别只能是男或者女,一个人的年龄0~100之间。
(1)主键约束——PRIMARY KEY
声明了主键列上的值不能出现重复,表中查询的记录会按照主键由小到大排序——加快查找的速度;通常主键添加到编号列中。
注意:一个表中只能有一个主键
(2)唯一约束——UNIQUE
声明了唯一约束的列上不能插入重复的值,允许插入NULL,而且允许插入多个NULL

NULL表示空,在插入数据时,无法确定要保存的数据。例如:无法确定员工的姓名、工资。

5.课后任务
(1)复习今天内容,重新编写代码
(2)练习:
创建脚本文件xz.sql,创建数据库xz,设置编码UTF8,进入该数据库。
创建保存笔记本分类的表xz_laptop_family(fid、fname、laptopCount笔记本数量)
10 联想 2 20 戴尔 2 30 小米 3
创建笔记本数据表 xz_laptop(lid、title、price、spec规格、detail详细介绍、shelfTime上架时间、isOnsale是否在售、familyId所属的分类编号)
添加7条数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值