MYSQL基本知识

1. 常用SQL命令

(1) 修改数据

UPDATE user SET upwd = ‘77777’,isOnline = ‘n’ WHERE uid=‘1’;

(2) 删除数据

DELETE FROM user WHERE uid=‘2’;

2计算机如何存储字符

(1) 如何存储英文字符

ASCLL:对128个英文字母及其符号的存储
Latin-1:对256个欧洲字符进行编码,有256个,兼容ASCLL

(2) 如何存储中文字符

GB2312 (GB:国家标准) 对常用的6000多汉子进行了编码,兼容ASCLL
GBK:对两万多汉字进行编码,兼容GB2312
Unicode:对世界上主流国家常用语言进行了编码,兼容ASCLL。不兼容GB2312,GBK 等,具体使用分为 utf-8,utf-16, utf-32
中文乱码原因:Mysql中默认使用Latin-1编码。

(3) 解决myql中文乱码

脚本文件另存为的编码为utf8
客户端链接服务器端的代码为utf-8
Set names utf8;
服务器端创建数据库使用编码为utf-8
Create database xz charset=utf8;
练习:编写脚本文件01.sina.sql 先丢弃在创建数据库sina,设置编码为utf-8 ,进入数据库,创建保存新闻数据的表new, 保护有编号nid, 标题title, 发布时间ctime, 详情detail, 来源origin: 插入若干条数据, 修改1条删除1条

#设置客户端连接服务器端编码
SET NAMES UTF8;
DROP DATABASE IF EXISTS sina;
CREATE DATABASE sina CHARSET=UTF8;
#进入sina这个数据库
USE sina;
#创建news这个表
CREATE TABLE news(
 nid  INT,
 title VARCHAR(10),
 ctime	VARCHAR(10),
 detail VARCHAR(300),
 origin VARCHAR(12)
);
#插入数据
INSERT INTO news VALUES('1','中国梦','2020-7-1','新中国未来发展','凤凰网');
INSERT INTO news VALUES('2','中国梦','2020-7-2','新中国未来发展','科技网');
INSERT INTO news VALUES('3','中国梦','2020-7-3','新中国未来发展','科技网');
INSERT INTO news VALUES('4','未知','2020-7-4','未来发展','华尔街网');
INSERT INTO news VALUES('5','华为梦','2020-7-5','华为未来发展趋势','BBC');
#修改数据
UPDATE news SET origin = '军事网', detail='2020发展目标' WHERE nid='1';
#删除数据
DELETE FROM news WHERE nid='3';
#尽量查询在交互使用 select * from news

2.列类型

创建表的时候,指定的列存储的数据类型
Create table t1(id类型)

(1) 数值型 (可以不加引号)

Tinyint 微整型,占1个字节
TB GB MB KB BYTE(字节)
Tinyint 微整型,占1个字节,范围 -128~127
Smallint 小整形,占2个字节, 范围 -32768~32767
Int 整型 范围占4个字节 范围 - 2147483648~ 2147483647
Big 大整型,占8个字节

(2) 浮点型(10的n次方实现左右移动)

12345.6789
123456.789e+

Float:单精度,占4和字节,范围比int大很多,存储的精度不够尤其是数字越大影响越大
Double:双精度 占8和字节
Decimal(M,D):定点小数,小数点不会发什么变化,M代表总的有效位数,D代表小数点后的有效位数。
Boolean/bool 布尔型,只有两个值,分别是true(1) 和 false(0);真正的存储的时候会转为tinyint,也可以存储数字。Mysql没有真正的布尔型。常用于存储只有两个的数据,列如是否在线,是否登陆

(3)日期时间型 (必须加引号)

   Data 日期型  2020-10-20
   Time 时间型  15:20:30
   DateTime 日期时间型 ‘2020-10-20 15:20:30’ 

(4)字符串型 (必须加引号)

Varchar(M) 变长字符串,几乎不会产生空间浪费,操作速度相对慢,M的最大值65535,常用存储变化长度的数据,列如用户名,密码,文章
Char(M) 定长字符串,可能会产生空间浪费,操作速度相对快,M的最大的值为255常用存储固定长度的数据,例如身份证,手机号
Text(M) 大型变长字符串,M最大值是2G

练习:使用合理的列类型,编写脚本文件02._xuezi.sql ,先丢弃在创建数据库xuezi,设置编码为utf8,进入数据库,创建保存笔记本数据表laptop, 包含编号lid, 标题title,价格price 库存量stockcount 上架时间sheiftime 是否为首页推荐isindex 插入若条数据

