一、MySQL
MySQL:采用的架构为C/S架构(客户端/服务器架构)
如图:
1.默认我们的系统上已经安装好了MySQL,首先,切换到root用户并输入密码;
2.使用MySQL首先需要开启服务器端:执行service mysqld start命令,服务器端的进程叫mysqld;
3.已开启服务器端后,客户端连接服务器:执行mysql -u root -p命令,将用户名和密码输入进行验证来连接服务器,客户端进程叫mysql;
如图:输入正确的命令与密码,即连接成功;
二、SQL语言
SQL:结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
其特点为:
1、数据描述、操纵、控制等功能一体化。
2、两种使用方式,统一的语法结构。SQL有两种使用方式。一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。
3、高度非过程化。SQL是一种第四代语言(4GL),用户只需要提出“干什么”,无须具体指明“怎么干”,像存取路径选择和具体处理操作等均由系统自动完成。
4、语言简洁,易学易用。尽管SQL的功能很强,但语言十分简洁,核心功能只用了9个动词。SQL的语法接近英语口语,所以,用户很容易学习和使用。
SQL语言主要包含下面几个部分:
DDL(data define language): 数据定义语言
DML(data manipulate language) 数据操作语言
DCL(data control language) 数据控制语言
DQL(data query language) 数据查询语言
三、DDL数据定义语言:库的核心语句与使用
数据定义语言:定义表、库、视图的结构。
3.1、库的核心语句
库的核心语句:
(1)增creat:
①create database 库名;创建一个数据库;
②create database if not exists 库名;存在则创建,否则不创建;
(2)删dorp:
①drop database 库名;删除一个数据库;
②drop database if exists 库名;存在则删除,否则不删除;
(3)改later: 基本不用;
(4)查show:
①show databases;查看整个库下所有的数据库;
②show create database 库名;查看一个库的创建信息;
③show tables;查看该库层面下的所有表;
(5)用use:
①use 库名;选定一个库使用;
数据库下清屏语句:system clear;
3.2、使用实例
库的使用实例:
◉ show databases:查询所有的数据库。
权限信息在mysql库中存储;基本配置信息在information_schema库中存储;其他库为我们自己添加的;
◉ 使用数据库:use mysql 使用mysql这个数据库
◉ show tables:查询该库下所有的表
◉ 查看user这个表:select user,host,password from user;
user这里存放的是用户的基本信息。系统这里自带了3个有名的root用户与2个匿名的root用户。
◉ 创建一个test数据库;
创建成功,我们再查看一下;
我们可以再使用show create database test;查看创建时的创建信息;
但如果我们再次创建该库,会报错;并且程序直接退出;
因此,我们为了避免这样的问题创建时输入create batabase if not exists test;只报了一个警告但SQL语句执行成功,避免了直接退出问题;
◉ 删除一个test数据库;
删除成功,我们再查看一下;
但如果我们再次删除该库,会报错;并且程序直接退出;
因此,我们为了避免这样的问题删除时输入drop database if exists test;只报了一个警告但SQL语句执行成功,避免了直接退出问题;
四、DDL数据定义语言:表的核心语句与使用
4.1、表的核心语句
表的核心语句:
(1)增create:
①create table 表名
(
字段名称 字段类型 字段约束 [注释],
字段名称 字段类型 字段约束 [注释],
…
);//创建一个表;
(2)删drop:
①drop table 表名;删除一个表
(3)改alter:
①alter table 表名 modify 字段名称 字段新类型; //修改字段类型方式1
②alter table 表名 change 字段名称 字段名称 新字段类型; //修改字段类型方式2
③alter table 表名 change 旧字段名 新字段名 新字段类型; //修改字段名
④alter table 表名 add 新字段 类型 约束; //表中新添加一个字段
⑤alter table 表名 add 新字段 类型 约束 after 某字段名; //添加一个字段到任意位置之后(除了第一个位置无法处理)
⑥alter table 表名 add 新字段 类型 约束 first; //添加一个字段到首位置
⑦alter table 表名 drop 字段名; //删除字段
⑦alter table 表名 rename 新表名; //修改表名
(4)查show:
①show tables;查看当前库下的表;
②show create table 表名;查看表的创建信息;
③desc 表名;查看表字段信息;
字段约束几个概念:
主键:非空 ,唯一。主键是能确定一条记录的唯一标识,关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键;
比如 :学生表(学号,姓名,性别,班级) ,其中每个学生的学号是唯一的,学号就是一个主键 。
外键: 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键 。
唯一键: 不能重复。
非空: 不能为空。
默认:若没有给数据用默认值代替。
varchar与char的区别:
1.首先明确的是,char的长度是不可变的,而varchar的长度是可变的。
2.定义一个char[10]和varchar[10],如果存进去的是‘abcd’,那么char所占的长度依然为10,除了字符‘abcd’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的。
3.char的存取数度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的。
4.char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。
4.2、使用实例
表的使用实例:
◉ 创建一个简单的表:先进入CY1212数据库;查看当前库下所有表(该库下没有表);
此时我们要新建一个简单的学生表;将属性转化为字段结构如下:
简单创建成功。
此时,删除刚才的表,我们再给表中的属性添加约束再创建一个学生表;
删除后再重新建表;
◉ 查看表字段信息desc Stu;查看刚才创建的表字段信息。
◉ 删除刚才的表
◉ 标准表的创建,需要加上注释COMMENT,方便你我。
重新创建一个Stu表;
◉ 查看创建表时的创建信息:show create table Stu;latin1特点为:不能存储中文;若想存储中文使用UTF-8;
◉ 修改表的字段类型方式1:alter table Stu modify sid varchar(20);
◉ 修改表的字段名:alter table Stu change sid id varchar(20);
◉ 修改表的字段类型方式2:alter table Stu change id id varchar(15);
◉ 表中新添加一个字段score(置末);
◉ 表中新添加一个字段score1到id之后(除了首位置外,可到任意位置);
◉ 表中新添加一个字段score2到首位置(首位置);
◉ 删除字段score,socre2,socre3;
◉ 修改表名;
实例2:创建一个教师信息表。其中包含:1.教师编号;2.教师姓名;3.教师年龄;4.代课科目;