返回顶部

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. (列名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(数据查询语言)语法

重点,该语言用来查询记录,不会修改数据库和表结构。

posted @ 2020-09-04 20:01  Shamero  阅读(31)  评论(0)    收藏  举报