#设置客户端链接服务器端编码
SET NAMES UTF8;
#丢弃数据库,如果存在
DROP DATABASE IF EXISTS xuezi;
#创建数据库
CREATE DATABASE xuezi CHARSET=UTF8;
#进入数据库
USE	xuezi;
#创建保存数据库笔记本数据的表
CREATE TABLE laptop(
  lid INT,
  title VARCHAR(128),
  price DECIMAL(7,2),
  stockcount SMALLINT,
  sheiftime DATETIME,
  isindex BOOL  #可以直接用TINYINT
);
#插入数据
INSERT INTO laptop VALUES('1','麒麟990最新芯片搭载新一代屏幕华为笔记本电脑','85122.29','2525','2020-10-15 15:20:30',FALSE);
INSERT INTO laptop VALUES('1','麒麟990最新芯片搭载新一代屏幕华为笔记本电脑','7522.29','2525','2020-10-15 15:20:30',FALSE);
INSERT INTO laptop VALUES(1,'麒麟990最新芯片搭载新一代屏幕华为笔记本电脑',9522.29,2525,'2020-10-15 15:20:30',TRUE);
INSERT INTO laptop VALUES('1','麒麟990最新芯片搭载新一代屏幕华为笔记本电脑','10522.29','2525','2020-10-15 15:20:30',FALSE);

输出
在这里插入图片描述

(5) 列约束

对要插入的数据进行特定的验证,只有符合要求才允许插入,列如插入性别只能是男女,或成绩范围
Create table t1 (lid INT 列约束)

(1) 主键约束 ——— PRIMARY KEY

声明了主键约束的列上不允许插入重复的指,一个表中只能有一个主键约束,通常加在编号列表,加快查找速度
Null 空,代表一个无法确定的值,列如无法确定员工的生日电话等,无法确定价格,是关键字,不能加引号。
主键列上不允许插入null

(2) 非空约束 ——— NOT NULL

声明了非空约束不允许插入NULL。

(3)唯一约束 —— unique

声明了唯一约束的列不允许出现重复的值,允许插入NULL,甚至多个null
一个表允许出现多个唯一约束。

(4)默认值约束 ——default

    列(登录视频网站默认非会员)
    mysql 可以使用default 关键字默认值,具体应用方式有两种
     (1)  INSERT INTO laptop VALUES('1','haha');
     (2)  INSERT INTO laptop(lid,title) VALUES('5',''Apple Ari);

(5) 检查约束 —— CHECK

    也称为自定义约束
    CHECK TABLE student(
     Score TINYINT CHECK (Score>=0 AND Score<=100)
    );
   MYSQL 不支持检查约束,默认影响数据的插入。队服务器造成较大压力,最终由JS完成

(6) 检查约束 —— CHECK

    也称为自定义约束
    CHECK TABLE student(
     Score TINYINT CHECK (Score>=0 AND Score<=100)
    );
   MYSQL 不支持检查约束,默认影响数据的插入。队服务器造成较大压力,最终由JS完成

(7) 外键约束 —— foreign key

  外键列上的取值范围需要在另一个表的主键列中出现过,外键和对应的主键列的类型一致允许为null
  foreign key(列) references另一个表(主键列)

(8) 自增列

   auto_increment:自增长,在插入编号时,无需手动赋值。
  只需要插入NULL就会过去当前的最大值,然后加1插入。

(注意:
(1)必须加在主键列
(2)必须手动赋值

练习,先丢弃再创建数据库tedu,设置编码UTF8,
创建保存部门数据的表dept,包含部门编号did,部门名称dname(添加唯一约束),插入以下数据
10 研发 20 市场 30 运营 40 测试
创建保存员工数据的表emp,包含有编号eid
姓名ename(非空约束),性别sex(默认值),生日birthday,工资salary,所属部门编号deptId (添加外键约束)

SET NAMES UTF8;
DROP DATABASE IF EXISTS tedu;
CREATE DATABASE tedu CHARSET=UTF8;
USE tedu;
CREATE TABLE dept(
  did INT PRIMARY KEY ,
  dname VARCHAR(10) UNIQUE
);
INSERT INTO dept VALUES
(10,'研发'),
(20,'市场'),
(30,'运营'),
(40,'测试');
CREATE TABLE emp(
  eid int PRIMARY KEY AUTO_INCREMENT,
  ename VARCHAR(8) NOT NULL,
  sex BOOL DEFAULT 0,
  birthday DATE,
  salary DECIMAL(8,3),
  #eid这列作为外键,这一列的取值到dept表did中取
  deptid  INT,
  FOREIGN KEY (deptid) REFERENCES  dept(did)
);
INSERT INTO emp VALUES(1,'张飞',DEFAULT,'1999-02-13','95620.32',20);
INSERT INTO emp VALUES(NULL,'豆芽',DEFAULT,'1099-02-13','95620.32',30);
INSERT INTO emp VALUES(NULL,'吃',DEFAULT,'1789-02-13','95620.32',20);
INSERT INTO emp VALUES(NULL,'白马',DEFAULT,'1932-02-13','95620.32',10);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值