①
扩展1:
字节也叫Byte,是计算机基础存储单位,电脑中一个中文占2个字节。
8bit(位)=1Byte(字节)
扩展2:MySQL常用管理命令:
quit; 退出服务器连接
show databases; 显示服务器上所有的数据库
use 数据库名; 进入指定的数据库
show tables; 显示当前数据库中所有的数据表
desc 表名; 描述表中所有的列(表头) 注意事项:所有命令以英文的分号结尾。
扩展3:如何进入并操作数据库?
打开xampp并启动MySQL->进入shell->输入mysql -uroot进入交互模式
->输入mysql -uroot<拖拽数据库文件
1. 数据库列类型:数值型,日期时间型,字符串型
- 数值型:
○ TINYINT 微整型,占1个字节,范围-128~127 (2的7次方,有一个符号位)
○ SMALLINT 小整型,占2个字节,范围-32768~32767
○ INT 占4个字节 (2的31次方,有一个符号位)
○ BIGINT 大整形,占8个字节
○ FLOAT(M,D) 单精度浮点型,占4个字节,最多3.4e38,M D可省略不写。
○ DOUBLE(M,D) 双精度浮点型,占8个字节,M D可省略。
○ DECIMAL(M,D) 定点小数,不会产生计算误差,M代表总的有效位数,D代表小数点后的有效位数
○ BOOL/BOOLEAN 布尔型,只有两个值TRUE/1,FALSE/0,真正存储的时候自动转成TINYINT,TRUE和FALSE不能加引号
- 日期时间型
○ DATE 日期型,‘2020-8-20’
○ TIME 时间型,‘20:34:12’
○ DATETIME 日期时间型,‘2020-8-20 20:34:12’
- 字符串型
○ VARCHAR(M) 变长字符串,M指定长度,不会产生空间浪费,操作速度相对慢
○ CHAR(M) 定长字符串,操作速度快,M最大255
○ TEXT 大型变长字符串
注意:如果xamppde Mysql数据库设置UTF8之后还是中文乱码解决办法
先quit退出交互模式,然后直接在命令行执行chcp 65001
注意:如果xamppde Mysql数据库设置UTF8之后还是中文乱码解决办法先quit退出交互模式,然后直接在命令行执行chcp 65001 |
---|
2. 列约束:对插入的数据进行验证
- 主键约束:PRIMARY KEY
列上不允许插入重复的值,一个表中只能有一个主键
- 非空约束:NOT NULL
- 唯一约束:UNIQUE
声明的唯一约束的列不允许插入重复的值,允许插入NULL
- 默认值约束: DEFAULT 数量
在列类型后加入DEFAULT 数量,有两种方式设置默认:在插入的值直接写DEFAULT;
INSERT INTO laptop VALUES(50,‘华为’,DEFAULT);
或者给特定的列给值,设置默认值的不给值INSERT INTO laptop(fid,fname) VALUES (60,‘小米’)
- 检查约束:CHECK MySQL不支持
- 外键约束:FOREIGN KEY
在创建的表中再加一行,FOREIGN KEY (familyId) REFERENCES laptop_family(fid); 把familyId作为外键,引用laptop_family的fid列。
外键的取值得到另一个表的主键类中取 FOREIGN KEY(列) REFERENCES 数据表(主键列)
- 自增:AUTO_INCREMENT 写
在列类型后面,直接赋值为NULL,只适用于整数列的主键列上
3. 简单查询
- 查询特定的列:SELECT ename,salary FROM emp; (查询员工姓名和和工资表)
- 查询所有的列:SELECT * FROM emp;
- 给列起别名: SELECT ename AS 姓名,salary AS 工资 FROM emp; (查询所有的员工姓名和工资,使用汉字别名,AS关键字可以省略)
- 显示不同的记录合并相同的项:SELECT DISTINCT deptId FROM emp; (查询员工分布在哪些部门)
- 在查询时执行计算:SELECT 2+3*5;
- 查询结果集排序:
SELECT * FROM dept ORDER BY did ASC; (查询所有部门,按照编号从小到大排序 升序)
SELECT * FROM dept ORDER BY did DESC; 从大到小,降序 - 条件查询:
SELECT * FROM emp WHERE eid=5; (查询出编号为5的员工) - 模糊条件查询:
SELECT * FROM emp WHERE ename LIKE ‘%e%’; 查询姓名中有字母e的员工有哪些(%表示e前后面可以有零个或多个字符;_表示可以匹配任意1个字符) - 分页查询:start:表示从哪一页数据开始查询;count:表示每页的数据量
start=(当前的页码-1)*每页的数据量
假设每页显示5条数据:
第一页 SELECT * FROM emp LIMIT 0,5;
第二页 SELECT * FROM emp LIMIT 5,5;
- 复杂查询(聚合查询,分组查询)
聚合查询实例:使用编号查询所有男员工的数量
SELECT COUNT(eid) FROM emp WHERE sex=1;
COUNT()数量、SUM()总和、AVG()平均值、MAX()最大值、MIN()最小值
分组查询实例:查询出男女员工的最高工资、最低工资 (只能查询当前分组条件)
SELECT sex,MAX(salary),MIN(salary) FROM emp GROUP BY sex;
- 子查询:一个SQL语句的查询结果作为另一个SQL语句的查询条件
- 多表查询(内连接,左外连接,右外连接,全连接)