sql学习笔记(day1)



参考网站:
廖雪峰的博客
w3cshool
菜鸟教程

学习环境:
linux,mysql

廖老师博客原文:

虽然SQL已经被ANSI组织定义为标准,不幸地是,各个不同的数据库对标准的SQL支持不太一致。并且,大部分数据库都在标准的SQL上做了扩展。也就是说,如果只使用标准SQL,理论上所有数据库都可以支持,但如果使用某个特定数据库的扩展SQL,换一个数据库就不能执行了。例如,Oracle把自己扩展的SQL称为PL/SQL,Microsoft把自己扩展的SQL称为T-SQL

一些英语单词(^_^)(sql命令)

mysql -u root -p 连接本地sql
DROP DATABASE 删除数据库
INSERT INTO 插入
CREATE DATABASE 创建数据库
AUTO_INCREMENT 自增
SELECT FROM 查询
OR AND NOT 优先级依次升高
-- 注释一行
WHERE 条件查询
ORDER BY 按升序排序
ORDER BY id DESC 按id降序排列
LIMIT 3 OFFSET 0 每页三条,从第一条开始(第一条索引号为0)
COUNT( ) 计数
SUM( ) AVG( ) MAX( ) MIN( ) 和,平均,最大值,最小值
GROUP BY id 按id分组
SHOW DATABASES 查询所有存在的数据库
LENGTH() 检查变量长度
  • select table_name from information_schema.tables where table_schema=’当前数据库’;查询当前数据库所有数据表;information_schema是mysql自带数据库,其中保存着关于MySQL中其他数据库的信息(相当于主菜单???)
  • set global general_log=off; 开启通用日志进行排错

ubuntu安装mysql

执行sudo apt search mysql查看仓库mysql版本
仓库里的mysql版本是5.7
直接使用apt install mysql-server安装,将会出现一些莫名的问题.
解决方法

安装命令行补全工具

pip3 install -U mycli
安装完成后
输入mycli -u root,启动

注意

sql(Structured Query Language)
1.关键字不区分大小写
2.innoDB,MyISAM引擎
3.MySQL,MariaDB,PolarDB,AuroraDB
4.某些数据库系统要求在每条 SQL 命令的末端使用分号
5.数据库在插入数据时会自动分配一个自增整数作为主键
6.使用GUID算法生成主键(mac地址,时间戳,随机数等自动生成)
7.数据库数据以表格的形式出现

概念

1.表(TABLE):表的每一行称为记录,表的每一列称为字段
2.冗余():存储两倍数据,降低了性能,但提安全性.
3.主键(PRIMARY KEY):主键数据不能重复.关系数据库会自动创建主键索引.使用主键索引的效率是最高的,因为主键会保证绝对唯一(字段值相似度越低,索引效率越高),可设置多个主键(称为联合主键,此时允许一列有重复)
4.外键():外键用于关联两个表。
5.复合键():复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
7.索引(INDEX):使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录.
8.表头(HEADER): 每一列的名称;

数据类型

整型,浮点型无符号(UNSIGNED)最大值大小翻倍

整型(浮点型) 日期时间类型 字符型
TINYINT(1字节) DATA(3) CHAR(0~255字节定长)
SMALLINT(2字节) TIME(3) VARCHAR(变长)
MEDIUMINT(3) YEAR(1) TINYBLOB(二进制字符串)
INT(4) DATETIME(8) BLOB
BIGINT(8) TIMESTAMP(4) MEDIUMBLOB
FLOAT(4) TEXT
DOUBLE(8) MEDIUMTEXT


该表记录不完整
未完…