MySQL入门
mysql数据库
一、入门简介
1、介绍
- MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
- MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。
- MySQL因为其速度、可靠性和适应性而备受关注。MySQL是管理内容最好的选择。
2、socket 介绍
- 客户端和服务端是使用socket链接的。
- socket中文翻译是插座,但是学术叫套接字。其实就是计算机和计算机链接的方式。
- 一个计算机使用ip+端口使用某种协议就能和另外一台机子的ip+端口链接通信。(TCP/UDP)
- mysql使用的默认端口是3306,一个客户端随便使用一个端口,就能连接上服务。
- 服务器的ip+端口是固定的,客户端往往是随机的。
二、SQL
1.SQL语句分类
-
1.DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。功能:创建、删除、修改库和表结构。
-
2.DML(Data Manipulation Language):数据操作语言,用来定义数据库记录:增、删、改表记录。
-
3.DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
-
4.DQL(Data Query Language):数据查询语言,用来查询记录。也是本章学习的重点。
2.SQL数据中的属性类型
-
TINYINT:1字节,小整数值。
-
SMALLINT:2字节,大整数值。
-
MEDIUMINT:3字节,大整数值。
-
INT或INTEGER:4字节,整型,大整数值。
-
FLOAT:单精度浮点数值。
-
DOUBLE(5,2):双精度浮点型数值,参数表示该浮点型数值最多有5位,其中必须有2位小数。
-
DECIMAL(M,D):小数值,参数表示该数值最多有M位,其中必须有D位小数。
-
CHAR:字符型,固定长度字符串类型:char(255)。你存入一个a字符,虽然a只占一个字符,但是它会自动给你加254个空格凑成255个长度。即数据的长度不足指定长度,它会补足到指定长度。
-
VARCHAR:可变长度字符串类型:varchar(65535),你存入的数据多长它就是多长。它会抽出几个字节来记录数据的长度。
-
TEXT(CLOB):mysql独有的数据类型,字符串类型。
-
BLOB:字节类型。
-
YEAR:年份值,格式为:YYYY
-
DATA:日期类型,格式为:yyyy-MM-dd。
-
TIME:时间类型,格式为:hh:mm:ss。
-
TIMESTAMP:时间戳类型,格式为上面二者的综合。
-
DATETIME:混合日期和时间值,格式为:YYYYMMDD HHMMSS.
3.SQL语句详解
当然首先需要再命令行中输入mysql -uroot -p来进入mysql。注意:1.MySQL语法不区分大小写,但是建议在写关键字时用大写。2.每一条语句后面以分号结尾。
咱们计算机默认没装那个黑窗口客户端,咱们过几天使用linux安装的时候,在完全使用黑窗口客户端。
3.1DCL(数据控制语言)语法(不重要)
该语言用来定义访问权限,理解即可,以后不会多用。需要记住的是,一个项目创建一个用户,一个项目对应的数据库只有一个。这个用户只能对这个数据库有权限,其它数据库该用户就操作不了。
3.11创建用户
用户只能在指定ip地址上登录mysql:create user 用户名@IP地址 identified by ‘密码’;
用户可以在任意ip地址上登录:create user 用户名@‘%’ identified by ‘密码’;
create user zn@'%' identified by 'zn123';
3.1.2给用户授权
语法:grant 权限1,…,权限n on 数据库.* to 用户名@IP地址;其中权限1、2、n可以直接用all关键字代替。权限例如:create,alter,drop,insert,update,delete,select。
grant all on test.* to zn;
3.1.3撤销授权
语法:revoke 权限1,…,权限n on 数据库.* from 用户名@ ip地址;撤销指定用户在指定数据库上的指定权限。撤销例如:revoke create,delete on mydb1.* form user@localhost;表示的意思是撤消user用户在数据库mydb1伤的create、alter权限。
revoke all on test.* from zn;
3.1.4查看权限
查看指定用户的权限:show grants for 用户名@ip地址;
show grants for zn;
3.1.5删除用户
drop user 用户名@ip地址;
3.2DDL(数据定义语言)语法
该语言用来对数据库和表结构进行操作。
对数据库的操作(增删查改):
查看所有数据库:SHOW DATABASES;
使用数据库:USE 数据库名;
创建数据库并指定编码,如不指定编码可能会有乱码问题,比如汉子不能存,当然建表指定也行,但是建库时指定一劳永逸:
CREATE DATABASE test DEFAULT CHARACTER SET utf8
删除数据库:DROP DATABASE 数据库名;
use test;切换数据库
对表结构的操作
创建表:
create table 表名 (
字段名1 类型 (宽度) 约束条件,
字段名2 类型(宽度) 约束条件,
字段名3 类型(宽度) 约束条件,
.......
);
常用数据类型:
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型; char(10)
varchar:可变长度字符串类型;varchar(10)
text:字符串类型;
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
CREATE TABLE student (
id INT(10) primary key,
name VARCHAR (10),
age INT (10) NOT NULL,
gander varchar(2)
);
CREATE TABLE course (
id INT (10) primary key,
name VARCHAR (10) ,
t_id INT (10)
) ;
CREATE TABLE `teacher` (
id INT (10) primary key,
name VARCHAR (10)
);
CREATE TABLE `scores` (
s_id INT primary key,
score INT (10),
c_id INT (10)
) ;
查看当前数据库中所有表:SHOW TABLES;
查看表结构:DESC 表名;
删除表:DROP table 表名;
修改表:修改表有5个操作,但前缀都是一样的:ALTER TABLE 表名...(不重要)
-
修改表之添加列:
ALTER TABLE 表名 add (列名 列类型,...,列名 列类型);ALTER TABLE student add (address VARCHAR(20),hobby VARCHAR(20)) -
修改表之修改列类型:
ALTER TABLE 表名 MODIFY 列名 列的新类型;ALTER TABLE student MODIFY hobby int; -
修改表之列名称列类型一起修改:
ALTER TABLE 表名 CHANGE 原列名 新列名 列名类型;ALTER TABLE student CHANGE hobby newHobby VARCHAR(15); -
修改表之删除列:
ALTER TABLE 表名 DROP 列名;ALTER TABLE student drop newHobby; -
修改表之修改表名:
ALTER TABLE 表名 RENAME TO 新表名ALTER TABLE student RENAME to stu;
3.3DML(数据操作语言)语法(重要)
该语言用来对表记录操作(增、删、改)。
3.2.1插入数据(一次插入就是插入一行)
insert into 表名 (列名1,列名2,列名3) values (列值1,列值2,列值3)
insert into stu (id,name,age,gander) values (2,'李华',19,'男');
说明:
- 在数据库中所有的字符串类型,必须使用单引号。
- (列名1,列名2,列名3)可省略,表示按照表中的顺序插入。但不建议采取这种写法,因为降低了程序的可读性。
3.2.2修改记录
修改某列的全部值:update 表名 set 列名1=列值1(,列名2=列值2);
UPDATE stu set age=22;
UPDATE stu set age=23,name='张楠';
这样就全修改了,所以往往就要加条件。
UPDATE stu set age=23,name='张楠' where id = 1;
修改(某行或者多行记录的)列的指定值:update 表名 set 列名1=列值1 where 列名2=列值2 or 列名3=列值3;
运算符:=、!=、<>、<、>、>=、<=、between...and、in(…)、is null、not、or、and,其中in(...)的用法表示集合。例如:update 表名 set 列名1=列值1 where 列名2=列值2 or 列名2=列值22用in(...)写成update 表名 set 列名1=列值1 where 列名2 in(列值2,列值3)
3.2.3删除数据(删除整行)
delete from 表名 (where 条件);不加where条件时会删除表中所有的记录,所以为了防止这种失误操作,很多数据库往往都会有备份。
3.4DQL(数据查询语言)语法
重点,该语言用来查询记录,不会修改数据库和表结构。

浙公网安备 33010602011771号