数据库基础
一个服务器(DBMS 数据库管理系统)上能储存多个数据库,一个数据库中能储存多个表,一个表中能添加多个记录
主键 primary key
这里的主键是student_id,不得重复
student_id |
name | major |
---|---|---|
1 | 小黑 | 生物 |
2 | 小白 | 历史 |
|3|小绿|英语|
|4|小黄|生物|
关系型数据库
就是由多个有关系的二维表组成的数据库
有关系的二维表
如下面的例子,第一个表是员工表,第二个表是公司表,二者通过了第一个表的dept_id与与第二个表的id相互连接
id | name | job | dept_id |
---|---|---|---|
1 | 猪头 | CTO | 2 |
2 | 秃头 | 教师 | 1 |
3 | 贵头 | 学生 | 3 |
id | name |
---|---|
1 | 数字电路公司 |
2 | 知识图谱公司 |
3 | 人工智能公司 |
SQL的通用语法
mysql语句不区分大小写,但是建议关键字使用大写,统一规范
单行注释可以使用--表示 其中MySQL特有的是#
多行注释使用/*注释内容*/
SQL分类
- DDL语句,Data Definition Language 数据定义语言,用来定义数据库对象
- DML语句,Data Manipulation Language 数据操作语言,增删查改数据表中的数据
- DQL语句,Data Query Language 数据查询语言
- DCL语句,Data Control Language 数据控制语言,用来创建数据库用户、 控制数据库的访问权限的语言
DDL
- 查询所有数据库 SHOW DATABASES;
- 创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
- 删除数据库 DROP DATABASE [IF NOT EXISTS] 数据库名;
注意这个地方的EXISTS后面的S
SHOW DATABASES; --查询数据库
CREATE DATABASE student; --创建数据库
/*如果再次执行 创建名为student的数据库会报错*/
CREATE DATABASE IF NOT EXISTS student; --如果执行时在数据库的名字前面加上IF NOT EXISTS 就不会报错,但是会弹出警告,且数据库没有任何变化
CREATE DATABASE AIstudent DEFAULT CHARSET utf8mb4;
注意,这个地方使用的字符集是utf8mb4,因为utf8支持的是三个字节的字符,但是很多中文较为生僻的是四个字符,比如表情符号,或者是历史汉字𠀀
其次,我创建这个名称为AIstudent的数据库的时候发现了,我创建完之后查询结果是aistudent,这是为什么呢?
我查询了一下,这种情况我们需要查询我们的数据库名和表名的大小写参数lower_case_table_names
我们通过下面的语句查看大小写设置
SHOW VARIABLES LIKE 'lower_case_table_names';
我的电脑返回值是如下所示
值 | 结果 | 操作系统 |
---|---|---|
0 | 大小写敏感 | Linux |
1 | 统统转换为小写 | Windows |
2 | 按照原样储存,但是只是显示和比较时候变成了小写 | MacOS |
很明显,我的Windows电脑上的参数是1,它给我统统转换成了小写!
那我们怎么修改这个参数呢?
就不告诉你,改参数是个很危险的行为,想要的话自己去查,我不背这个锅...
删除数据库和创建数据库是一个道理,只不过需要注意一下关键词DROP,不要记混
使用(进入)数据库 USE 数据库名称;
进入数据库后我们使用语句
SELECT DATABASE();
即可查看我们当前所在的数据库名,使用这个操作时候注意后面有一个括号
既然我们已经知道了怎么进入数据库了,那么我们就引出了一个新的问题:如何退出数据库
- 切换数据库,即便你已经进入了一个数据库了,你仍然可以在当前数据库中切换到另外一个数据库
USE another_database;
- 切换到无数据库的状态
USE ;
- 上述操作都是不退出sql下的操作,那么退出sql呢?
exit;quit;\q;